Skip to content

chore(deps-dev): upgrade ESLint to v10#165

Merged
Wintus merged 6 commits intotrunkfrom
upgrade-ESLint-v10
Feb 18, 2026
Merged

chore(deps-dev): upgrade ESLint to v10#165
Wintus merged 6 commits intotrunkfrom
upgrade-ESLint-v10

Conversation

@Wintus
Copy link
Owner

@Wintus Wintus commented Feb 17, 2026

Summary

  • Merges Dependabot PRs that bumped eslint to ^10.0.0 and @eslint/js to ^10.0.1
  • Bumps typescript-eslint to ^8.56.0 (first release declaring eslint ^10 peer dep support)
  • Adds overrides in package.json to forward the root eslint version to eslint-plugin-react-hooks, working around its outdated peer dep range (^3..^9) until a stable release adds ^10 support

Test plan

  • npm run lint — ESLint 10 lints cleanly
  • npm run build — TypeScript + Vite build passes
  • npm test — all 71 Vitest tests pass

Co-Authored-By: Claude

dependabot bot and others added 6 commits February 16, 2026 13:12
Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.39.2 to 10.0.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/commits/HEAD/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 10.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [eslint](https://github.com/eslint/eslint) from 9.39.2 to 10.0.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](eslint/eslint@v9.39.2...v10.0.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
…n/eslint-10.0.0' and 'remotes/origin/dependabot/npm_and_yarn/eslint/js-10.0.1' into upgrade-ESLint-v10
Temporarily overrides the peer dep range of eslint-plugin-react-hooks so
npm resolves it against the root eslint ^10. Remove once the plugin
publishes a stable release that declares eslint ^10 support.

Co-Authored-By: Claude
@Wintus Wintus self-assigned this Feb 17, 2026
@claude
Copy link

claude bot commented Feb 17, 2026

PR Review: ESLint v10 Upgrade

This is a clean, well-scoped dependency upgrade. Here is my analysis:

What the PR does

  • Bumps eslint from ^9.39.2^10.0.0
  • Bumps @eslint/js from ^9.39.2^10.0.1
  • Bumps typescript-eslint from ^8.55.0^8.56.0 (the first release that adds eslint ^10 to its peer dep range)
  • Adds overrides in package.json to forward the hoisted eslint version to eslint-plugin-react-hooks

Correctness

The overrides workaround is correct and appropriate.
eslint-plugin-react-hooks@^7 declares a peer dep of eslint ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9, which excludes v10. Using npm overrides to forward $eslint is the standard workaround until the plugin ships a release that lists eslint ^10 explicitly. The approach is well-understood and widely used in the ecosystem.

typescript-eslint@8.56.0 is the correct minimum.
It is the first 8.x release declaring eslint ^10 peer support across the full set of packages (parser, plugin, utils, etc.). Choosing this version avoids spurious peer-dep warnings.

The lockfile is consistent. The nested @vitejs/plugin-react sub-tree keeps its own @babel/*@7.29.x copies while the root tree regresses to 7.28.6. This is expected npm deduplication behaviour when the two consumers have incompatible ranges, and does not introduce any runtime risk (Babel is dev-only).


Potential concerns

Node.js engine range tightens significantly.
ESLint 10 (and several of its internal deps – @eslint/config-array, espree, eslint-scope, minimatch@10, etc.) now requires ^20.19.0 || ^22.13.0 || >=24. If your CI or local dev toolchain runs Node 18 or early Node 20 (< 20.19), linting will break. Worth verifying .nvmrc / .node-version / the CI workflow's node-version matches these constraints.

@eslint/js now declares eslint ^10 as an optional peer dep.
This is intentional design in v10 (the package can be used standalone), but it means npm will no longer warn if eslint is missing. Not a bug, just something to be aware of if you ever refactor the config.

lodash.merge and several legacy packages are removed from the ESLint dependency tree. This is good (smaller install, fewer transitive deps), but if any other package in your tree pulls lodash.merge you would want to confirm it still resolves correctly. Given this is a pure devDep tree it is very unlikely to matter in production.


Test plan verification

The PR description confirms:

  • npm run lint passes with ESLint 10
  • npm run build passes
  • All 71 Vitest tests pass

That is the right set of gates for a dev-tooling upgrade. No application source files changed, so no additional test coverage is needed.


Summary

The approach is sound. The overrides workaround is the correct short-term fix and should be removed once eslint-plugin-react-hooks ships ESLint 10 support (tracking: facebook/react#28313). Consider leaving a comment in package.json (or a TODO) to make the temporary nature of the override discoverable.

Verdict: Approve with one minor suggestion – verify the Node.js version in CI satisfies >=20.19.0 before merging.

@Wintus
Copy link
Owner Author

Wintus commented Feb 18, 2026

Verified with Node.js 22

https://github.com/Wintus/Wikipedia-Blame/actions/runs/22105343425/job/63886334710

node: v22.22.0
npm: 10.9.4
yarn: 1.22.22

the Node.js version in CI satisfies >=20.19.0

@Wintus Wintus merged commit b5e910e into trunk Feb 18, 2026
4 checks passed
@Wintus Wintus deleted the upgrade-ESLint-v10 branch February 18, 2026 15:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant