11# @fluidframework/eslint-config-fluid Changelog
22
3- ## [ 9.0.0] ( https://github.com/microsoft/FluidFramework/releases/tag/eslint-config-fluid_v9.0_0 )
3+ ## [ 10.0.0] ( https://github.com/microsoft/FluidFramework/releases/tag/eslint-config-fluid_v10.0.0 )
4+
5+ ### eslint-plugin-react replaced by @eslint-react/eslint-plugin
6+
7+ The ` eslint-plugin-react ` dependency has been replaced with
8+ [ ` @eslint-react/eslint-plugin ` ] ( https://eslint-react.xyz/ ) v2.13.0. This change is required because
9+ ` eslint-plugin-react ` 7.37.5 is incompatible with ESLint 10 (it calls the removed ` context.getFilename() ` API), and the
10+ upstream fix has been blocked since February 2026.
11+
12+ ` @eslint-react/eslint-plugin ` v2.13.0 supports ESLint 8, 9, and 10, so this version works with the current ESLint 9
13+ setup and will not block the future ESLint 10 upgrade.
14+
15+ ` eslint-plugin-react-hooks ` is unchanged — it already supports ESLint 10 and continues to provide React Compiler rules.
16+
17+ #### Breaking: Rule names changed
18+
19+ All ` react/* ` rules from ` eslint-plugin-react ` are replaced by ` @eslint-react/* ` rules. Any ` eslint-disable ` comments
20+ or per-package rule overrides referencing ` react/* ` rules must be updated to the new names.
21+
22+ Key rule mapping:
23+
24+ | Old rule (` eslint-plugin-react ` ) | New rule (` @eslint-react ` ) |
25+ | ------------------------------------- | ---------------------------------------------------------------------------------------- |
26+ | ` react/jsx-key ` | ` @eslint-react/no-missing-key ` |
27+ | ` react/jsx-no-comment-textnodes ` | ` @eslint-react/jsx-no-comment-textnodes ` |
28+ | ` react/jsx-no-target-blank ` | ` @eslint-react/dom/no-unsafe-target-blank ` |
29+ | ` react/no-children-prop ` | ` @eslint-react/no-children-prop ` |
30+ | ` react/no-danger-with-children ` | ` @eslint-react/dom/no-dangerously-set-innerhtml-with-children ` |
31+ | ` react/no-deprecated ` | Multiple rules (see below) |
32+ | ` react/no-direct-mutation-state ` | ` @eslint-react/no-direct-mutation-state ` |
33+ | ` react/no-find-dom-node ` | ` @eslint-react/dom/no-find-dom-node ` |
34+ | ` react/no-render-return-value ` | ` @eslint-react/dom/no-render-return-value ` |
35+ | ` react/no-string-refs ` | ` @eslint-react/no-string-refs ` |
36+ | ` react/no-unstable-nested-components ` | ` @eslint-react/no-nested-component-definitions ` |
37+ | ` react/jsx-no-useless-fragment ` | ` @eslint-react/no-useless-fragment ` |
38+ | ` react/prop-types ` | ` @eslint-react/no-prop-types ` (bans PropTypes usage; TypeScript handles prop validation) |
39+
40+ The ` react/no-deprecated ` rule is replaced by individual rules for each deprecated API:
41+ ` @eslint-react/no-component-will-mount ` , ` @eslint-react/no-component-will-receive-props ` ,
42+ ` @eslint-react/no-component-will-update ` , ` @eslint-react/no-create-ref ` , ` @eslint-react/dom/no-find-dom-node ` ,
43+ ` @eslint-react/dom/no-hydrate ` , ` @eslint-react/dom/no-render ` , ` @eslint-react/dom/no-render-return-value ` .
44+
45+ #### Breaking: Rules removed (no equivalent)
46+
47+ The following rules have no ` @eslint-react ` equivalent and are no longer enforced:
48+
49+ - ` react/no-unescaped-entities ` — Low priority; JSX transpilation handles this correctly.
50+ - ` react/no-is-mounted ` — Legacy class component pattern; TypeScript discourages this.
51+ - ` react/require-render-return ` — TypeScript enforces return types.
52+
53+ #### New rules enabled
54+
55+ The ` recommended-typescript ` preset enables many rules not previously configured. These are set at ` warn ` severity
56+ unless otherwise noted:
57+
58+ - ` @eslint-react/no-nested-component-definitions ` (` error ` ) — Catches component definitions inside render functions.
59+ - ` @eslint-react/no-array-index-key ` — Warns against using array index as key.
60+ - ` @eslint-react/no-clone-element ` — Warns against ` React.cloneElement ` .
61+ - ` @eslint-react/no-context-provider ` — Warns against deprecated ` Context.Provider ` (React 19).
62+ - ` @eslint-react/no-forward-ref ` — Warns against deprecated ` React.forwardRef ` (React 19).
63+ - ` @eslint-react/web-api/no-leaked-event-listener ` — Catches leaked event listeners.
64+ - ` @eslint-react/web-api/no-leaked-interval ` — Catches leaked ` setInterval ` calls.
65+ - ` @eslint-react/web-api/no-leaked-timeout ` — Catches leaked ` setTimeout ` calls.
66+ - ` @eslint-react/web-api/no-leaked-resize-observer ` — Catches leaked resize observers.
67+ - ` @eslint-react/naming-convention/* ` — React naming convention rules.
68+
69+ #### Settings namespace changed
70+
71+ The ` @eslint-react ` plugin uses ` react-x ` for its settings namespace instead of ` react ` . If you have custom
72+ ` settings.react ` configuration for React version detection, it should be changed to ` settings["react-x"] ` . The
73+ ` recommended-typescript ` preset configures ` react-x.version: "detect" ` automatically.
74+
75+ ## [ 9.0.0] ( https://github.com/microsoft/FluidFramework/releases/tag/eslint-config-fluid_v9.0.0 )
476
577### Native ESLint 9 Flat Config (No FlatCompat)
678
@@ -125,7 +197,7 @@ The package now uses rules from [eslint-plugin-import-x](https://github.com/un-t
125197eslint-plugin-import. Integrating this change will require renaming eslint disable comments and overrides, but the
126198changes are mechanical.
127199
128- ## [ 7.0.0] ( https://github.com/microsoft/FluidFramework/releases/tag/eslint-config-fluid_v7.0_0 )
200+ ## [ 7.0.0] ( https://github.com/microsoft/FluidFramework/releases/tag/eslint-config-fluid_v7.0.0 )
129201
130202### New Rules
131203
@@ -179,14 +251,14 @@ Enables the following new rules as warnings (they will be promoted to errors in
179251- [ @typescript-eslint/no-unsafe-function-type ] ( https://typescript-eslint.io/rules/no-unsafe-function-type/ )
180252- [ @typescript-eslint/no-wrapper-object-types ] ( https://typescript-eslint.io/rules/no-wrapper-object-types/ )
181253
182- ## [ 6.0.1] ( https://github.com/microsoft/FluidFramework/releases/tag/eslint-config-fluid_v6.0_1 )
254+ ## [ 6.0.1] ( https://github.com/microsoft/FluidFramework/releases/tag/eslint-config-fluid_v6.0.1 )
183255
184256Update dependencies on the following packages:
185257
186258- ` @typescript-eslint/eslint-plugin ` (from 7.0.0 to 7.18.0)
187259- ` @typescript-eslint/parser ` (from 7.0.0 to 7.18.0)
188260
189- ## [ 6.0.0] ( https://github.com/microsoft/FluidFramework/releases/tag/eslint-config-fluid_v6.0_0 )
261+ ## [ 6.0.0] ( https://github.com/microsoft/FluidFramework/releases/tag/eslint-config-fluid_v6.0.0 )
190262
191263Adds the following [ @typescript-eslint/no-restricted-imports ] ( https://typescript-eslint.io/rules/no-restricted-imports/ ) rules:
192264
@@ -195,7 +267,7 @@ Adds the following [@typescript-eslint/no-restricted-imports](https://typescript
1952672 . Don't import from parent index file.
196268 - E.g. prefer ` import { Foo } from "./Foo.js"; ` over ` import { Foo } from "./index.js"; `
197269
198- ## [ 5.8.0] ( https://github.com/microsoft/FluidFramework/releases/tag/eslint-config-fluid_v5.8_0 )
270+ ## [ 5.8.0] ( https://github.com/microsoft/FluidFramework/releases/tag/eslint-config-fluid_v5.8.0 )
199271
200272Promotes the following rules from the ` strict ` ruleset to the ` recommended ` ruleset:
201273
0 commit comments