Skip to content

Commit 41b86a6

Browse files
chore(SDK-118): upgrade ESLint to v9 with flat config
Migrate from legacy .eslintrc.js to eslint.config.js using @react-native/eslint-config/flat, preserving existing rule overrides. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 016561d commit 41b86a6

5 files changed

Lines changed: 467 additions & 114 deletions

File tree

.eslintignore

Lines changed: 0 additions & 3 deletions
This file was deleted.

.eslintrc.js

Lines changed: 0 additions & 52 deletions
This file was deleted.

eslint.config.js

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
const reactNativeConfig = require('@react-native/eslint-config/flat');
2+
const tsEslintPlugin = require('@typescript-eslint/eslint-plugin');
3+
const reactPlugin = require('eslint-plugin-react');
4+
const reactNativePlugin = require('eslint-plugin-react-native');
5+
const tsdoc = require('eslint-plugin-tsdoc');
6+
7+
const typescriptFiles = ['**/*.ts', '**/*.tsx'];
8+
const [, tsEslintRecommended, tsRecommended] =
9+
tsEslintPlugin.configs['flat/recommended'];
10+
11+
module.exports = [
12+
{
13+
ignores: ['coverage/**/*', 'lib/**/*', 'docs/**/*'],
14+
},
15+
...reactNativeConfig,
16+
reactPlugin.configs.flat.recommended,
17+
{
18+
plugins: {
19+
'react-native': reactNativePlugin,
20+
},
21+
rules: reactNativePlugin.configs.all.rules,
22+
},
23+
{
24+
rules: {
25+
'react/react-in-jsx-scope': 'off',
26+
},
27+
},
28+
{
29+
...tsEslintRecommended,
30+
files: typescriptFiles,
31+
},
32+
{
33+
...tsRecommended,
34+
files: typescriptFiles,
35+
},
36+
{
37+
files: typescriptFiles,
38+
plugins: {
39+
tsdoc,
40+
},
41+
languageOptions: {
42+
parserOptions: {
43+
project: true,
44+
tsconfigRootDir: __dirname,
45+
},
46+
},
47+
rules: {
48+
'@typescript-eslint/no-var-requires': [
49+
'error',
50+
{ allow: ['/package\\.json$'] },
51+
],
52+
'@typescript-eslint/no-require-imports': [
53+
'error',
54+
{ allow: ['/package\\.json$'] },
55+
],
56+
'tsdoc/syntax': 'warn',
57+
},
58+
},
59+
{
60+
files: [
61+
'**/*.test.{js,ts,tsx}',
62+
'**/__mocks__/*',
63+
'**/__tests__/*',
64+
],
65+
rules: {
66+
'@typescript-eslint/no-var-requires': 'off',
67+
'@typescript-eslint/no-require-imports': 'off',
68+
},
69+
},
70+
];

package.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,11 @@
8787
"baseline-browser-mapping": "^2.10.29",
8888
"commitlint": "^19.6.1",
8989
"del-cli": "^5.1.0",
90-
"eslint": "^8.51.0",
90+
"eslint": "^9.39.5",
9191
"eslint-config-prettier": "^10.1.8",
92-
"eslint-plugin-jest": "^28.9.0",
92+
"eslint-plugin-jest": "^29.0.1",
9393
"eslint-plugin-prettier": "^5.0.1",
94-
"eslint-plugin-tsdoc": "^0.3.0",
94+
"eslint-plugin-tsdoc": "^0.5.2",
9595
"jest": "^29.7.0",
9696
"prettier": "^3.0.3",
9797
"prettier-eslint": "^16.4.2",
@@ -111,7 +111,8 @@
111111
"typescript": "^5.8.3"
112112
},
113113
"resolutions": {
114-
"@types/react": "^19.2.0"
114+
"@types/react": "^19.2.0",
115+
"eslint-plugin-ft-flow": "^3.0.11"
115116
},
116117
"peerDependencies": {
117118
"@react-navigation/native": "*",

0 commit comments

Comments
 (0)