Skip to content

chore(deps): upgrade ESLint v8 → v9 and migrate to flat config#8769

Merged
ccastrotrejo merged 7 commits intomainfrom
dependabot/npm_and_yarn/eslint-9.26.0
Feb 9, 2026
Merged

chore(deps): upgrade ESLint v8 → v9 and migrate to flat config#8769
ccastrotrejo merged 7 commits intomainfrom
dependabot/npm_and_yarn/eslint-9.26.0

Conversation

@dependabot
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Jan 30, 2026

Commit Type

  • feature - New functionality
  • fix - Bug fix
  • refactor - Code restructuring without behavior change
  • perf - Performance improvement
  • docs - Documentation update
  • test - Test-related changes
  • chore - Maintenance/tooling

Risk Level

  • Low - Minor changes, limited scope
  • Medium - Moderate changes, some user impact
  • High - Major changes, significant user/system impact

What & Why

Upgrades ESLint from v8.57.1 to v9.26.0 and migrates the repository's lint configuration from the legacy .eslintrc.* format to ESLint 9's flat config (eslint.config.mjs).

Why: ESLint v8 is end-of-life. v9 introduces the flat config system, improved performance, and modern rule APIs. Several ESLint plugins required companion upgrades to support the new major version. Staying on v8 blocks future rule/plugin updates and leaves the repo on an unsupported toolchain.

