Repository navigation
Conversation
retyui
marked this pull request as draft
October 6, 2026 21:51
retyui
commented
Oct 7, 2026
| }, | ||
| plugins: { | ||
| // eslint-plugin-react-native relies on context APIs removed in ESLint 10 | ||
| 'react-native': fixupPluginRules(pluginReactNative), |
Contributor
Author
There was a problem hiding this comment.
No official support: Intellicode/eslint-plugin-react-native#333 (comment)
Contributor
Author
retyui
force-pushed
the
feat/v16-eslint-10-flat-only
branch
from
October 7, 2026 08:49
f89a06c to
7ee69e3
Compare
There was a problem hiding this comment.
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
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.
| "@typescript-eslint/eslint-plugin": "^8.71.1", | ||
| "@typescript-eslint/parser": "^8.71.1", | ||
| "eslint-config-prettier": "^10.1.8", | ||
| "eslint-plugin-ft-flow": "^3.0.11", |
| - **TypeScript** now uses `projectService` instead of `project: './tsconfig.json'`. | ||
| - **Babel config is no longer read** when parsing JS files (see [JavaScript and Flow](#javascript-and-flow)). | ||
| - **ESLint 10** is required. Since ESLint 8 and 9 were deprecated. | ||
| - **Node.js 22.18+** is required. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.




Summary
Eslint deprecated v9 and v8, only v10 is supported, see: https://eslint.org/version-support/
@callstack/eslint-configv15 doesn't work with ESLint 10. This PR prepares v16.0.0: ESLint 10 support, flat config only, and all dependencies updated to their latest versions.Breaking changes
Flat config only. Removed the eslintrc entry points and the
*.factory.jshelpers. Each config is now a single flat-config file:node.js,react.js,react-native.js.@callstack/eslint-config(React Native),@callstack/eslint-config/react,@callstack/eslint-config/node.*.flat.jspaths still work as aliases through theexportsmap.ESLint
^10.0.0only. ESLint 8 and 9 are dropped.Node.js
^22.18.0 || >=24.11.0. Babel 8 requires it.eslint-plugin-import→eslint-plugin-import-x. The original has no ESLint 10 support. Rules are renamed fromimport/*toimport-x/*. (Switched toeslint-plugin-import-xdue to ESLint 10 compatibility delays and project maintenance friction in eslint-plugin-import#3227.)eslint-plugin-flowtype→eslint-plugin-ft-flow. The original is unmaintained and tied to Babel 7. Rules are renamed fromflowtype/*toft-flow/*. (Unmaintained for5years ineslint-plugin-flowtype)Babel 8 parser. This is the only
@babel/eslint-parserrelease that supports ESLint 10. The project's Babel config is no longer loaded, because React Native's preset is still on Babel 7. JSX and Flow are enabled throughparserOpts.pluginsinstead.TypeScript uses
parserOptions.projectService: trueinstead ofproject: './tsconfig.json'.Other changes
eslint-plugin-ft-flow,eslint-plugin-reactandeslint-plugin-react-nativecall context APIs that ESLint 10 removed. They are wrapped withfixupPluginRulesfrom@eslint/compat.@eslint/jsis now a direct dependency. Previously it resolved only from the test workspace.Test plan
yarn testpasses on ESLint 10.