Problem
Dependabot's ESLint 10 bumps (#2879 eslint 9.39.4 → 10.7.0, #2875 @eslint/js
9.39.4 → 10.0.1 — both closed) fail at install, not at lint:
npm error code ERESOLVE
npm error While resolving: eslint-plugin-react@7.37.5
eslint-plugin-react@7.37.5 (latest as of 2026-07-22) declares:
peerDependencies.eslint = "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7"
There is no ESLint 10 in that range, so the client dependency tree cannot resolve
with eslint 10 no matter which order the two PRs land in. This is an upstream
blocker, not something a lockfile regeneration or config change fixes.
Decision
Wait for eslint-plugin-react to ship ESLint 10 peer support, then take
eslint and @eslint/js together in a single PR. Do not work around it with
--legacy-peer-deps, an overrides entry, or by dropping
eslint-plugin-react — the plugin carries the React-specific rules the client
lint actually depends on, and forcing a peer mismatch would leave lint passing
against an unsupported combination.
Trigger to pick this up
npm view eslint-plugin-react peerDependencies.eslint includes a ^10 range.
Approach
- Bump
eslint, @eslint/js, and eslint-plugin-react in one commit in
client/package.json (all three, or the resolution fails again).
- Regenerate
client/package-lock.json.
- Run
npm run lint --prefix client. ESLint 10 removes several long-deprecated
context methods and changes some rule defaults, so expect eslint.config.js
to need adjustment.
- The client lint currently reports 0 errors / 4 warnings (unused
eslint-disable directives). Keep it at 0 errors.
Acceptance criteria
Affected files
client/package.json / client/package-lock.json
client/eslint.config.js
Problem
Dependabot's ESLint 10 bumps (#2879
eslint9.39.4 → 10.7.0, #2875@eslint/js9.39.4 → 10.0.1 — both closed) fail at install, not at lint:
eslint-plugin-react@7.37.5(latest as of 2026-07-22) declares:There is no ESLint 10 in that range, so the client dependency tree cannot resolve
with eslint 10 no matter which order the two PRs land in. This is an upstream
blocker, not something a lockfile regeneration or config change fixes.
Decision
Wait for
eslint-plugin-reactto ship ESLint 10 peer support, then takeeslintand@eslint/jstogether in a single PR. Do not work around it with--legacy-peer-deps, anoverridesentry, or by droppingeslint-plugin-react— the plugin carries the React-specific rules the clientlint actually depends on, and forcing a peer mismatch would leave lint passing
against an unsupported combination.
Trigger to pick this up
npm view eslint-plugin-react peerDependencies.eslintincludes a^10range.Approach
eslint,@eslint/js, andeslint-plugin-reactin one commit inclient/package.json(all three, or the resolution fails again).client/package-lock.json.npm run lint --prefix client. ESLint 10 removes several long-deprecatedcontext methods and changes some rule defaults, so expect
eslint.config.jsto need adjustment.
eslint-disabledirectives). Keep it at 0 errors.Acceptance criteria
eslint,@eslint/js,eslint-plugin-reactall on ESLint-10-compatibleversions in
client/package.json, lockfile regenerated.npm ci --prefix clientresolves withoutERESOLVEand without--legacy-peer-deps.npm run lint --prefix clientreports 0 errors.overridesentry added to force the peer range.Affected files
client/package.json/client/package-lock.jsonclient/eslint.config.js