Key changes

  1. ESLint core bumpeslint 8.57.1 → 9.26.0 (dependabot initial commit + lockfile)
  2. New flat config — Added eslint.config.mjs using FlatCompat to bridge existing rules while adopting the new config format
  3. Plugin upgrades for ESLint 9 compatibility:
    • eslint-plugin-formatjs → ^4.14.0
    • eslint-plugin-import → ^2.31.0
    • eslint-plugin-react → ^7.37.0
    • eslint-plugin-react-hooks → ^5.2.0
    • Added @eslint/compat ^2.0.0
  4. Removed 12 legacy .eslintrc.json/.cjs files — root, all apps (Standalone, vs-code-designer, vs-code-react, iframe-app), and all libs (chatbot, data-mapper, data-mapper-v2, designer, designer-ui, designer-v2, logic-apps-shared, vscode-extension)
  5. Updated lint scripts — Removed deprecated --ext flag from app-level package.json lint commands
  6. Restored per-app overrides in flat configreact-refresh plugin for apps/Standalone; apps/vs-code-designer/src/test/** added to global ignores
  7. Test fix — Updated TreeActionItem.spec.tsx to use exact string match ('5s') instead of regex for duration badge (formatting change from plugin upgrade)

Impact of Change

  • Users: No runtime or user-facing changes. This is a dev-tooling change only.
  • Developers: Lint config is now unified in a single root eslint.config.mjs. Developers should run pnpm install to pick up new dependencies. IDE ESLint extensions may need a restart. Lint behavior may surface new warnings or fix previously suppressed ones.
  • System: CI lint/build pipelines use the updated ESLint. The lockfile has significant churn due to transitive dependency changes. No production bundle impact.

Test Plan

  • Unit tests added/updated
  • E2E tests added/updated
  • Manual testing completed
  • Tested in: local dev environment

Validation steps:

  1. pnpm install — clean install succeeds
  2. pnpm run build — full build passes
  3. ESLint runs successfully with the new flat config across all packages
  4. Updated TreeActionItem.spec.tsx test to account for duration formatting change from plugin upgrade
  5. CI checks running on the PR

Contributors

  • @dependabot — initial ESLint bump
  • @ccastrotrejo — flat config migration, plugin upgrades, legacy config cleanup, test fix

Screenshots/Videos

N/A — no UI changes

@dependabot dependabot bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Jan 30, 2026
@github-actions
Copy link

github-actions bot commented Jan 30, 2026

🤖 AI PR Validation Report

PR Review Results

Thank you for your submission! Here's detailed feedback on your PR title and body compliance:

PR Title

  • Current: chore(deps): upgrade ESLint v8 → v9 and migrate to flat config
  • Issue: None — the title is clear, follows conventional commits style, and concisely describes the change.
  • Recommendation: Keep as-is.

Commit Type

  • Properly selected (chore).
  • Note: Only one box is checked (chore) which is correct for a tooling/maintenance change.

Risk Level

  • The PR body marks Medium and the PR has the label risk:medium. These match.
  • Assessment: The migration changes lint configs at repo root, removes many per-package legacy config files, updates many lint-related plugins, updates lockfile, and modifies a test to account for lint/plugin formatting changes. These are repo-wide dev-tooling changes with broad developer impact (IDE/CI behavior) but no runtime changes — Medium is appropriate.

What & Why

  • Current: The PR clearly describes what was changed (ESLint -> v9, flat config, plugin bumps, removed legacy configs, small test fix) and why (v8 EOL, flat config modernization, plugin compatibility).
  • Issue: None.
  • Recommendation: None, the section is concise and useful.

Impact of Change

  • The Impact section describes Users/Developers/System impact. It correctly states there are no runtime or user-facing changes and details developer/CI impacts.
  • Recommendation: Add a short note suggesting developers restart their IDEs (ESLint extension) and run pnpm install locally to validate workspace changes (you already mention this in the body; adding it to the Impact section may increase discoverability for reviewers).

Test Plan

  • Assessment: The PR marks "Unit tests added/updated" and "Manual testing completed". The diff includes a deterministic unit test update (TreeActionItem.spec.tsx) where a test expectation was changed from a regex to an exact string to reflect the formatting change — so the claim of unit tests updated is supported.
  • Recommendation: Add one short sentence in the Test Plan explaining why that single unit test change was sufficient (e.g., "only formatting change impacted this test; no other tests required update") and include a note: "CI lint and test steps are expected to run — please ensure green CI before merging." This helps reviewers understand testing scope.

Contributors

  • Contributors are listed (@dependabot and @ccastrotrejo). Good.
  • Recommendation (optional): When dependabot commits are present, keep the human author(s) listed as you have. No change required.

⚠️ Screenshots/Videos

  • Assessment: N/A — no UI changes. This is fine.
  • Recommendation: none.

Additional Notes (actionable)

  • Label presence: There is also a needs-pr-update label on the PR. If you consider the PR final, remove that label to avoid confusion for reviewers (it indicates the PR author/automation expects more changes).
  • Lockfile size: The pnpm lockfile shows heavy churn — expected for major ESLint bump and plugin upgrades. Please ensure CI caches and package resolution are validated in CI (and that contributors run pnpm install locally to confirm no environment-specific surprises).
  • Devtooling-only scope: Although this is a dev-tooling change, it touches many packages and test expectations. Recommend:
    • Ensure CI passes (lint + unit tests) before merging.
    • Add a short note in the PR body or checklist that confirms maintainers have run the repo-level lint across packages or that CI lint step has passed.
  • Unit tests: The PR updated one test; if there are other test failures caused by ESLint/formatting differences that were intentionally not changed, mention them in Test Plan. If no others exist, state that explicitly.

Summary Table

Section Status Recommendation
Title Keep as-is.
Commit Type Correctly set to chore.
Risk Level risk:medium matches body and is appropriate.
What & Why Good; concise.
Impact of Change Good; consider highlighting IDE restart/pnpm install steps.
Test Plan Good; add one sentence explaining why test changes are sufficient and confirm CI run.
Contributors Good.
Screenshots/Videos ⚠️ N/A — OK for dev-tooling changes.

Final message: This PR is ready from a PR-title/body/template perspective. The risk assessment you selected (Medium) aligns with the changes in the diff and my advised risk is also Medium. Please remove the needs-pr-update label if the PR is final, ensure CI (lint + tests) passes, and optionally add a line in the Test Plan clarifying that only one unit test changed due to formatting and that developers should restart ESLint in their IDEs after pulling. Thank you for the thorough PR description!


Last updated: Mon, 09 Feb 2026 16:00:30 GMT

@github-actions
Copy link

📊 Coverage check completed. See workflow run for details.

Bumps [eslint](https://github.com/eslint/eslint) from 8.57.1 to 9.26.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/v9.26.0/CHANGELOG.md)
- [Commits](eslint/eslint@v8.57.1...v9.26.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 9.26.0
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot force-pushed the dependabot/npm_and_yarn/eslint-9.26.0 branch from 63d31cc to 18a429f Compare February 5, 2026 15:13
@github-actions
Copy link

github-actions bot commented Feb 5, 2026

📊 Coverage check completed. See workflow run for details.

@ccastrotrejo ccastrotrejo changed the title chore(deps-dev): bump eslint from 8.57.1 to 9.26.0 chore(deps): upgrade ESLint from v8 to v9 Feb 5, 2026
@ccastrotrejo ccastrotrejo added the risk:low Low risk change with minimal impact label Feb 5, 2026
@github-actions
Copy link

github-actions bot commented Feb 5, 2026

📊 Coverage check completed. See workflow run for details.

- Add eslint.config.mjs (flat config via FlatCompat)
- Upgrade eslint-plugin-formatjs to ^4.14.0 (ESLint 9 support)
- Upgrade eslint-plugin-import to ^2.31.0 (removed API fix)
- Upgrade eslint-plugin-react to ^7.37.0 (removed API fix)
- Upgrade eslint-plugin-react-hooks to ^5.2.0 (ESLint 9 compat)
- Add @eslint/compat ^2.0.0
- Remove 12 .eslintrc.json/.cjs files (now dead code with flat config)
- Remove deprecated --ext flag from app lint scripts
…/ ignore

- Add react-refresh plugin override for apps/Standalone (was in .eslintrc.cjs)
- Add apps/vs-code-designer/src/test/** to global ignores (was in .eslintrc.json)
@github-actions
Copy link

github-actions bot commented Feb 9, 2026

📊 Coverage check completed. See workflow run for details.

1 similar comment
@github-actions
Copy link

github-actions bot commented Feb 9, 2026

📊 Coverage check completed. See workflow run for details.

@ccastrotrejo ccastrotrejo changed the title chore(deps): upgrade ESLint from v8 to v9 chore(deps): upgrade ESLint v8 → v9 and migrate to flat config Feb 9, 2026
@ccastrotrejo ccastrotrejo added risk:medium Medium risk change with potential impact and removed risk:low Low risk change with minimal impact labels Feb 9, 2026
@github-actions
Copy link

github-actions bot commented Feb 9, 2026

📊 Coverage check completed. See workflow run for details.

@github-actions
Copy link

github-actions bot commented Feb 9, 2026

📊 Coverage check completed. See workflow run for details.

1 similar comment
@github-actions
Copy link

github-actions bot commented Feb 9, 2026

📊 Coverage check completed. See workflow run for details.

@ccastrotrejo ccastrotrejo merged commit 035beab into main Feb 9, 2026
17 of 20 checks passed
@ccastrotrejo ccastrotrejo deleted the dependabot/npm_and_yarn/eslint-9.26.0 branch February 9, 2026 18:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code pr-validated risk:medium Medium risk change with potential impact

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant