Changelog
v2.2.3 (2025-10-22)
🐞 Fixes
- Re-add missing rule react-x/jsx-key-before-spreadto presets, closes #1290 by @jkbdk in https://github.com/Rel1cx/eslint-react/pull/1291
🪄 Improvements
- Add FAQ entry for plugin selection guidance, closes #1280 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1281
- Simplify "Which one should I use? Unified plugin or individual plugins?" by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1286
- Add strictpreset severity to rules overview, closes #1284 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1285
- Modify display-namerule entry in migration docs by @danielrentz in https://github.com/Rel1cx/eslint-react/pull/1287
New Contributors
- @jkbdk made their first contribution in https://github.com/Rel1cx/eslint-react/pull/1291
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.2.2...v2.2.3
v2.2.2 (2025-10-14)
🐞 Fixes
- Remove remaining code in the unified plugin used for legacy config compatibility by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1277
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.2.1...v2.2.2
v2.2.1 (2025-10-13)
🪄 Improvements
- Unified plugin no longer includes the eslint-plugin-react-debugplugin to reduce its deps by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1276
- Merge @eslint-react/kitpackage into@eslint-react/sharedpackage to consolidate shared utilities and reduce package fragmentation by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1275
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.1.1...v2.2.1
v2.1.1 (2025-10-13)
✨ New
- Add strict,strict-typescript, andstrict-type-checkedpresets by @Rel1cx
- Add no-deprecatedpreset to enable all rules that report deprecated React APIs by @Rel1cx
🐞 Fixes
- Disallow extra properties in rule options by @andreww2012 in https://github.com/Rel1cx/eslint-react/pull/1263
🪄 Improvements
- Move some rules from recommendedpresets tostrictpresets by @Rel1cx, closes #1262- react-x/no-unstable-context-value
- react-x/no-unstable-default-props
- react-x/no-unused-class-component-members
- react-x/no-unused-state
- react-dom/no-missing-button-type
- react-dom/no-missing-iframe-sandbox
- react-dom/no-unsafe-iframe-sandbox
- react-dom/no-unsafe-target-blank
 
