Update dependency @eslint-react/eslint-plugin to v2 #132

Merged
alexlebens merged 1 commits from renovate/eslint-react-eslint-plugin-2.x into main 2025-09-27 01:42:59 +00:00
Collaborator

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@eslint-react/eslint-plugin (source) ^1.53.1 -> ^2.0.0 age adoption passing confidence

Release Notes

Rel1cx/eslint-react (@​eslint-react/eslint-plugin)

v2.0.0

Compare Source

💥 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:

The following rules now support auto-fix:

  • react-x/no-missing-context-display-name by @​k-yle

The following rules now support suggestion fixes:

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
  • 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: https://github.com/Rel1cx/eslint-react/compare/v1.53.1...v2.0.0


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@eslint-react/eslint-plugin](https://github.com/Rel1cx/eslint-react) ([source](https://github.com/Rel1cx/eslint-react/tree/HEAD/packages/plugins/eslint-plugin)) | [`^1.53.1` -> `^2.0.0`](https://renovatebot.com/diffs/npm/@eslint-react%2feslint-plugin/1.53.1/2.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@eslint-react%2feslint-plugin/2.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@eslint-react%2feslint-plugin/2.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@eslint-react%2feslint-plugin/1.53.1/2.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@eslint-react%2feslint-plugin/1.53.1/2.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>Rel1cx/eslint-react (@&#8203;eslint-react/eslint-plugin)</summary> ### [`v2.0.0`](https://github.com/Rel1cx/eslint-react/blob/HEAD/CHANGELOG.md#v200-2025-09-26) [Compare Source](https://github.com/Rel1cx/eslint-react/compare/v1.53.1...v2.0.0) ##### 💥 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`](https://eslint-react.xyz/docs/rules/jsx-shorthand-boolean) | consolidated | | `react-x/avoid-shorthand-fragment` | [`react-x/jsx-shorthand-fragment`](https://eslint-react.xyz/docs/rules/jsx-shorthand-fragment) | consolidated | | `react-x/ensure-forward-ref-using-ref` | [`react-x/no-useless-forward-ref`](https://eslint-react.xyz/docs/rules/no-useless-forward-ref) | renamed | | `react-x/no-duplicate-props` | [`react-x/jsx-no-duplicate-props`](https://eslint-react.xyz/docs/rules/jsx-no-duplicate-props) | renamed | | `react-x/no-comment-textnodes` | [`react-x/jsx-no-comment-textnodes`](https://eslint-react.xyz/docs/rules/jsx-no-comment-textnodes) | renamed | | `react-x/no-complicated-conditional-rendering` | | discontinued | | `react-x/no-nested-components` | [`react-x/no-nested-component-definitions`](https://eslint-react.xyz/docs/rules/no-nested-component-definitions) | renamed | | `react-x/prefer-react-namespace-import` | [`react-x/prefer-namespace-import`](https://eslint-react.xyz/docs/rules/prefer-namespace-import) | renamed | | `react-x/prefer-shorthand-boolean` | [`react-x/jsx-shorthand-boolean`](https://eslint-react.xyz/docs/rules/jsx-shorthand-boolean) | consolidated | | `react-x/prefer-shorthand-fragment` | [`react-x/jsx-shorthand-fragment`](https://eslint-react.xyz/docs/rules/jsx-shorthand-fragment) | consolidated | | `react-x/use-jsx-vars` | [`react-x/jsx-uses-vars`](https://eslint-react.xyz/docs/rules/jsx-uses-vars) | renamed | | `react-dom/no-children-in-void-dom-elements` | [`react-dom/no-void-elements-with-children`](https://eslint-react.xyz/docs/rules/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`](/docs/rules/hooks-extra-no-direct-set-state-in-use-effect) | consolidated | | `react-hooks-extra/no-unnecessary-use-callback` | [`react-x/no-unnecessary-use-callback`](https://eslint-react.xyz/docs/rules/no-unnecessary-use-callback) | relocated | | `react-hooks-extra/no-unnecessary-use-memo` | [`react-x/no-unnecessary-use-memo`](https://eslint-react.xyz/docs/rules/no-unnecessary-use-memo) | relocated | | `react-hooks-extra/no-unnecessary-use-prefix` | [`react-x/no-unnecessary-use-prefix`](https://eslint-react.xyz/docs/rules/no-unnecessary-use-prefix) | relocated | | `react-hooks-extra/prefer-use-state-lazy-initialization` | [`react-x/prefer-use-state-lazy-initialization`](https://eslint-react.xyz/docs/rules/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 [@&#8203;Rel1cx](https://github.com/Rel1cx) - `react-x/jsx-shorthand-fragment`: Enforces a consistent style for React Fragments by [@&#8203;Rel1cx](https://github.com/Rel1cx) - `react-x/no-forbidden-props`: Disallows specific props on components by [@&#8203;reteps](https://github.com/reteps) - `react-x/no-unnecessary-key`: Reports unnecessary `key` props on elements by [@&#8203;Rel1cx](https://github.com/Rel1cx), [@&#8203;kachkaev](https://github.com/kachkaev) - `react-x/no-unused-props`: Reports unused props in components by [@&#8203;ulrichstark](https://github.com/ulrichstark) - `react-dom/no-string-style-prop`: Disallows string values for the `style` prop by [@&#8203;Rel1cx](https://github.com/Rel1cx), [@&#8203;karlhorky](https://github.com/karlhorky) - `react-dom/prefer-namespace-import`: Enforces using a namespace import for `react-dom` by [@&#8203;Rel1cx](https://github.com/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 [@&#8203;Rel1cx](https://github.com/Rel1cx) - `react-x/no-component-will-receive-props` by [@&#8203;Rel1cx](https://github.com/Rel1cx) - `react-x/no-component-will-update` by [@&#8203;Rel1cx](https://github.com/Rel1cx) - `react-x/no-context-provider` by [@&#8203;Rel1cx](https://github.com/Rel1cx) - `react-x/no-forward-ref` by [@&#8203;Rel1cx](https://github.com/Rel1cx) - `react-x/no-string-refs` by [@&#8203;Rel1cx](https://github.com/Rel1cx) **The following rules now support auto-fix:** - `react-x/no-missing-context-display-name` by [@&#8203;k-yle](https://github.com/k-yle) **The following rules now support suggestion fixes:** - `react-dom/no-missing-button-type` by [@&#8203;Rel1cx](https://github.com/Rel1cx) - `react-dom/no-missing-iframe-sandbox` by [@&#8203;Rel1cx](https://github.com/Rel1cx) - `react-dom/no-unsafe-target-blank` by [@&#8203;Rel1cx](https://github.com/Rel1cx) **New configuration preset added:** - `disable-conflict-eslint-plugin-react`: Disable rules in `eslint-plugin-react` that conflict with rules in our plugins by [@&#8203;reteps](https://github.com/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 [@&#8203;Rel1cx](https://github.com/Rel1cx) - fix(react-web-api/no-leaked-event-listener): fix `useEffect` setup function check to handle `React.useEffect()` calls correctly by [@&#8203;Rel1cx](https://github.com/Rel1cx) - fix(react-naming-convention/filename): fix false positive on well-known filenames like `404.tsx`, `_app.tsx`, `[slug].tsx` by [@&#8203;Rel1cx](https://github.com/Rel1cx) ##### 🪄 Improvements - refactor: simplify React APIs detection logic by [@&#8203;Rel1cx](https://github.com/Rel1cx) - refactor: cleanup utilities and simplify rule implementations by [@&#8203;Rel1cx](https://github.com/Rel1cx) - docs: add comparison table between `eslint-plugin-react` and `eslint-react` rules by [@&#8203;reteps](https://github.com/reteps) - docs: replace `tseslint.config` with `defineConfig` in all examples by [@&#8203;Rel1cx](https://github.com/Rel1cx) - build: migrate build system from `tsup` to `tsdown` for better performance by [@&#8203;Rel1cx](https://github.com/Rel1cx) **Full Changelog**: <https://github.com/Rel1cx/eslint-react/compare/v1.53.1...v2.0.0> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMTYuNiIsInVwZGF0ZWRJblZlciI6IjQxLjExNi42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmN5Il19-->
renovate-bot added the
dependency
label 2025-09-27 00:02:25 +00:00
renovate-bot added 1 commit 2025-09-27 00:02:26 +00:00
Update dependency @eslint-react/eslint-plugin to v2
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 1m5s
3e66dd84bf
renovate-bot added 2 commits 2025-09-27 00:04:14 +00:00
Update dependency @eslint-react/eslint-plugin to v2
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 1m5s
3e66dd84bf
Update dependency @eslint-react/eslint-plugin to v2
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 1m13s
e9f8191973
alexlebens merged commit 53031f7a0f into main 2025-09-27 01:42:59 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: alexlebens/site-profile#132
No description provided.