Releases: Rel1cx/eslint-react
Releases · Rel1cx/eslint-react
v2.2.2 (2025-10-14)
What's Changed
🐞 Fixes
- Remove remaining code in the unified plugin used for legacy config compatibility by @Rel1cx in #1277
Full Changelog: v2.2.1...v2.2.2
v2.2.1 (2025-10-13)
What's Changed
🪄 Improvements
- Unified plugin no longer includes the
eslint-plugin-react-debug
plugin to reduce its deps by @Rel1cx in #1276 - Merge
@eslint-react/kit
package into@eslint-react/shared
package to consolidate shared utilities and reduce package fragmentation by @Rel1cx in #1275
Full Changelog: v2.1.1...v2.2.1
v2.1.1 (2025-10-13)
What's Changed
✨ New
- Add
strict
,strict-typescript
, andstrict-type-checked
presets by @Rel1cx - Add
no-deprecated
preset to enable all rules that report deprecated React APIs by @Rel1cx
🐞 Fixes
- Disallow extra properties in rule options by @andreww2012 in #1263
🪄 Improvements
- Move some rules from
recommended
presets tostrict
presets by @Rel1cx, closes #1262react-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
typescript
peer dependency version range from^5.9.2
to^5
by @Rel1cx
New Contributors
- @andreww2012 made their first contribution in #1263
Full Changelog: v2.0.6...v2.1.1
v2.0.6 (2025-10-03)
v2.0.5 (2025-10-02)
What's Changed
🪄 Improvements
- Move error marker from
dangerouslySetInnerHTML
to children indom/no-dangerously-set-innerhtml-with-children
rule by @Rel1cx in #1256 - Update default React version in settings from
19.1.0
to19.2.0
by @Rel1cx in #1259
Full Changelog: v2.0.4...v2.0.5
v2.0.4 (2025-10-01)
v2.0.3 (2025-09-30)
v2.0.2 (2025-09-29)
What's Changed
🪄 Improvements
- Refine migration table from
eslint-plugin-react
, closes #1154 by @outslept in #1242 - Fix dead link for
hooks-extra/no-direct-set-state-in-use-layout-effect
by @tnir in #1245 - Cleanup unused deps, closes #1244 by @Rel1cx, @outslept in #1246
New Contributors
Full Changelog: v2.0.1...v2.0.2
v2.0.1 (2025-09-27)
v2.0.0 (2025-09-26)
What's Changed
💥 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 @Rel1cxreact-x/jsx-shorthand-fragment
: Enforces a consistent style for React Fragments by @Rel1cxreact-x/no-forbidden-props
: Disallows specific props on components by @retepsreact-x/no-unnecessary-key
: Reports unnecessarykey
props on elements by @Rel1cx, @kachkaevreact-x/no-unused-props
: Reports unused props in components by @ulrichstarkreact-dom/no-string-style-prop
: Disallows string values for thestyle
prop by @Rel1cx, @karlhorkyreact-dom/prefer-namespace-import
: Enforces using a namespace import forreact-dom
by @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-update
by @Rel1cxreact-x/no-component-will-receive-props
by @Rel1cxreact-x/no-component-will-update
by @Rel1cxreact-x/no-context-provider
by @Rel1cxreact-x/no-forward-ref
by @Rel1cxreact-x/no-string-refs
by @Rel1cx
The following rules now support auto-fix:
react-x/no-missing-context-display-name
by @k-yle
The following rules now support suggestion fixes:
react-dom/no-missing-button-type
by @Rel1cxreact-dom/no-missing-iframe-sandbox
by @Rel1cxreact-dom/no-unsafe-target-blank
by @Rel1cx
New configuration preset added:
disable-conflict-eslint-plugin-react
: Disable rules ineslint-plugin-react
that 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
useEffect
setup 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].tsx
by @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-react
andeslint-react
rules by @reteps, @outslept - docs: replace
tseslint.config
withdefineConfig
in all examples by @Rel1cx - build: migrate build system from
tsup
totsdown
for better performance by @Rel1cx
Full Changelog: v1.53.1...v2.0.0
Thanks to all contributors who made this release possible!