Summary
Track the remaining shared-tooling work to move this repo from ESLint 9 to ESLint 10 once the React ESLint plugin ecosystem has stable support.
The current shared-tooling branch already:
- replaced
next lint with direct ESLint CLI usage
- moved workspace consumers onto shared flat config
- cleaned up the immediate lint/config issues needed for the current dependency pass
That branch intentionally does not land ESLint 10 yet because the React plugin stack is still the blocker.
Current blockers
In packages/eslint-config, the main blockers are:
eslint-plugin-react@7.37.5
eslint-plugin-react-hooks@5.2.0
Status:
typescript-eslint@8.57.1 already supports ESLint 10
eslint-plugin-react@7.37.5 does not currently have a stable ESLint 10-compatible release available in npm
eslint-plugin-react-hooks stable also does not yet provide a stable ESLint 10-compatible release
Upstream references:
jsx-eslint/eslint-plugin-react#3977 - ESLint v10 compatibility
jsx-eslint/eslint-plugin-react#3979 - ESLint 10 compatibility fix in progress
facebook/react#35758 - eslint-plugin-react-hooks does not support ESLint 10 in peerDependencies
facebook/react#35720 - eslint-plugin-react-hooks ESLint 10 support PR
Scope
Keep this issue limited to shared tooling only:
- root/shared tooling manifests
packages/eslint-config
- workspace package/app ESLint version bumps required for ESLint 10
- minimal lint/config fixes required by the migration
Out of scope:
- broader web-app dependency upgrades
- CMS runtime/framework upgrades
- unrelated dependency refreshes
When to do this
Handle this as the next shared-tooling dependency task after the current branch merges, once the required React ESLint plugin releases are available on stable npm tags.
Acceptance criteria
- Upgrade:
eslint
@eslint/js
@next/eslint-plugin-next
typescript-eslint
eslint-plugin-react
eslint-plugin-react-hooks
- any other required ESLint-related packages
- Keep direct ESLint CLI usage in place (
eslint . --max-warnings 0)
- Ensure workspace consumers remain aligned on the shared config
- Verify with:
pnpm install
pnpm --filter @purrkit/ui lint
pnpm --filter @purrkit/ui check-types
pnpm --filter @purrkit/frontend lint
pnpm --filter @purrkit/frontend check-types
pnpm --filter @purrkit/default-site-template lint
pnpm --filter @purrkit/default-site-template check-types
pnpm --filter @purrkit/cms lint
pnpm --filter @purrkit/cms check-types
Notes
If stable releases are still unavailable and the only path is RC/canary packages, document that explicitly in the PR and decide whether to wait for stable or accept the pre-release risk.
Summary
Track the remaining shared-tooling work to move this repo from ESLint 9 to ESLint 10 once the React ESLint plugin ecosystem has stable support.
The current shared-tooling branch already:
next lintwith direct ESLint CLI usageThat branch intentionally does not land ESLint 10 yet because the React plugin stack is still the blocker.
Current blockers
In
packages/eslint-config, the main blockers are:eslint-plugin-react@7.37.5eslint-plugin-react-hooks@5.2.0Status:
typescript-eslint@8.57.1already supports ESLint 10eslint-plugin-react@7.37.5does not currently have a stable ESLint 10-compatible release available in npmeslint-plugin-react-hooksstable also does not yet provide a stable ESLint 10-compatible releaseUpstream references:
jsx-eslint/eslint-plugin-react#3977- ESLint v10 compatibilityjsx-eslint/eslint-plugin-react#3979- ESLint 10 compatibility fix in progressfacebook/react#35758- eslint-plugin-react-hooks does not support ESLint 10 in peerDependenciesfacebook/react#35720- eslint-plugin-react-hooks ESLint 10 support PRScope
Keep this issue limited to shared tooling only:
packages/eslint-configOut of scope:
When to do this
Handle this as the next shared-tooling dependency task after the current branch merges, once the required React ESLint plugin releases are available on stable npm tags.
Acceptance criteria
eslint@eslint/js@next/eslint-plugin-nexttypescript-eslinteslint-plugin-reacteslint-plugin-react-hookseslint . --max-warnings 0)pnpm installpnpm --filter @purrkit/ui lintpnpm --filter @purrkit/ui check-typespnpm --filter @purrkit/frontend lintpnpm --filter @purrkit/frontend check-typespnpm --filter @purrkit/default-site-template lintpnpm --filter @purrkit/default-site-template check-typespnpm --filter @purrkit/cms lintpnpm --filter @purrkit/cms check-typesNotes
If stable releases are still unavailable and the only path is RC/canary packages, document that explicitly in the PR and decide whether to wait for stable or accept the pre-release risk.