Skip to content

Releases: Rel1cx/eslint-react

v2.2.2 (2025-10-14)

14 Oct 10:33
a9821bd

Choose a tag to compare

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)

13 Oct 13:58
2e96858

Choose a tag to compare

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)

13 Oct 01:02
de7dae9

Choose a tag to compare

What's Changed

✨ New

  • Add strict, strict-typescript, and strict-type-checked presets by @Rel1cx
  • Add no-deprecated preset to enable all rules that report deprecated React APIs by @Rel1cx

🐞 Fixes

🪄 Improvements

  • Move some rules from recommended presets to strict presets 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 typescript peer dependency version range from ^5.9.2 to ^5 by @Rel1cx

New Contributors

Full Changelog: v2.0.6...v2.1.1

v2.0.6 (2025-10-03)

03 Oct 00:23
5365548

Choose a tag to compare

What's Changed

🐞 Fixes

Full Changelog: v2.0.5...v2.0.6

v2.0.5 (2025-10-02)

01 Oct 23:10
7cd34e4

Choose a tag to compare

What's Changed

🪄 Improvements

  • Move error marker from dangerouslySetInnerHTML to children in dom/no-dangerously-set-innerhtml-with-children rule by @Rel1cx in #1256
  • Update default React version in settings from 19.1.0 to 19.2.0 by @Rel1cx in #1259

Full Changelog: v2.0.4...v2.0.5

v2.0.4 (2025-10-01)

30 Sep 19:10
aed842c

Choose a tag to compare

What's Changed

✨ New

  • Enable naming-convention/use-state rule in recommended presets by @Rel1cx in #1252

🐞 Fixes

  • Add hooks-extra/no-direct-set-state-in-use-effect rule to recommended presets, closes #1251 by @Rel1cx in #1252

Full Changelog: v2.0.3...v2.0.4

v2.0.3 (2025-09-30)

30 Sep 04:21
ce45d64

Choose a tag to compare

What's Changed

🐞 Fixes

  • Fix dom/prefer-namespace-import missing in react-dom plugin by @Rel1cx in #1249
  • Fix false positive for dom/no-missing-button-type when specifying non-trivial expression as value of type attribute, closes #1247 by @Rel1cx in #1250

Full Changelog: v2.0.2...v2.0.3

v2.0.2 (2025-09-29)

29 Sep 07:44
0f4b1f4

Choose a tag to compare

What's Changed

🪄 Improvements

New Contributors

Full Changelog: v2.0.1...v2.0.2

v2.0.1 (2025-09-27)

27 Sep 02:00
4038387

Choose a tag to compare

What's Changed

🐞 Fixes

Full Changelog: v2.0.0...v2.0.1

v2.0.0 (2025-09-26)

25 Sep 22:18
bfd755f

Choose a tag to compare

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 @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 key props 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 style prop by @Rel1cx, @karlhorky
  • react-dom/prefer-namespace-import: Enforces using a namespace import for react-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 @Rel1cx
  • react-x/no-component-will-receive-props by @Rel1cx
  • react-x/no-component-will-update by @Rel1cx
  • react-x/no-context-provider by @Rel1cx
  • react-x/no-forward-ref by @Rel1cx
  • react-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 @Rel1cx
  • react-dom/no-missing-iframe-sandbox by @Rel1cx
  • react-dom/no-unsafe-target-blank by @Rel1cx

New configuration preset added:

  • disable-conflict-eslint-plugin-react: Disable rules in eslint-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 handle React.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 and eslint-react rules by @reteps, @outslept
  • docs: replace tseslint.config with defineConfig in all examples by @Rel1cx
  • build: migrate build system from tsup to tsdown for better performance by @Rel1cx

Full Changelog: v1.53.1...v2.0.0

Thanks to all contributors who made this release possible!