- Change typescriptpeer dependency version range from^5.9.2to^5by @Rel1cx
New Contributors
- @andreww2012 made their first contribution in https://github.com/Rel1cx/eslint-react/pull/1263
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.0.6...v2.1.1
v2.0.6 (2025-10-03)
🐞 Fixes
- Fix 'all' preset, closes #1260 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1261
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.0.5...v2.0.6
v2.0.5 (2025-10-02)
🪄 Improvements
- Move error marker from dangerouslySetInnerHTMLto children indom/no-dangerously-set-innerhtml-with-childrenrule by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1256
- Update default React version in settings from 19.1.0to19.2.0by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1259
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.0.4...v2.0.5
v2.0.4 (2025-10-01)
✨ New
- Enables naming-convention/use-staterule in recommended presets by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1252
🐞 Fixes
- Adds hooks-extra/no-direct-set-state-in-use-effectrule to recommended presets, closes #1251 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1252
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.0.3...v2.0.4
v2.0.3 (2025-09-30)
🐞 Fixes
- Fix dom/prefer-namespace-importmissing inreact-domplugin by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1249
- Fix false positive for dom/no-missing-button-typewhen specifying non-trivial expression as value oftypeattribute, closes #1247 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1250
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.0.2...v2.0.3
v2.0.2 (2025-09-29)
🪄 Improvements
- Refine migration table from eslint-plugin-react, closes #1154 by @outslept in https://github.com/Rel1cx/eslint-react/pull/1242
- Fix dead link for hooks-extra/no-direct-set-state-in-use-layout-effectby @tnir in https://github.com/Rel1cx/eslint-react/pull/1245
- Cleanup unused deps, closes #1244 by @Rel1cx, @outslept in https://github.com/Rel1cx/eslint-react/pull/1246
New Contributors
- @outslept made their first contribution in https://github.com/Rel1cx/eslint-react/pull/1242
- @tnir made their first contribution in https://github.com/Rel1cx/eslint-react/pull/1245
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.0.1...v2.0.2
v2.0.1 (2025-09-27)
🐞 Fixes
- Add ts-api-utilsto unified plugin deps, closes #1239 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1240
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.0.0...v2.0.1
v2.0.0 (2025-09-26)
💥 Breaking Changes
Target Environment Updates: Now ESM and ESLint Flat Config Only
- Drop support for CommonJS (CJS) module format, packages are now distributed only as ECMAScript Modules (ESM)
- Drop support for ESLint legacy config system, packages now support only ESLint Flat Config (eslint.config.js)
- Drop support for Node.js 18, minimum required version is now Node.js 20
- Drop support for ESLint 8, minimum required version is now ESLint 9.3.6
- Drop support for TypeScript 4, minimum required version is now TypeScript 5.9.2
Removed Rules
| Rule | Replaced by | Reason | 
|---|---|---|
| react-x/avoid-shorthand-boolean | react-x/jsx-shorthand-boolean | consolidated | 
| react-x/avoid-shorthand-fragment | react-x/jsx-shorthand-fragment | consolidated | 
| react-x/ensure-forward-ref-using-ref | react-x/no-useless-forward-ref | renamed | 
| react-x/no-duplicate-props | react-x/jsx-no-duplicate-props | renamed | 
| react-x/no-comment-textnodes | react-x/jsx-no-comment-textnodes | renamed | 
| react-x/no-complicated-conditional-rendering | discontinued | |
| react-x/no-nested-components | react-x/no-nested-component-definitions | renamed | 
| react-x/prefer-react-namespace-import | react-x/prefer-namespace-import | renamed | 
| react-x/prefer-shorthand-boolean | react-x/jsx-shorthand-boolean | consolidated | 
| react-x/prefer-shorthand-fragment | react-x/jsx-shorthand-fragment | consolidated | 
| react-x/use-jsx-vars | react-x/jsx-uses-vars | renamed | 
| react-dom/no-children-in-void-dom-elements | react-dom/no-void-elements-with-children | renamed | 
| react-hooks-extra/no-direct-set-state-in-use-layout-effect | react-hooks-extra/no-direct-set-state-in-use-effect | consolidated | 
| react-hooks-extra/no-unnecessary-use-callback | react-x/no-unnecessary-use-callback | relocated | 
| react-hooks-extra/no-unnecessary-use-memo | react-x/no-unnecessary-use-memo | relocated | 
| react-hooks-extra/no-unnecessary-use-prefix | react-x/no-unnecessary-use-prefix | relocated | 
| react-hooks-extra/prefer-use-state-lazy-initialization | react-x/prefer-use-state-lazy-initialization | relocated | 
Removed Presets
| Preset | Replaced by | Reason | 
|---|---|---|
| core | x | renamed | 
| off-dom | disable-dom | renamed | 
Removed Settings
| Setting | Replaced by | Reason | 
|---|---|---|
| additionalComponents | discontinued | |
| additionalHooks | discontinued | |
| skipImportCheck | discontinued | 
Rules previously using these settings have been refactored to use improved heuristics and no longer require manual configuration.
✨ New
Added the following new rules:
- react-x/jsx-shorthand-boolean: Enforces a consistent style for boolean attributes by @Rel1cx
- react-x/jsx-shorthand-fragment: Enforces a consistent style for React Fragments by @Rel1cx
- react-x/no-forbidden-props: Disallows specific props on components by @reteps
- react-x/no-unnecessary-key: Reports unnecessary- keyprops on elements by @Rel1cx, @kachkaev
- react-x/no-unused-props: Reports unused props in components by @ulrichstark
- react-dom/no-string-style-prop: Disallows string values for the- styleprop by @Rel1cx, @karlhorky
- react-dom/prefer-namespace-import: Enforces using a namespace import for- react-domby @Rel1cx
Added the following new rule to the recommended-type-checked preset:
- react-x/no-unused-props: Reports unused props in components
The following rules now support Codemod features:
- react-x/no-component-did-updateby @Rel1cx
- react-x/no-component-will-receive-propsby @Rel1cx
- react-x/no-component-will-updateby @Rel1cx
- react-x/no-context-providerby @Rel1cx
- react-x/no-forward-refby @Rel1cx
- react-x/no-string-refsby @Rel1cx
The following rules now support auto-fix:
- react-x/no-missing-context-display-nameby @k-yle
The following rules now support suggestion fixes:
- react-dom/no-missing-button-typeby @Rel1cx
- react-dom/no-missing-iframe-sandboxby @Rel1cx
- react-dom/no-unsafe-target-blankby @Rel1cx
New configuration preset added:
- disable-conflict-eslint-plugin-react: Disable rules in- eslint-plugin-reactthat conflict with rules in our plugins by @reteps
🐞 Fixes
- fix(react-x/no-unnecessary-use-prefix): fix false positive of React Hooks defined within the callback function of vi.mock(...)in Vitest test files by @Rel1cx
- fix(react-web-api/no-leaked-event-listener): fix useEffectsetup function check to handleReact.useEffect()calls correctly by @Rel1cx
- fix(react-naming-convention/filename): fix false positive on well-known filenames like 404.tsx,_app.tsx,[slug].tsxby @Rel1cx
🪄 Improvements
- refactor: simplify React APIs detection logic by @Rel1cx
- refactor: cleanup utilities and simplify rule implementations by @Rel1cx
- docs: add comparison table between eslint-plugin-reactandeslint-reactrules by @reteps, @outslept
- docs: replace tseslint.configwithdefineConfigin all examples by @Rel1cx
- build: migrate build system from tsuptotsdownfor better performance by @Rel1cx
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.53.1...v2.0.0
v1.53.1 (2025-09-11)
🐞 Fixes
- fix: fix useEffect setup function check in web-api/no-leaked-event-listener, closes #1228 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1229
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.53.0...v1.53.1
v1.53.0 (2025-09-04)
✨ New
- feat: update naming convention rules default excepts to include common patterns by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1216
🪄 Improvements
- build: replace tsupwithtsdownby @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1213
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.52.8...v1.53.0
v1.52.9 (2025-08-31)
🐞 Fixes
- fix: issue introduced in version v1.52.7 where the react-hooks-extrarules were not exported, closes #1207 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1208
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.52.8...v1.52.9
v1.52.8 (2025-08-29)
🐞 Fixes
- fix: restore ESLint legacy config compatibility, closes #1203 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1204
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.52.7...v1.52.8
v1.52.7 (2025-08-29)
🐞 Fixes
- fix: add ESLint compatibility types and update plugins exports, closes #1200 by @Rel1cx in https://github.com/Rel1cx/eslint-react/commit/f3083c78f680d486f8894532b7714d1bdf8f9cd7
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.52.6...v1.52.7
v1.52.6 (2025-08-18)
🐞 Fixes
- fix: correct logic in naming-convention/component-namevalidation to continue on valid names, closes #1176 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1177
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.52.5...v1.52.6
v1.52.5 (2025-08-15)
🐞 Fixes
- fix: refactor is-from-reactutility inreact-debug/is-from-reactrule and improvereact-x/no-forward-refrule autofix handling, closes #1172 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1173
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.52.4...v1.52.5
v1.52.4 (2025-08-13)
🐞 Fixes
- fix: improve logic for detecting significant children in JSX elements, closes #1163 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1165
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.52.3...v1.52.4
v1.52.3 (2025-07-13)
🐞 Fixes
- fix: remove bunengine requirement frompackage.jsonfiles, closes #1157 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1158
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.52.2...v1.52.3
v1.52.2 (2025-06-12)
🐞 Fixes
- fix: react-x/no-default-propsshould report only function components, closes #1131 by @Rel1cx in https://github.com/Rel1cx/eslint-react/commit/681b10a7873e4764336a9e7a49dfd33c8bf1fbef
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.52.1...v1.52.2
v1.52.1 (2025-06-11)
✨ New
- feat: add autofix for no-missing-context-display-nameby @k-yle in https://github.com/Rel1cx/eslint-react/pull/1128
New Contributors
- @k-yle made their first contribution in https://github.com/Rel1cx/eslint-react/pull/1128
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.51.3...v1.52.1
v1.51.3 (2025-06-09)
🐞 Fixes
- fix: update messages for react-x/jsx-no-iifeandreact-x/jsx-uses-varsrules by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1127
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.51.2...v1.51.3
v1.51.2 (2025-06-08)
🐞 Fixes
- fix: skip function components without name in react-x/prefer-read-only-propsby @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1125
🪄 Improvements
- docs: update references from 'Language Config' to 'Project Config' across documentation by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1126
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.51.1...v1.51.2
v1.51.1 (2025-06-06)
🐞 Fixes
- fix: fixed jsx detection method not respect SkipEmptyArray hint, closes #1122 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1124
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.51.0...v1.51.1
v1.51.0 (2025-06-03)
✨ New
- feat(react-x): add jsx-no-iiferule, closes #1112 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1113
🐞 Fixes
- fix: fixed no-direct-set-state-in-use-effectdeferred setState calls detection, closes #1117 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1119
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.50.0...v1.51.0
v1.50.0 (2025-05-25)
🐞 Fixes
- fix: polymorphicPropNamenot work withno-void-elements-with-childrenby @huynhducduy in https://github.com/Rel1cx/eslint-react/pull/1108
- fix: use stable version zod, closes #1110
New Contributors
- @huynhducduy made their first contribution in https://github.com/Rel1cx/eslint-react/pull/1108
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.49.0...v1.50.0
v1.49.0 (2025-05-05)
✨ New
- feat: add jsx-key-before-spread, closes #1093, closes #1087 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1105
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.48.5...v1.49.0
v1.48.5 (2025-04-25)
🐞 Fixes
- fix: fixed named export 'JsxEmit' not found, closes #1095 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1096
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.48.4...v1.48.5
v1.48.4 (2025-04-19)
🐞 Fixes
- fix: update fallback react version in settings to "19.1.0"
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.48.3...v1.48.4
v1.48.3 (2025-04-17)
🪄 Improvements
- refactor: improve settings handling by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1080
- docs: add more examples to web-api/no-leaked-event-listenerdocs by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1082
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.48.2...v1.48.3
v1.48.2 (2025-04-16)
🐞 Fixes
- fix: could not find hooks-extra/no-direct-set-state-in-use-effectin pluginreact-hooks-extra, closes #1077 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1078
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.48.1...v1.48.2
v1.48.1 (2025-04-16)
🐞 Fixes
- fix: rewrite react api detection to better align with eslint-plugin-react-hookby @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1074
- fix: use preferred loc in error maker in hooks-extra/no-unnecessary-use-prefixby @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1073
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.47.4...v1.48.0
v1.47.4 (2025-04-15)
🐞 Fixes
- fix: update hooks-extra/no-unnecessary-use-prefixto skip well-known hooks likeuseMDXComponentsby @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1072
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.47.3...v1.47.4
v1.47.3 (2025-04-15)
🐞 Fixes
- fix: fixed potential false negatives in no-leaked-conditional-renderingwhen logical expressions are wrapped by type expressions by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1068
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.47.2...v1.47.3
v1.47.2 (2025-04-14)
🐞 Fixes
- fix: use smaller error marker range to reduce visual noise by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1064
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.47.1...v1.47.2
v1.47.1 (2025-04-14)
🐞 Fixes
- fix: better debug rules message formatting by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1062
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.47.0...v1.47.1
v1.47.0 (2025-04-14)
🪄 Improvements
- refactor: remove @eslint-react/jsxpackage and move functionality to@eslint-react/coreby @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1060
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.46.0...v1.47.0
v1.46.0 (2025-04-13)
✨ New
- feat: use json for diagnostic output format of debug rules by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1058
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.45.3...v1.45.4
v1.45.4 (2025-04-13)
🪄 Improvements
- perf: replace MapwithWeakMapby @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1057
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.45.3...v1.45.4
v1.45.3 (2025-04-12)
🪄 Improvements
- pref: replace picomatch.makeRewithRE.toRegExpfor pattern matching by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1055
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.45.2...v1.45.3
v1.45.2 (2025-04-12)
🪄 Improvements
- docs: add table of contents to the README by @Rel1cx in https://github.com/Rel1cx/eslint-react/commit/b880cb95d2245f7034f47e883d944c9a8b4ecf5f
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.45.1...v1.45.2
v1.45.1 (2025-04-12)
🐞 Fixes
- fix: fixed hooks-extra/no-unnecessary-use-prefixcase sensitivity fails, closes #1053 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1054
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.45.0...v1.45.1
v1.45.0 (2025-04-11)
✨ New
- feat: add react-x/no-misused-capture-owner-stackrule, closes #1049 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1047
- feat: add react-x/no-nested-lazy-component-declarationsrule, closes #1048 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1052
- feat: add react-x/no-nested-lazy-component-declarationsrule to recommended presets by @Rel1cx
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.44.0...v1.45.0
v1.44.0 (2025-04-11)
✨ New
- feat: add JSX fragment factory to error message of react-x/avoid-shorthand-fragmentby @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1051
🪄 Improvements
- perf: replace valibotwith@zod/miniby @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1050
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.43.0...v1.44.0
v1.43.0 (2025-04-10)
✨ New
- feat: add codemod feature to react-x/no-string-refs, closes #1044 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1045
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.42.1...v1.43.0
v1.42.1 (2025-04-08)
✨ New
- feat: rename corepreset toxby @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1042
📝 Changes you should be aware of
The following presets have been renamed:
- coreto- x
- core-legacyto- x-legacy
The old preset names will still be available until the next major update to avoid breaking changes.
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.41.0...v1.42.1
v1.41.0 (2025-04-08)
✨ New
- feat: add react-debug/jsxrule by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1041
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.40.4...1.41.0
v1.40.4 (2025-04-07)
🐞 Fixes
- fix: refactor JSX runtime annotation handling by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1038
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.40.3...v1.40.4
v1.40.3 (2025-04-04)
🐞 Fixes
- fix: fixed no-useless-fragmentfalse positive when using , closes #1035 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1036
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.40.2...v1.40.3
v1.40.2 (2025-04-03)
🐞 Fixes
- fix(react-x): fixed jsx-uses-reactrule forpreservemode by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1031
- fix: use initial release year and consistent username in LICENSE by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1032
🪄 Improvements
- refactor(kit): simplify LanguagePreferenceSchemaby @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1033
- refactor(website): reorganize CSS and improve theme by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1034
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.40.1...v1.40.2
v1.40.1 (2025-04-01)
✨ New
- feat(react-x): enhance jsx-uses-reactrule to support@jsxand@jsxFragannotation comments by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1029
- feat(kit): add LanguagePreferenceby @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1028
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.40.0...v1.40.1
v1.40.0 (2025-04-01)
✨ New
- feat(react-x): add react-x/jsx-uses-reactrule by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1027
- feat: enable react-x/jsx-uses-reactrule in recommended presets by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1027
- feat: enable naming-convention/context-namerule in recommended presets by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1024
- feat(kit): add JsxRuntimemodule by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1025
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.38.4...v1.40.0
v1.38.4 (2025-03-29)
🪄 Improvements
- chore: update default React version to 19.1.0 in documentation and settings by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1023
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.38.3...v1.38.4
v1.38.3 (2025-03-28)
🪄 Improvements
- docs: switch back to the original slogan by @Rel1cx in https://github.com/Rel1cx/eslint-react/commit/e0e4d460c
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.38.2...v1.38.3
v1.38.2 (2025-03-27)
🐞 Fixes
- fix(eslint-plugin): disable prefer-shorthand-*rules inallconfig by @Rel1cx in https://github.com/Rel1cx/eslint-react/commit/a9e6ef9f97f968bb9366af3e5b40138fb4b6b679
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.38.0...v1.38.2
v1.38.0 (2025-03-25)
✨ New
- feat: add react-x/jsx-no-undefrule, closes #1016 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1018
- feat: add hooks-extra/prefer-use-state-lazy-initializationrule to recommended presets by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1019
- docs: add experimental status to rules overview by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1012
🪄 Improvements
- refactor: undeprecate react-x/jsx-uses-varsandreact-x/jsx-no-duplicate-propsrules by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1017
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.37.3...v1.38.0
v1.37.3 (2025-03-22)
🐞 Fixes
- fix: the requested module ts-api-utilsdoes not provide an export namedunionConstituents, closes #1009 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1010
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.37.2...v1.37.3
v1.37.2 (2025-03-22)
🐞 Fixes
- fix: prefer-read-only-propsfalse positive using React types, closes #962 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1008
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.37.1...v1.37.2
v1.37.1 (2025-03-22)
🐞 Fixes
- fix: enhance hooks-extra/prefer-use-state-lazy-initializationto correctly detect other hooks called withinuseState(...)by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1006
🪄 Improvements
- docs: improve rule description and error message by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1003 and https://github.com/Rel1cx/eslint-react/pull/1007
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.37.0...v1.37.1
v1.37.0 (2025-03-20)
🪄 Improvements
- refactor: remove hooks-extra/prefer-use-state-lazy-initializationfrom recommended presets by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1001Based on feedback of this rule, the current implementation produces more false positives than expected, so to ensure the overall quality of the rules in the recommended presets we provide, I'm removing it from the presets for now, and should add it back after we implement a better heuristic for deciding which function calls should be allowed. 
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.36.3...v1.37.0
v1.36.3 (2025-03-20)
🐞 Fixes
- fix: hooks-extra/prefer-use-state-lazy-initializationfalse positive onuseState(use(promise))closes #999 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1000
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.36.2...v1.36.3
v1.36.2 (2025-03-20)
No notable changes have been made in this release.
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.36.1...v1.36.2
v1.36.1 (2025-03-19)
🪄 Improvements
- refactor(naming-convention/use-state): enhance error messaging and docs, closes #980 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/997
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.35.0...v1.36.1
v1.35.0 (2025-03-18)
✨ New
- feat(plugins/dom): add no-renderrule to replaceReactDom.render()withcreateRoot(node).render(), closes #972 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/993
- feat(plugins/dom): add no-hydraterule to replaceReactDom.hydrate()withhydrateRoot(), closes #973 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/995
🪄 Improvements
- refactor: rename hooks-extra/no-useless-custom-hookstohooks-extra/no-unnecessary-use-prefixby @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/996
📝 Changes you should be aware of
The following rules have been renamed:
- react-hooks-extra/no-useless-custom-hooksto- react-hooks-extra/no-unnecessary-use-prefix
- @eslint-react/hooks-extra/no-useless-custom-hooksto- @eslint-react/hooks-extra/no-unnecessary-use-prefix
The old rule names will still be available until the next major update to avoid breaking changes.
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.34.1...v1.35.0
v1.34.1 (2025-03-15)
🐞 Fixes
- fix: false positive in react-x/no-context-provideron symbols namedProviderwhich are imported from third-party libs, closes #991 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/992
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.34.0...v1.34.1
v1.34.0 (2025-03-15)
🪄 Improvements
- refactor: export the create function of each rule by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/989
- refactor(plugins/x): rename no-nested-componentsrule tono-nested-component-definitionsand update related docs by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/990
📝 Changes you should be aware of
The following rules have been renamed:
- react-x/no-nested-componentsto- react-x/no-nested-component-definitions
- @eslint-react/no-nested-componentsto- @eslint-react/no-nested-component-definitions
The old rule names will still be available until the next major update to avoid breaking changes.
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.33.0...v1.34.0
v1.33.0 (2025-03-14)
🐞 Fixes
- fix: update rule severity for no-flush-syncandno-void-elements-with-childrenin recommended presets by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/988
🪄 Improvements
- refactor(plugins/x): rename ensure-forward-ref-using-reftono-useless-forward-refby @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/987
📝 Changes you should be aware of
The following rules have been renamed:
- react-x/ensure-forward-ref-using-refto- react-x/no-useless-forward-ref
- @eslint-react/ensure-forward-ref-using-refto- @eslint-react/no-useless-forward-ref
The old rule names will still be available until the next major update to avoid breaking changes.
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.32.1...v1.33.0
v1.32.1 (2025-03-13)
🐞 Fixes
- fix: fixed no-context-providerreplaces<Provider>with<>, closes #984 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/985
v1.32.0 (2025-03-12)
✨ New
- feat: revert 'feat: add naming-convention/use-state and naming-convention/context-name to recommended presets by @Rel1cx in #956' by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/982
🪄 Improvements
- docs: update eslint configs in examples to use extends by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/978
- docs: update ts configs in examples to use project references by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/979
v1.31.0 (2025-03-07)
✨ New
- feat: enhance regex handling in naming convention rules by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/969
🪄 Improvements
- docs: improve rules descriptions by @Rel1cx
v1.30.2 (2025-03-05)
🐞 Fixes
- fix(plugins/hooks-extra): misidentification of setfunction in IIFE inside of hooks as its inside ofuseEffect,useLayoutEffect, closes #967 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/968
v1.30.1 (2025-03-04)
🐞 Fixes
- fix(utilities/var): fix variable init node retrieval, fixes #964 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/965
🪄 Improvements
- refactor(plugins/hooks-extra): improve code reusability by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/963
New Contributors
- @mrginglymus made their first contribution in https://github.com/Rel1cx/eslint-react/pull/964
v1.30.0 (2025-03-03)
✨ New
- feat: add naming-convention/use-stateandnaming-convention/context-nameto recommended presets by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/956
🐞 Fixes
- fix: correct readonly checks and test cases in prefer-read-only-propsby @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/957
- fix: rework naming-convention/component-namerule to follow eslint-plugin-react-hooks@5.0 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/959Component names now need to start with an uppercase letter instead of a non-lowercase letter. This means _Buttonor_componentare no longer valid.
- fix: naming-convention/use-statefails with multiple words, closes #960 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/961
v1.29.0 (2025-03-01)
✨ New
- feat(plugins/naming-convention): add context-namerule by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/952
🐞 Fixes
- fix: fixed naming-convention/use-stateworks in components only, closes #953 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/954
🪄 Improvements
- docs: use recommended-typescriptfor typescript files by @bluwy in https://github.com/Rel1cx/eslint-react/pull/949
New Contributors
- @bluwy made their first contribution in https://github.com/Rel1cx/eslint-react/pull/949
v1.28.0 (2025-02-26)
✨ New
- feat(plugins/dom): add no-flush-syncrule by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/942
- feat: add skipImportChecksetting by @Rel1cx
🪄 Improvements
- refactor: code optimization by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/945
- refactor: consistent ordering of arguments to context-aware utility functions by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/946
v1.27.0 (2025-02-21)
✨ New
- feat: add presets exports to modular plugins by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/940
- feat: add no-missing-context-display-namerule by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/941
🪄 Improvements
- refactor: improve error messages by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/936 and https://github.com/Rel1cx/eslint-react/pull/937
- refactor: add useEffecttoadditionalHooksby @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/938
- refactor: change severity of no-duplicate-keyrule fromerrortowarnby @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/939
v1.26.2 (2025-02-06)
🐞 Fixes
- fix(plugins/x): enhance no-context-providerrule to include context name in error messages by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/935
v1.26.1 (2025-02-03)
No notable changes have been made in this release.
v1.26.0 (2025-01-31)
✨ New
- feat(plugins/x): add 'no-use-context', closes #930 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/931
v1.25.0 (2025-01-27)
✨ New
- feat(no-useless-fragment): auto fix support, closes #899 by @hyoban in https://github.com/Rel1cx/eslint-react/pull/926
- docs: add setup guide for ts-blank-eslint-parserby @Rel1cx
- docs: add setup example for ts-blank-eslint-parserby @Rel1cx
🐞 Fixes
- fix(no-forward-ref): loose fix by @hyoban in https://github.com/Rel1cx/eslint-react/pull/925
🪄 Improvements
- refactor(website): switch from nextra to fumadocs by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/928
v1.24.1 (2025-01-22)
🐞 Fixes
- fix: fixed invalid rules for disable-debug,disable-dom, anddisable-web-apisconfigs, closes https://github.com/Rel1cx/eslint-react/issues/923 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/924
v1.24.0 (2025-01-21)
🪄 Improvements
- perf: overhaul performance optimizations
v1.23.2 (2025-01-07)
✨ New
- feat(plugins/x): add auto-fix to prefer-shorthand-fragment, closes #898 (#902)
v1.23.1 (2025-01-03)
🐞 Fixes
- fix(plugins/x): fixed false positives in no-unstable-context-valueandno-unstable-default-propsby @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/896
v1.23.0 (2024-12-31)
🪄 Improvements
- refactor: JSX fragments related rules no longer rely on jsxPragmaandjsxPragmaFragsettings to perform their checks by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/893
- refactor: improve applicability of the no-useless-fragmentandprefer-shorthand-fragmentrules
- refactor: deprecate settings["react-x"].jsxPragmaandsettings["react-x"].jsxPragmaFragas they are no longer needed by any rules
- refactor: replace short-unique-idw/uidby @SukkaW in https://github.com/Rel1cx/eslint-react/pull/894
🐞 Fixes
- fix(plugins/hooks-extra): fix callandnewexpression related false positives inno-unnecessary-use-memoandno-unnecessary-use-callbackby @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/895
v1.22.2 (2024-12-30)
🪄 Improvements
- perf: re-implement no-duplicate-keyrule to improve its performance @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/891 and 33ab3cc
- refactor: prevent potential interference from TypeScript's as,satisfies, and non-null assertion operator in various rules
v1.22.1 (2024-12-24)
🪄 Improvements
- docs: add getting started guides for JavaScript, TypeScript, and JavaScript with Babel
- docs: improve code samples in rules docs
- docs: improve eslint.config.jsexamples in README.md, docs and the examples folder
- docs: improve the error message and description of various rules
- refactor(website): better website layout and navigation experience
📝 Changes in examples
The eslint.config.js in the examples now uses tsconfig's includes and excludes as the SSoT glob patterns for ESLint's files and ignores fields.
This approach can fundamentally avoid the errors[1, 2, 3] caused by mismatched config scopes between tsconfig.json and eslint.config.js when using type-checked rules.
v1.22.0 (2024-12-22)
🪄 Improvements
- refactor(plugins/x): rename jsx-use-varstouse-jsx-vars
- refactor(plugins/x): rename jsx-no-duplicate-propstono-duplicate-jsx-props
- refactor(plugins/dom): rename no-children-in-void-dom-elementstono-void-elements-with-children
📝 Changes you should be aware of
The following rules have been renamed:
- jsx-uses-varsto- use-jsx-vars
- jsx-no-duplicate-propsto- no-duplicate-jsx-props
- dom/no-children-in-void-dom-elementsto- dom/no-void-elements-with-children
The new rule names are aligned with the same rules in the biomejs/rules-sources/#eslint-plugin-react (if any) to enhance consistency. The old rule names will still be available until the next major update to avoid breaking changes.
v1.21.0 (2024-12-20)
✨ New
- feat(plugins/hooks-extra): add no-useless-custom-hooksrule by @Rel1cx
🪄 Improvements
- refactor(plugins/hooks-extra): deprecate rule no-redundant-custom-hookin favor ofno-useless-custom-hooks(the previous rule will still be available until the next major update to avoid breaking changes)
📝 Changes in Rule implementation
no-useless-custom-hooks now detects Hook calls within comments and the following code no longer triggers a warning:
// ✅ Good: A Hook that will likely use some other Hooks later
function useAuth() {
  // TODO: Replace with this line when authentication is implemented:
  // return useContext(Auth);
  return TEST_USER;
}v1.20.1 (2024-12-18)
🪄 Improvements
- refactor(shared): replace local-pkgpackage with node built-in API by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/881
v1.20.0 (2024-12-16)
✨ New
- feat(plugins/x): add codemod-autofix to no-component-will-*by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/879
🪄 Improvements
- refactor: use default settings when no settings are provided in settings["react-x"]by @Rel1cx in https://github.com/Rel1cx/eslint-react/commit/40ca3bd1cd7adc44f40841b5b4635e0200b73a54
- docs: update no-context-provider.mdxby @danielrentz in https://github.com/Rel1cx/eslint-react/pull/877
- docs: add 'Min. React' column to rules overview page by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/880
- docs: add features section to rules overview page by @Rel1cx
New Contributors
- @danielrentz made their first contribution in https://github.com/Rel1cx/eslint-react/pull/877
v1.19.0 (2024-12-10)
✨ New
- feat(plugins/x): add no-context-providerrule by @Rel1cx
- feat(plugins/x): add autofix for no-forward-refrule by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/874
- feat(plugins/eslint-plugin): add no-forward-refandno-context-providerto recommended presets by @Rel1cx
🪄 Improvements
- refactor(plugins/eslint-plugin): remove prefer-read-only-propsfromrecommended-type-checkedpreset by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/872
- refactor(plugins/eslint-plugin): hide avoid-shorthand-booleanandavoid-shorthand-fragmentfrom presets and docs by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/876
- Update @typescript-eslint's packages to^8.18.0
v1.18.0 (2024-12-08)
✨ New
- feat(plugins/x): add no-forward-refrule by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/870
🪄 Improvements
- perf(plugins/dom): improve performance of no-void-elements-with-childrenby @Rel1cx
v1.17.3 (2024-12-03)
🐞 Fixes
- fix(plugins/web-api): add 'forEach' support to 'no-leaked-event-listener', closes #842 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/867
- fix(plugins/web-api): add 'for of' support to 'no-leaked-event-listener', closes #842 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/869
- fix(plugins/x): 'no-array-index-key' mistaking 'foo.bar.map' for 'Rea… by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/868
🪄 Improvements
- Update @typescript-eslint's packages to^8.17.0
v1.17.2 (2024-12-01)
🪄 Improvements
- Update eslint's packages to^9.16.0
- Update @typescript-eslint's packages to^8.16.0
- Update ts-api-utilsto^2.0.0
v1.17.1 (2024-11-22)
✨ New
- feat(shared): add version detection logic;
🐞 Fixes
- fix(plugins/x): 'no-leaked-conditional-rendering' should also warn 'anyStringVar' when react version is lower than 18, closes #853 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/864
- fix(plugins/dom): add popover api props to 'no-unknown-property', closes #855 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/865
- fix(plugins/debug): 'is-from-react' use correct settings when calling 'isInitializedFromReact', by @Rel1cx
v1.17.0 (2024-11-21)
✨ New
- feat(plugins/naming-convention): add 'ignoreFilesWithoutCode' option to 'filename-extension'
🐞 Fixes
- refactor(plugins/x): xhtml entities should be allowed inside of 'no-useless-fragment', closes: #850
- fix(plugins/eslint-plugin): unexpected top-level property 'name' in legacy presets, closes #863
- fix(plugins/eslint-plugin): rules list in 'debug' and 'disable-debug' presets
v1.16.2 (2024-11-20)
🐞 Fixes
- fix(plugins/x): 'no-leaked-conditional-rendering' report empty string, closes #853 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/857
🪄 Improvements
- refactor: update the default behavior of import check, closes #858 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/860
v1.16.1 (2024-11-10)
✨ New
- feat(plugins/x): add jsx-no-duplicate-propsby @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/851
🪄 Improvements
- docs: use correct link for prefer-react-namespace-importin rule list by @rakleed in https://github.com/Rel1cx/eslint-react/pull/849
v1.16.0 (2024-11-01)
✨ New
- feat(plugins/react-x): add jsx-uses-vars, closes #834 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/845
- feat(plugins/react-dom): add no-unknown-property, closes #846 by @Rel1cx
- feat: add recommended-typescriptandrecommended-typescript-legacypresets by @Rel1cx
🪄 Improvements
- Update @typescript-eslint's packages to^8.12.2
v1.15.2 (2024-10-29)
🪄 Improvements
- Update @typescript-eslint's packages to^8.12.1
v1.15.1 (2024-10-26)
✨ New
- feat: added code fixer to react-x/avoid-shorthand-booleanandreact-x/prefer-shorthand-fragmentby @Rel1cx
🐞 Fixes
- fix(plugins/react-x): respect semicolon by @hyoban in https://github.com/Rel1cx/eslint-react/pull/841
- fix(utilities/ast): added missing ts asandsatisfiesexpressions handling togetFunctionIdentifierby @Rel1cx , closes https://github.com/Rel1cx/eslint-react/issues/843
v1.15.0 (2024-10-12)
✨ New
- feat: add support for constructors in hooks-extra/prefer-use-state-lazy-initializationby @imjordanxd in https://github.com/Rel1cx/eslint-react/pull/829
- feat: add prefer-react-namespace-import, closes #803 by @imjordanxd in https://github.com/Rel1cx/eslint-react/pull/832
- feat: add support for allowExpressionsinno-useless-fragmentby @imjordanxd in https://github.com/Rel1cx/eslint-react/pull/836
🐞 Fixes
- fix: Fix false positives when 'web-api/no-leaked-event-listener' passes a signal to an intermediate variable, closes #838
🪄 Improvements
- docs: Update hooks-extra-no-direct-set-state-in-use-effect.mdxby @neovov in https://github.com/Rel1cx/eslint-react/pull/831
- docs: use a standard mono-width font for the docs, closes #835 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/837
- Undeprecate hooks-extra-no-direct-set-state-in-use-layout-effectand remove it from recommended presets, closes #839 by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/840
New Contributors
- @imjordanxd made their first contribution in https://github.com/Rel1cx/eslint-react/pull/829
- @neovov made their first contribution in https://github.com/Rel1cx/eslint-react/pull/831
Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.14.3...v1.15.0
v1.14.3 (2024-09-29)
🪄 Improvements
- Update @typescript-eslint's packages to^8.7.0
v1.14.2 (2024-09-20)
🪄 Improvements
- Update @typescript-eslint's packages to^8.6.0
v1.14.1 (2024-09-12)
🐞 Fixes
- Fixed false positives in rule web-api/no-leaked-resize-observer
v1.14.0 (2024-09-10)
🐞 Fixes
- Fixed modular plugins missing default export
- Fixed component name detection when the component name starts with a underscore
🪄 Improvements
- Update @typescript-eslint's packages to^8.5.0
v1.13.1 (2024-09-09)
🐞 Fixes
- Fixed hooks-extra/no-unnecessary-use-callbackandhooks-extra/no-unnecessary-use-memofalse positives when there are references from nested scopes
v1.13.0 (2024-09-04)
✨ New
- Added web-api/no-leaked-resize-observerrule to prevent leakedResizeObserver
🐞 Fixes
- hooks-extra/no-redundant-custom-hookshould allow custom Hooks with empty body
🪄 Improvements
- Rename debug/react-hookstodebug/hook
- Rename hooks-extra/ensure-custom-using-hookstohooks-extra/no-redundant-custom-hook
- Rename hooks-extra/ensure-use-memo-has-non-empty-depstohooks-extra/no-unnecessary-use-memo
- Rename hooks-extra/ensure-use-callback-has-non-empty-depstohooks-extra/no-unnecessary-use-callback
- Upgrade @typescript-eslint's packages to^8.4.0
(The rules that were renamed in this release will still be available until the next major update to avoid breaking changes.)
v1.12.4 (2024-08-31)
✨ New
- Added useLayoutEffectanduseInsertionEffectsupport tohooks-extra/no-direct-set-state-in-use-effect
🪄 Improvements
- Deprecate rule hooks-extra/no-direct-set-state-in-use-layout-effectin favor ofhooks-extra/no-direct-set-state-in-use-effect(the previous rule will still be available until the next major update to avoid breaking changes)
v1.12.3 (2024-08-29)
✨ New
- Added support for detecting event listeners removed by abort signal in rule web-api/no-leaked-event-listener
🐞 Fixes
- Fixed no-duplicate-keyrule false positives when the key is a variable
- Fixed web-api/no-leaked-set-timeoutandweb-api/no-leaked-set-intervalfalse positives when a timer is assigned to a variable declared byletbut not initialized
v1.12.3 (2024-08-29)
✨ New
- Added support for detecting event listeners removed by abort signal in rule web-api/no-leaked-event-listener
🐞 Fixes
- Fixed no-duplicate-keyrule false positives when the key is an variable
- Fixed web-api/no-leaked-set-timeoutandweb-api/no-leaked-set-intervalfalse positives when a timer is assigned to a variable declared byletbut not initialized
🪄 Improvements
- Allow upper case letters in the rule naming-convention/component-namewhen the component name is less than 4 characters, e.g.UI,CSS,SVG
v1.12.2 (2024-08-27)
✨ New
- Added type declarations for react-xsettings to the@typescript-eslint/utils/ts-eslintmodule via theSharedConfigurationSettingsinterface
🪄 Improvements
- Improve the performance of the no-missing-keyandno-duplicate-keyrules
- Upgrade @typescript-eslint's packages to^8.3.0
v1.12.1 (2024-08-22)
✨ New
- Add the options allowAllCaps,allowNamespace,allowLeadingUnderscoretonaming-convention/component-nameand set their default values tofalse
🪄 Improvements
- Normalize the component name in rule naming-convention/component-namebefore checking it against the pattern
v1.12.0 (2024-08-21)
✨ New
- Added hooks-extrarules torecommendedandrecommended-legacypresets
v1.11.0 (2024-08-20)
✨ New
- Added eslint-plugin-react-web-api- A plugin that provides rules for interacting with Web APIs in React applications
- Added web-api/no-leaked-timeoutrule to prevent leakedsetTimeout
- Added web-api/no-leaked-intervalrule to prevent leakedsetInterval
- Added web-api/no-leaked-event-listenerrule to prevent leakedaddEventListener
- Added web-apiandweb-api-legacypresets to enable all rules provided byeslint-plugin-react-web-api
- Added react-web-api/no-leaked-event-listenertorecommendedandrecommended-legacypresets
🪄 Improvements
- Improve performance by skipping unnecessary checks when possible
- Improve dts generation of the @eslint-react/eslint-pluginpackage
- Improve website and documentation
- Upgrade @typescript-eslint's packages to^8.2.0
v1.10.1 (2024-08-13)
🐞 Fixes
- Fixed hooks-extra/prefer-use-state-lazy-initializationfalse positive when using an initializer function
🪄 Improvements
- Improve rule no-implicit-keyerror marker position and range
- Upgrade @typescript-eslint's packages to^8.1.0
- Improve website and documentation
v1.10.0 (2024-08-11)
✨ New
- Added disable-type-checkedanddisable-type-checked-legacypresets to disable all type-checked rules
🪄 Improvements
- Rename off-domandoff-dom-legacypresets todisable-domanddisable-dom-legacy(the old names will still be available until the next major update to avoid breaking changes)
v1.9.1 (2024-08-08)
🐞 Fixes
- Fixed dom/no-missing-iframe-sandboxfalse positive when thesandboxattribute is set tosandbox=""
- Fixed allandall-legacypresets not includinghooks-extrarules
v1.9.0 (2024-08-06)
✨ New
- Add corepreset that includes the most essential rules
🪄 Improvements
- Upgrade @typescript-eslint's packages to8.0.1
v1.8.2 (2024-08-03)
🐞 Fixes
- Fixed legacy presets not being exported correctly in @eslint-react/eslint-plugin
v1.8.1 (2024-08-03)
🪄 Improvements
- Enhance rule hooks-extra/no-direct-set-state-in-use-effectandhooks-extra/no-direct-set-state-in-use-layout-effectto supportsetfunction directly passed touseCallbackanduseMemowithout explicitly calling it
- Improve website and documentation
v1.8.0 (2024-08-02)
🐞 Fixes
- Fixed ESLintReactSettingstype not being exported correctly
- Fixed the setfunction calls that are wrapped in auseMemooruseCallbacklike hook not being detected byhooks-extra/no-direct-set-state-in-use-effectandhooks-extra/no-direct-set-state-in-use-layout-effect
🪄 Improvements
- Upgrade @typescript-eslint's packages to8.0.0
- Improve website and documentation
v1.7.1 (2024-07-31)
🐞 Fixes
- Fixed the spread attributes support for dom related rules
- Fixed the issue where the overridden value was retrieved when there were duplicate attributes on a JSX element
🪄 Improvements
- Rule no-leaked-conditional-renderingnow allows a falsy boolean literal to be used on the left side of the logical expression
- Tweaked the default settings shipped with various presets
- Overall performance improvements
v1.7.0 (2024-07-30)
✨ New
- Add settings["react-x"].polymorphicPropNamesetting to specify the name of the prop that is used to determine the component type
🪄 Improvements
- Dropped the current incomplete lint support for React.createElementto improve performance and subsequent code maintainability
v1.6.0 (2024-07-27)
✨ New
- Add controlledsetting tosettings["react-x"].additionalComponents'attributesobject to set whether it is controlled or not
- Add glob support to settings["react-x"].additionalComponents'namesetting
- Add default settings for react-xsettings to presets
- Undeprecate rule no-implicit-keyand improve its usefulness
- Undeprecate rule no-complicated-conditional-renderingand rename it tono-complex-conditional-rendering(the previous rule will still be available until the next major update to avoid breaking changes)
🐞 Fixes
- no-direct-set-state-in-use-(layout?)-effectshould warn only for the- setfunction
🪄 Improvements
- Remove no-direct-set-state-in-use-(layout?)-effectfrom recommended presets
v1.5.30 (2024-07-22)
🐞 Fixes
- Revert changeas this format is not supported by all package managers@typescript-eslint's packages independenciesto"^7.16.1 || ^rc-v8"
v1.5.29 (2024-07-22)
✨ New
- Add rule no-prop-types
- Add rule no-default-props
- Add experimental settings["react-x"].additionalComponentssettings (currently only theno-unsafe-target-blankrule uses it, but more rules will use it in the future)
🪄 Improvements
- Add rule no-prop-typesto recommended presets
- Add rule no-default-propsto recommended presets
- Remove rule no-useless-fragmentfrom recommended presets
- Optimize performance of rule no-create-ref
- Change @typescript-eslint' packages independenciesto"^7.16.1 || ^rc-v8"
v1.5.28 (2024-07-20)
🐞 Fixes
- Fix false positives and negatives in rule hooks-extra/no-direct-set-state-in-use-effect
- Fix false positives and negatives in rule hooks-extra/no-direct-set-state-in-use-layout-effect
- Fix rule prefer-read-only-propsreports only the first component in a file
🪄 Improvements
- Improve website and documentation
v1.5.27 (2024-07-16)
🐞 Fixes
- Fix rule prefer-read-only-propsthat was accidentally added to the recommended type-checked presets
- Fix false negatives in rule hooks-extra/no-direct-set-state-in-use-effectwhen callsetfunction inside a non-function scope
- Fix false negatives in rule hooks-extra/no-direct-set-state-in-use-layout-effectwhen callsetfunction inside a non-function scope
🪄 Improvements
- Rule no-leaked-conditional-renderingnow supports BigInt literals on the left side of the logical expression
- Rule no-leaked-conditional-renderingnow allows a truthy number literal to be used on the left side of the logical expression
- Optimize bundle size
v1.5.26 (2024-07-15)
✨ New
- Add rule hooks-extra/no-direct-set-state-in-use-effect
- Add rule hooks-extra/no-direct-set-state-in-use-layout-effect
🐞 Fixes
- Fix false positives in rule hooks-extra/ensure-use-memo-has-non-empty-depswhen referencing component block scope
- Fix false positives in rule hooks-extra/no-unnecessary-use-callbackwhen referencing component block scope
🪄 Improvements
- Add rule hooks-extra/no-direct-set-state-in-use-effectto recommended presets
- Add rule hooks-extra/no-direct-set-state-in-use-layout-effectto recommended presets
- Add rule hooks-extra/prefer-use-state-lazy-initializationto recommended presets
v1.5.25 (2024-07-13)
🪄 Improvements
- Optimize bundle size
v1.5.24 (2024-07-11)
🐞 Fixes
- Fix rule prefer-read-only-propsfalse positive when usingObjectPatternin function arguments
🪄 Improvements
- Change typescriptversion inpeerDependenciesto"^4.9.5 || ^5.3.3"
v1.5.23 (2024-07-07)
🐞 Fixes
- Fix rule prefer-read-only-propsfalse negative when usingObjectPatternin function arguments
🪄 Improvements
- Improve website and documentation
v1.5.22 (2024-07-05)
✨ New
- Add rule prefer-read-only-props
🪄 Improvements
- Downgrade @typescript-eslint's packages to v7, due to stability issues with v8
v1.5.21 (2024-07-03)
🐞 Fixes
- Add missing dependencies to @eslint-react/eslint-plugin
- Fix rule no-nested-componentsfalse negative when placing components inside JSX props
🪄 Improvements
- Update @typescript-eslint's packages to v8
- Improve rule no-leaked-conditional-renderingcompatibility with different versions oftypescript-eslint
v1.5.20 (2024-07-02)
🐞 Fixes
- Fix rule prefer-destructuring-assignmentfalse positive when the function looks like a component
🪄 Improvements
- Improve utilities/jsx/is-jsx-valueto better distinguish between normal values and JSX values
- Improve core/component-collectorto better distinguish between normal functions and components
- Prevent potential function component detection related false positives
- Switch to a more appropriate value for DEFAULT_COMPONENT_DETECTION_HINT
v1.5.19 (30 Sun Jun 2024)
🪄 Improvements
- Reduce the number of dependencies by inlining tree-shaking optimized code while bundling
- Deprecate reactOptionsin favor ofreact-xin ESLint Shared Settings
v1.5.18 (28 Fri Jun 2024)
🐞 Fixes
- Fix rule no-useless-fragmentnot respectingjsxPragmasettings
🪄 Improvements
- Update documentation for rule no-useless-fragmentto reflect the actual behavior of the rule
v1.5.17 (2024-06-26)
🪄 Improvements
- Remove rule no-children-propfrom recommended presets
- Improve documentation for rule no-useless-fragment
v1.5.16 (2024-06-17)
🐞 Fixes
- Fix debug rules not exporting correctly in @eslint-react/eslint-plugin
🪄 Improvements
- Remove rule prefer-shorthand-booleanfrom recommended presets
- Remove rule prefer-shorthand-fragmentfrom recommended presets
- Remove rule prefer-destructuring-assignmentfrom recommended presets
v1.5.15 (2024-06-08)
🐞 Fixes
- Remove languageOptions.parserfrom presets
- Remove @typescript-eslint/parserfrom peer dependencies
- Rule no-leaked-conditional-rendering: object should be considered as valid left-hand type
v1.5.14 (2024-05-30)
✨ New
- Add rule avoid-shorthand-boolean
- Add rule avoid-shorthand-fragment
🐞 Fixes
- Fix rule dom/no-missing-button-typefalse positive when usingtypeattribute in a JSX expression
v1.5.13 (2024-05-28)
🐞 Fixes
- Fix components that use getDerivedStateFromErrorshould not be warned by ruleno-class-component
🪄 Improvements
- Update @typescript-eslint's packages to7.11.0
v1.5.12 (2024-05-17)
🐞 Fixes
- Fix ESLint peer dependency range in package.json
🪄 Improvements
- Update @typescript-eslint's packages to7.9.0
- Minor improvements
v1.5.11 (2024-05-08)
✨ New
- Rule no-class-componentrule now allows class components with acomponentDidCatchmethod
- Settings reactOptionsnow supportsimportSourceto specify the import source for React
🗑️ Deprecations
- Deprecate rule no-implicit-keybecause it is stylistic and opinionated
- Deprecate rule no-complicated-conditional-renderingbecause it is stylistic and opinionated
🪄 Improvements
- Refactor React pragma and import name retrieval utils to support custom import source
- Update @typescript-eslint's packages to7.8.0
v1.5.10 (2024-04-28)
🪄 Improvements
- Update reactto18.3.1
- Update @typescript-eslint's packages to7.7.1
- Use a wider range of peerDependencies
v1.5.9 (2024-04-19)
🪄 Improvements
- Optimize error messages of rules
- Update @typescript-eslint's packages to7.7.0
v1.5.8 (2024-04-11)
🪄 Improvements
- Update @typescript-eslint's packages to7.6.0
v1.5.7 (2024-03-28)
🪄 Improvements
- Update @typescript-eslint's packages to7.4.0
v1.5.6 (2024-03-12)
🪄 Improvements
- Update @typescript-eslint's packages to7.2.0
v1.5.5 (2024-02-18)
🐞 Fixes
- Fix rule no-component-will-receive-propsnot working as expected
🪄 Improvements
- Improve error messages and code samples in rule docs
v1.5.4 (2024-02-16)
🐞 Fixes
- Fix rule dom/no-render-return-valuenot renamed in v1.0.0
🪄 Improvements
- Improve code samples in rule docs
- Update effectto2.3.5
- Update @typescript-eslint's packages to7.0.1
v1.5.3 (2024-02-10)
🪄 Improvements
- Improve diagnostic messages
- Remove needless deps from peerDependencies
- Update @typescript-eslint's packages to6.21.0
v1.5.2 (2024-01-31)
🪄 Improvements
- Remove needless deps from peerDependencies
- Update @typescript-eslint's packages to6.20.0
- Update effectto2.2.3
v1.5.2-beta.2 (2024-01-31)
🪄 Improvements
- Update effectto2.2.3
- Remove needless deps from peerDependencies
v1.5.2-beta.0 (2024-01-30)
🪄 Improvements
- Update @typescript-eslint's packages to6.20.0
v1.5.1 (2024-01-29)
✨ New
- Add off-domandoff-dom-legacypresets to disable all DOM related rules
🪄 Improvements
- Reduce dependencies size
v1.5.0 (2024-01-29)
💥 Breaking Changes
- Remove rule max-depth
- Rename rule no-spreading-keytono-implicit-key
- Rename rule no-constructed-context-valuetono-unstable-context-value
- Rename rule no-unstable-nested-componentstono-nested-components
- Switch to new name prefix of rules in @eslint-react/eslint-plugin- Replace jsx/with `` in rule names
- Replace react/with `` in rule names
- Replace react-dom/withdom/in rule names
- Replace react-hooks/withhooks-extra/in rule names
 
