Skip to content

Dependency upgrade: migrate shared tooling to ESLint 10 when React ESLint plugins support it #4

Description

@tamarazuk

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions