Skip to content

feat: ESLint 10 support, flat config only - #285

Open
retyui wants to merge 4 commits into
mainfrom
feat/v16-eslint-10-flat-only
Open

retyui wants to merge 4 commits into
mainfrom
feat/v16-eslint-10-flat-only

Conversation

@retyui

@retyui retyui commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Summary

v16.0.0: ESLint 10 support, flat config only, dependencies updated. ESLint 8 and 9 are end-of-life (version support).

Breaking changes

  • Flat config only: @callstack/eslint-config, /react, /node. The v15 *.flat.js paths still work.
  • ESLint ^10.0.0 only.
  • Node.js ^22.13.0 or >=24.3.0.
  • eslint-plugin-import → eslint-plugin-import-x (import/* → import-x/*), because the original doesn't support ESLint 10 (#3227).
  • Flow and Babel removed: .js/.jsx files are parsed by espree.
  • TypeScript uses projectService: true instead of project.

Other changes

  • eslint-plugin-react and eslint-plugin-react-native are wrapped with fixupPluginRules, because they call context APIs that ESLint 10 removed.
  • react-native/no-raw-text is patched so <View>{`hello`}</View> no longer crashes the lint run (#341).
  • @eslint/js is now a direct dependency.
  • One ESLint 10 test workspace; README rewritten with a v15 migration guide.

Known issues

npm prints peer-dependency warnings for eslint-plugin-react, eslint-plugin-react-native and eslint-plugin-react-native-a11y, because none of them lists ESLint 10 yet. Installation still succeeds and the rules work.

Test plan

  • yarn test passes on ESLint 10.

@retyui retyui changed the title feat!: v16 – ESLint 10 support, flat config only feat: ESLint 10 support, flat config only Oct 6, 2026
@retyui
retyui marked this pull request as draft October 6, 2026 21:51
Comment thread react-native.js Outdated
@retyui
retyui force-pushed the feat/v16-eslint-10-flat-only branch from f89a06c to 7ee69e3 Compare October 7, 2026 08:49
@retyui
retyui requested a balanced review from Copilot October 7, 2026 08:51

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Several bundled plugins reject ESLint 10 in their peer ranges, causing strict npm installations to fail.

Review effort: Balanced
Findings: 1 High severity · 1 Low severity

Open (2)
What changed in this PR

Prepares v16 with ESLint 10 support and flat configuration as the sole format.

Changes:

  • Consolidates Node, React, and React Native flat configs.
  • Upgrades ESLint plugins, parsers, and runtime requirements.
  • Replaces legacy test workspaces and updates migration documentation.
File Description
.github/​workflows/​test.yml Tests on Node.js 22.
README.md Documents flat config and migration.
package.json Defines v16 exports and dependencies.
node.js Implements the flat Node.js config.
node.flat.js Removes obsolete flat wrapper.
node.factory.js Removes legacy config factory.
react.js Implements the flat React config.
react.flat.js Removes obsolete flat wrapper.
react.factory.js Removes legacy config factory.
react-native.js Implements the flat React Native config.
react-native.flat.js Removes obsolete flat wrapper.
react-native.factory.js Removes legacy config factory.
test/​package.json Targets ESLint 10 and TypeScript 5.9.
test/​index.js Migrates import rule names.
test/​index.tsx Migrates TypeScript import rule names.
test/​eslint-v8/​.eslintrc.js Removes ESLint 8 configuration.
test/​eslint-v8/​package.json Removes ESLint 8 workspace.
test/​eslint-v9/​package.json Removes ESLint 9 workspace.
test/​eslint-v10/​package.json Adds ESLint 10 workspace.
test/​eslint-v10/​eslint.config.mjs Uses the root package export.
test/​rules/​core.js Exercises core rules.
test/​rules/​flow.js Exercises ft-flow rules.
test/​rules/​imports.js Exercises import-x rules.
test/​rules/​promise.js Exercises promise rules.
test/​rules/​react.js Exercises JavaScript React rules.
test/​rules/​react.tsx Exercises TypeScript React rules.
test/​rules/​react-native.js Exercises React Native rules.
test/​rules/​react-native.tsx Exercises typed React Native rules.
test/​rules/​typescript.ts Exercises TypeScript rules.
test/​rules/​__tests__/​jest.test.js Exercises JavaScript Jest rules.
test/​rules/​__tests__/​jest.test.ts Exercises TypeScript Jest rules.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread package.json Outdated
Comment thread README.md Outdated
@retyui
retyui force-pushed the feat/v16-eslint-10-flat-only branch from 7ee69e3 to f202657 Compare October 20, 2026 09:56
@retyui
retyui requested a balanced review from Copilot October 20, 2026 14:24
@retyui
retyui marked this pull request as ready for review October 20, 2026 14:25

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The template-literal crash workaround needs active regression coverage rather than excluded reproduction fixtures.

1 open issue
2 resolved since last review

Review effort: Balanced

Comment thread react-native.js
@retyui
retyui force-pushed the feat/v16-eslint-10-flat-only branch from 349ea93 to 1aa45f6 Compare October 20, 2026 14:34
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.

2 participants