- Replace 
- Switch to new settings schema
- Put settings under reactOptionsinstead ofeslintReact
- Replace jsx.pragmawithjsxPragma
- Replace jsx.fragmentwithjsxPragmaFrag
- Replace react.versionwithversion
- Remove jsx.extensions
 
- Put settings under 
v1.0.2 (2024-01-27)
🐞 Fixes
- Fix rule react-dom/no-namespacenot renamed in v1.0.0
- Fix rule react-dom/no-void-elements-with-childrennot renamed in v1.0.0
🪄 Improvements
- Improve rules overview page on website
- Remove jsxandhookspresets from documentation
v1.0.1 (2024-01-27)
🪄 Improvements
- Improve jsxandjsx-legacypresets
- Improve coreandcore-legacypresets
- Improve recommendedandrecommended-legacypresets
- Improve recommended-type-checkedandrecommended-type-checked-legacypresets
v1.0.0 (2024-01-27)
💥 Breaking Changes
All DOM related rules are moved to react-dom namespace
- Rename rule react/no-void-elements-with-childrentoreact-dom/no-void-elements-with-children
- Rename rule react/no-dangerously-set-innerhtml-with-childrentoreact-dom/no-dangerously-set-innerhtml-with-children
- Rename rule react/no-dangerously-set-innerhtmltoreact-dom/no-dangerously-set-innerhtml
- Rename rule react/no-find-dom-nodetoreact-dom/no-find-dom-node
- Rename rule react/no-missing-button-typetoreact-dom/no-missing-button-type
- Rename rule react/no-missing-iframe-sandboxtoreact-dom/no-missing-iframe-sandbox
- Rename rule react/no-namespacetoreact-dom/no-namespace
- Rename rule react/no-render-return-valuetoreact-dom/no-render-return-value
- Rename rule react/no-script-urltoreact-dom/no-script-url
- Rename rule react/no-unsafe-iframe-sandboxtoreact-dom/no-unsafe-iframe-sandbox
- Rename rule react/no-unsafe-target-blanktoreact-dom/no-unsafe-target-blank
✨ New
- Make doman alias ofreact-dompreset
- Make hooksan alias ofreact-hookspreset
- Add preset jsxandjsx-legacy
- Add preset react-domanddom-legacy
- Add preset coreandcore-legacy
- Add preset react-hooksandhooks-legacy
🐞 Fixes
- Fix the lint message for rule react-dom/no-dangerously-set-innerhtml
v1.0.0-beta.3 (2024-01-26)
🐞 Fixes
- Fix the name prefix for react-dom rules
v1.0.0-beta.2 (2024-01-26)
✨ New
- Make doman alias ofreact-dompreset
- Make hooksan alias ofreact-hookspreset
v1.0.0-beta.1 (2024-01-26)
✨ New
- Add preset jsxandjsx-legacy
- Add preset domanddom-legacy
- Add preset coreandcore-legacy
- Add preset hooksandhooks-legacy
v1.0.0-beta.0 (2024-01-26)
💥 Breaking Changes
All DOM related rules are moved to react-dom namespace
- Rename rule react/no-dangerously-set-innerhtmltoreact-dom/no-dangerously-set-innerhtml
- Rename rule react/no-dangerously-set-innerhtml-with-childrentoreact-dom/no-dangerously-set-innerhtml-with-children
- Rename rule react/no-find-dom-nodetoreact-dom/no-find-dom-node
- Rename rule react/no-missing-button-typetoreact-dom/no-missing-button-type
- Rename rule react/no-missing-iframe-sandboxtoreact-dom/no-missing-iframe-sandbox
- Rename rule react/no-script-urltoreact-dom/no-script-url
- Rename rule react/no-unsafe-iframe-sandboxtoreact-dom/no-unsafe-iframe-sandbox
- Rename rule react/no-unsafe-target-blanktoreact-dom/no-unsafe-target-blank
v0.10.12 (2024-01-21)
🪄 Improvements
- Remove unnecessary parserOptionsfields from presets
v0.10.12-beta.0 (2024-01-21)
🪄 Improvements
- Remove unnecessary parserOptionsfields from presets
v0.10.11 (2024-01-20)
✨ New
- Add rule react/no-access-state-in-setstate
🪄 Improvements
- Improve rule react/no-unused-stateto respect the usage ofgetDerivedStateFromProps
- Update @typescript-eslint's packages to6.19.0
v0.10.11-beta.2 (2024-01-19)
✨ New
- Add rule react/no-access-state-in-setstate
v0.10.11-beta.1 (2024-01-16)
🪄 Improvements
- Update @typescript-eslint's packages to6.19.0
v0.10.11-beta.0 (2024-01-15)
🪄 Improvements
- Improve rule react/no-unused-stateto respect the usage ofgetDerivedStateFromProps
v0.10.10 (2024-01-14)
🪄 Improvements
- Improve rule react/no-unused-stateto support checking for more cases
- Improve rule react/no-direct-mutation-stateto support checking for more cases
- Improve rule react/no-unused-class-component-membersto support checking for more cases
v0.10.10-beta.0 (2024-01-14)
🪄 Improvements
- Improve rule react/no-unused-stateto support checking for more cases
- Improve rule react/no-direct-mutation-stateto support checking for more cases
- Improve rule react/no-unused-class-component-membersto support checking for more cases
v0.10.9 (2024-01-12)
🐞 Fixes
- Fix bundle size is larger than expected
v0.10.8 (2024-01-11)
🐞 Fixes
- Fix version format in v0.10.7's package.json
v0.10.7 (2024-01-11)
✨ New
- Add rule react/no-unused-state
v0.10.6 (2024-01-09)
🐞 Fixes
- Fix an issue where react/no-constructed-context-valueandreact/no-unstable-default-propswould report false negatives when using LogicalExpression and ConditionalExpression
v0.10.6-beta.0 (2024-01-08)
🐞 Fixes
- Fix an issue where react/no-constructed-context-valueandreact/no-unstable-default-propswould report false negatives when using LogicalExpression and ConditionalExpression
v0.10.5 (2024-01-08)
✨ New
- Add rule react/no-unused-class-component-members
🪄 Improvements
- Update @typescript-eslint's packages to6.18.0
v0.10.5-beta.0 (2024-01-07)
✨ New
- Add rule react/no-unused-class-component-members
🪄 Improvements
- Update @typescript-eslint's packages to6.18.0
v0.10.4 (2024-01-06)
🪄 Improvements
- Improve rule react/no-unstable-default-propsto support checking for ObjectPatterns within VariableDeclarators that occur on props
- Improve function component detection in rule react/no-unstable-nested-componentsanddebug/function-component
🐞 Fixes
- Fix same kind of error inside a component should not only be reported once in rule react/no-create-refandreact/no-constructed-context-value
- Fix an issue where render functions wrapped in useCallbackwere accidentally detected as function components in rulesreact/no-unstable-nested-componentsanddebug/function-component
v0.10.4-beta.1 (2024-01-06)
🪄 Improvements
- Improve function component detection in rule react/no-unstable-nested-componentsanddebug/function-component
🐞 Fixes
- Fix an issue where render functions wrapped in useCallbackwere accidentally detected as function components in rulesreact/no-unstable-nested-componentsanddebug/function-component
v0.10.4-beta.0 (2024-01-06)
🪄 Improvements
- Improve rule react/no-unstable-default-propsto support checking for ObjectPatterns within VariableDeclarators that occur on props
🐞 Fixes
- Fix same kind of error inside a component should not only be reported once in rule react/no-create-refandreact/no-constructed-context-value
v0.10.3 (2024-01-05)
🪄 Improvements
- Update @typescript-eslint's packages to6.17.0
v0.10.3-beta.0 (2024-01-02)
🪄 Improvements
- Update @typescript-eslint's packages to6.17.0
v0.10.2 (2023-12-30)
✨ New
- Add reactHooks.aliassetting support
v0.10.2-beta.0 (2023-12-30)
✨ New
- Add reactHooks.aliassetting support
v0.10.1 (2023-12-27)
🪄 Improvements
- Add react/no-clone-elementtorecommendedandrecommended-legacypresets
- Improve rule react/no-unstable-nested-components, make its behavior closer to react-hooks/no-nested-components
- Update @typescript-eslint's packages to6.16.0
v0.10.1-beta.1 (2023-12-26)
🪄 Improvements
- Update @typescript-eslint's packages to6.16.0
v0.10.1-beta.0 (2023-12-25)
🪄 Improvements
- Add react/no-clone-elementtorecommendedandrecommended-legacypresets
- Improve rule react/no-unstable-nested-components, make its behavior closer to react-hooks/no-nested-components
v0.10.0 (2023-12-21)
✨ New
- Add rule jsx/max-depth
🪄 Improvements
- Improve recommendedandrecommended-legacypresets
v0.10.0-beta.0 (2023-12-21)
✨ New
- Add rule jsx/max-depth
🪄 Improvements
- Improve recommendedandrecommended-legacypresets
v0.9.8 (2023-12-19)
✨ New
- Add rule react/ensure-forward-ref-using-ref
🪄 Improvements
- Reduce false positives in rule react/no-unstable-nested-components
- Reduce false positives in rule debug/function-component
- Optimize recommendedandrecommended-legacypresets
- Update @typescript-eslint's packages to6.15.0
v0.9.8-beta.2 (2023-12-19)
🪄 Improvements
- Optimize recommendedandrecommended-legacypresets
v0.9.8-beta.1 (2023-12-19)
🪄 Improvements
- Minor improvements
v0.9.8-beta.0 (2023-12-17)
✨ New
- Add rule react/ensure-forward-ref-using-ref
🪄 Improvements
- 
Reduce false positives in rule react/no-unstable-nested-components
- 
Reduce false positives in rule debug/function-component
v0.9.7 (2023-12-17)
💥 Breaking Changes
- Rule named-convention/filename-extensionrenameruleoption toallow
🐞 Fixes
- Fix where functions in <Component footer={() => <div />} />or<Component Footer={() => <div />} />are treated as components
- Fix false positive in rule react/no-unstable-nested-components
- Fix false positive in rule debug/function-component
🪄 Improvements
- 
Rules now support reading JSX extensions from settings.eslintReact.jsx.extensions
- 
Replace ❌ Incorrect and ✅ Correct with Failing and Passing in rule docs 
v0.9.7-beta.2 (2023-12-16)
🐞 Fixes
- Update default rule option in named-convention/filenametoPascalCase
v0.9.7-beta.1 (2023-12-14)
🪄 Improvements
- Minor improvements
v0.9.7-beta.0 (2023-12-14)
💥 Breaking Changes
- Rule named-convention/filename-extensionrenameruleoption toallow
✨ New
- Rule named-convention/filenameaddextensionsoption
- Rule named-convention/filename-extensionaddextensionsoption
v0.9.6 (2023-12-12)
✨ New
- Add rule react-hooks/prefer-use-state-lazy-initialization
🪄 Improvements
- Rule named-convention/component-nameadd bothstringandobjectoptions support
- Rule named-convention/filenameadd bothstringandobjectoptions support
- Rule named-convention/filename-extensionadd bothstringandobjectoptions support
- Rule debug/react-hooksreportshookCalls.lengthinstead ofcost
- Update @typescript-eslint's packages to6.14.0
v0.9.6-beta.5 (2023-12-12)
🪄 Improvements
- Update @typescript-eslint's packages to6.14.0
v0.9.6-beta.4 (2023-12-11)
🪄 Improvements
- Rule named-convention/component-nameadd bothstringandobjectoptions support
- Rule named-convention/filenameadd bothstringandobjectoptions support
- Rule named-convention/filename-extensionadd bothstringandobjectoptions support
v0.9.6-beta.3 (2023-12-11)
🪄 Improvements
- Remove rule react-hooks/prefer-use-state-lazy-initializationfromrecommendedandrecommended-legacypresets
v0.9.6-beta.2 (2023-12-11)
✨ New
- Add rule react-hooks/prefer-use-state-lazy-initialization
🪄 Improvements
- Rule named-convention/filename-extensionswitch options format from object to string
v0.9.6-beta.1 (2023-12-11)
🪄 Improvements
- Rule debug/react-hooksreportshookCalls.lengthinstead ofcost
v0.9.5 (2023-12-11)
🪄 Improvements
- Improve rule jsx/no-leaked-conditional-renderingerror marker position and range
- Improve rule react/no-missing-button-typeerror marker position and range
- Improve rule react/no-missing-iframe-sandboxerror marker position and range
- Improve rule react/no-unsafe-iframe-sandboxerror marker position and range
v0.9.4 (2023-12-08)
🪄 Improvements
- Improve rule docs
v0.9.3 (2023-12-08)
✨ New
- Add rule react/no-direct-mutation-state
- Add rule naming-convention/use-state
🪄 Improvements
- Update recommendedandrecommended-legacypresets
- Improve rules overview page
v0.9.2 (2023-12-06)
✨ New
- Add rule react/no-component-will-update
- Add rule react/no-unsafe-component-will-update
- Add rule react/no-component-will-receive-props
- Add rule react/no-unsafe-component-will-receive-props
- Add rule react/no-set-state-in-component-did-mount
- Add rule react/no-set-state-in-component-did-update
- Add rule react/no-set-state-in-component-will-update
v0.9.1 (2023-12-05)
✨ New
- Add rule react/no-component-will-mount
- Add rule react/no-unsafe-component-will-mount
v0.9.0 (2023-12-01)
💥 Breaking Changes
- @eslint-react/eslint-plugin-jsx- Remove allowExpressionsoption from rulejsx/no-useless-fragment
 
- Remove 
- @eslint-react/jsx- Remove isFragmentWithOnlyTextAndIsNotChild,isFragmentHasLessThanTwoChildren,isFragmentWithSingleExpressionfrom@eslint-react/jsx's API
 
- Remove 
✨ New
- Add rule react/no-redundant-should-component-update
🪄 Improvements
- Update Options of rule jsx/no-useless-fragment
- Optimize bundle size