logoESLint React

Changelog

v4.0.0-beta.0 (2026-03-15)

💥 Breaking Changes

New eslint-plugin-react-jsx package

A new dedicated plugin for React Flavored JSX rules has been introduced. Several rules have been migrated from eslint-plugin-react-x and eslint-plugin-react-dom to this new package:

Old Rule (react-x/)New Rule (react-jsx/)Change
jsx-key-before-spreadruntime (consolidated)relocated, renamed
jsx-no-comment-textnodesno-comment-textnodesrelocated, renamed
no-children-propno-children-proprelocated
no-useless-fragmentno-useless-fragmentrelocated
Old Rule (react-dom/)New Rule (react-jsx/)Change
no-namespaceruntime (consolidated)relocated

Rule prefix changes in @eslint-react/eslint-plugin

Rules from individual plugins now use a flattened naming convention when accessed through the unified @eslint-react/eslint-plugin package:

  • @eslint-react/<rule> -> @eslint-react/<rule> (no changes)
  • @eslint-react-jsx-<rule> -> @eslint-react-jsx-<rule> (no changes)
  • @eslint-react/rsc/<rule> -> @eslint-react/rsc-<rule>
  • @eslint-react/dom/<rule> -> @eslint-react/dom-<rule>
  • @eslint-react/web-api/<rule> -> @eslint-react/web-api-<rule>
  • @eslint-react/naming-convention/<rule> -> @eslint-react/naming-convention-<rule>
  • @eslint-react/debug/<rule> -> @eslint-react/debug-<rule>

Removed Rules in eslint-plugin-react-jsx

The following rules have been removed from eslint-plugin-react-jsx:

RuleReplaced by
react-x/jsx-dollarreact-kit/<rule-name>
react-x/jsx-shorthand-booleanreact-kit/<rule-name>
react-x/jsx-shorthand-fragmentreact-kit/<rule-name>

✨ New

  • @eslint-react/kit: New plugin to create custom rules with a toolkit that helps identify React patterns.
  • eslint-plugin-react-jsx: New plugin dedicated to React Flavored JSX rules.
  • react-jsx/runtime: New rule that consolidates key-before-spread and no-namespace into a single JSX runtime rule. It disallows namespace tags and prevents deoptimization caused by placing key after spread props in automatic runtime.
  • react-jsx/no-children-prop-with-children: New rule that disallows passing children as a prop when children are also passed as nested content.

🪄 Improvements

  • react-jsx/no-children-prop: Add suggestion-fix feature to move children from prop to element content.

✅ Upgrade Checklist

Use this checklist to upgrade from v3.x to v4.0.0:

Package changes

  • Install the new eslint-plugin-react-jsx package — this is a new dedicated plugin for React Flavored JSX rules.

ESLint configuration

  • Replace react-x/jsx-key-before-spread with react-jsx/runtime in your ESLint config.
  • Replace react-x/jsx-no-comment-textnodes with react-jsx/no-comment-textnodes in your ESLint config.
  • Replace react-x/no-children-prop with react-jsx/no-children-prop in your ESLint config.
  • Replace react-x/no-useless-fragment with react-jsx/no-useless-fragment in your ESLint config.
  • Replace react-dom/no-namespace with react-jsx/runtime in your ESLint config.

Rule prefix changes in @eslint-react/eslint-plugin

If you use the unified @eslint-react/eslint-plugin package, update the following rule prefixes (slash \/ -> dash -):

  • Replace @eslint-react/rsc/<rule> with @eslint-react/rsc-<rule> in your ESLint config.
  • Replace @eslint-react/dom/<rule> with @eslint-react/dom-<rule> in your ESLint config.
  • Replace @eslint-react/web-api/<rule> with @eslint-react/web-api-<rule> in your ESLint config.
  • Replace @eslint-react/naming-convention/<rule> with @eslint-react/naming-convention-<rule> in your ESLint config.
  • Replace @eslint-react/debug/<rule> with @eslint-react/debug-<rule> in your ESLint config.

Review new rules

  • react-jsx/no-children-prop-with-children — new rule that disallows passing children as a prop when children are also passed as nested content. Review your codebase for new reports if using presets.

Removed rules

  • react-x/jsx-dollar
  • react-x/jsx-shorthand-boolean
  • react-x/jsx-shorthand-fragment

If you still need these rules, you can enforce them using the new @eslint-react/kit by creating custom rules that implement the desired checks.

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v3.0.0...v4.0.0-beta.0

v3.0.0 (2026-03-16)

🧹 Chores

  • Version Packages.

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v3.0.0-rc.5...v3.0.0

v3.0.0-rc.5 (2026-03-16)

🐞 Fixes

  • react-web-api/no-leaked-event-listener: Recognize function parameter as valid signal. Closes #1622. (#1623)

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v3.0.0-rc.4...v3.0.0-rc.5

v3.0.0-rc.4 (2026-03-14)

🪄 Improvements

  • Update README badge links.

🧹 Chores

  • Bump fumadocs, eslint-plugin-fast-import, and @vitejs/plugin-react.
  • Pin typescript-eslint to stable version ^8.57.0.

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v3.0.0-rc.3...v3.0.0-rc.4

v3.0.0-rc.3 (2026-03-13)

🐞 Fixes

  • react-x/error-boundaries: Fixed false positive by skipping non-JSX-like values in error boundary detection. (#1615)

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v3.0.0-rc.2...v3.0.0-rc.3

v3.0.0-rc.2 (2026-03-13)

✨ New

  • react-x/prefer-set-state-callback: New rule that enforces using callback form of setState when the new state is computed from the previous state. Closes #1289. (#1610, #1613)
  • react-x/unstable-rules-of-state: New experimental rule that consolidates state-related validations including prefer-set-state-callback. (#1613)

🐞 Fixes

  • react-x/use-memo: Fixed false positive in arrow functions. Fixes #1611. (#1612)

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v3.0.0-rc.1...v3.0.0-rc.2

v3.0.0-rc.1 (2026-03-12)

✨ New

  • unstable-rules-of-props: Implement noDuplicateProps check — the rule now detects duplicate props on JSX elements. Closes #1605. (#1608)

🪄 Improvements

  • Added inlinedDependencies metadata to packages.
  • Extended nested expression traversal to handle more AST node types. (#1609)

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v3.0.0-rc.0...v3.0.0-rc.1

v3.0.0-rc.0 (2026-03-08)

This entry consolidates all changes from v2.13.0 (2026-02-15) through v3.0.0-rc.0 (2026-03-08).

💥 Breaking Changes

Minimum Node.js version raised from 20 to 22

The minimum required Node.js version is now >=22.0.0 (previously >=20.19.0).

Consolidated and removed rules in eslint-plugin-react-x

Old Rule (react-x/)New Rule (react-x/)Change
jsx-no-duplicate-propsremoved
jsx-no-iifeunsupported-syntaxconsolidated
jsx-no-undefremoved
jsx-uses-reactremoved
jsx-uses-varsremoved
no-unnecessary-keyremoved
no-useless-forward-refno-forward-refconsolidated
prefer-read-only-propsimmutabilityconsolidated
prefer-use-state-lazy-initializationuse-stateconsolidated
  • jsx-no-duplicate-props: Removed. LSP and Language Features natively report duplicate JSX props, making this rule redundant.
  • jsx-no-iife: The IIFE-in-JSX check has been merged into the new unsupported-syntax rule, which also covers eval and with statements.
  • jsx-no-undef: ESLint v10.0.0 now tracks JSX references natively, making this rule redundant. The no-undef rule now correctly handles JSX element references.
  • jsx-uses-react and jsx-uses-vars: These rules were only necessary for older versions of React that required the React namespace in scope for JSX. Since React 17, this is no longer required, and ESLint v10.0.0's native variable tracking handles this correctly.
  • no-unnecessary-key: The experimental rule has been removed.
  • no-useless-forward-ref: Consolidated into no-forward-ref. Since React 19, forwardRef is no longer necessary as ref can be passed as a prop. The no-forward-ref rule now covers all forwardRef usage patterns.
  • prefer-read-only-props: The TypeScript-based read-only props enforcement has been consolidated into the new immutability rule, which covers a broader set of immutability violations, including in-place array mutations and direct property assignments on state and props.
  • prefer-use-state-lazy-initialization: Its lazy-initialization checks are now part of the use-state rule and controlled by the new enforceLazyInitialization option (default: true).

Removed previously deprecated rules

RuleDeprecated inPackageReplacement
filename-extension2.13.0eslint-plugin-react-naming-convention
filename2.13.0eslint-plugin-react-naming-convention
no-default-props2.9.3eslint-plugin-react-xno-restricted-syntax
no-forbidden-props2.3.2eslint-plugin-react-xno-restricted-syntax
no-prop-types2.9.3eslint-plugin-react-xno-restricted-syntax
no-string-refs2.9.3eslint-plugin-react-xno-restricted-syntax
no-unnecessary-use-ref2.10.0eslint-plugin-react-x

Removed eslint-plugin-react-hooks-extra package

All rules have been migrated into eslint-plugin-react-x:

Old Rule (react-hooks-extra/)New Rule (react-x/)Change
no-direct-set-state-in-use-effectset-state-in-effectrelocated, renamed

Removed naming-convention/component-name rule (#1557)

Removed unneeded APIs from @eslint-react/core (#1556)

Restructured packages and removed deprecated rules for ESLint v10+ (#1592)

Preset changes

ChangeRulePresets affectedSeverity / Notes
Addedreact-x/component-hook-factoriesrecommended, xerror
Addedreact-x/error-boundariesrecommended, xerror
Addedreact-x/exhaustive-depsrecommended, xwarn
Addedreact-x/immutabilityallerror
Addedreact-x/no-unused-class-component-membersrecommended, xwarn
Addedreact-x/purityrecommended, xwarn
Addedreact-x/refsallerror
Addedreact-x/rules-of-hooksrecommended, xerror
Addedreact-x/set-state-in-effectrecommended, xwarn
Addedreact-x/set-state-in-renderrecommended, xerror
Addedreact-x/unsupported-syntaxrecommended, xerror
Addedreact-x/use-memorecommended, xerror
Movedreact-naming-convention/use-state -> react-x/use-staterecommended, xwarn
Removed@eslint-react/hooks-extra/*recommended, all (in @eslint-react/eslint-plugin)removed
Removedreact-naming-convention/component-nameallremoved
Removedreact-naming-convention/use-stateallmoved to react-x/use-state
Removedreact-x/jsx-no-duplicate-propsrecommended, x, allLSP and Language Features natively report duplicate JSX props
Removedreact-x/jsx-no-iifestrict, disable-experimental, allmerged into unsupported-syntax
Removedreact-x/jsx-no-undefallESLint v10.0.0+ native support
Removedreact-x/jsx-uses-reactrecommended, x, allESLint v10.0.0+ native support
Removedreact-x/jsx-uses-varsrecommended, x, allESLint v10.0.0+ native support
Removedreact-x/no-default-propsrecommended, xremoved
Removedreact-x/no-prop-typesrecommended, xremoved
Removedreact-x/no-string-refsrecommended, xremoved
Removedreact-x/no-unnecessary-keyallremoved
Removedreact-x/no-useless-forward-refrecommended, x, allmerged into no-forward-ref
Removedreact-x/prefer-read-only-propsdisable-experimental, disable-type-checkedconsolidated into immutability
Removedreact-x/prefer-use-state-lazy-initializationrecommended, x, allmerged into use-state

✨ New

Added the following new rules to eslint-plugin-react-x:

  • component-hook-factories: Validates against higher-order functions defining nested components or hooks. Components and hooks should be defined at the module level.
  • error-boundaries: Validates usage of Error Boundaries instead of try/catch for errors in child components. Try/catch blocks can't catch errors during React's rendering process — only Error Boundaries can catch these errors. (#1506)
  • exhaustive-deps: Enforces that React hook dependency arrays contain all reactive values used in the callback. (#1499)
  • immutability (Experimental): Validates against mutating props, state, and other values that are immutable. Detects in-place array mutations (ex: push, sort, splice) and direct property assignments on state variables from useState and props objects. Mirrors the immutability lint rule described in the React docs.
  • no-implicit-children and no-implicit-ref: New rules added in beta.75. (#1594)
  • no-mixing-controlled-and-uncontrolled -> unstable-rules-of-props: Validates against mixing controlled and uncontrolled prop patterns. (#486, #1571)
  • purity (Experimental): Validates that components and hooks are pure by checking that they do not call known-impure functions during render.
  • refs (Experimental): Validates correct usage of refs by checking that ref.current is not read or written during render. See the "pitfalls" section in useRef().
  • rules-of-hooks: Enforces the Rules of Hooks. (#1499)
  • set-state-in-effect: Validates against calling setState synchronously in an effect, which can lead to re-renders that degrade performance.

    Compared to the old no-direct-set-state-in-use-effect rule, the following example from the React Docs demonstrates that setState in an effect is fine if the value comes from a ref, since it cannot be calculated during rendering:

    import { useLayoutEffect, useRef, useState } from "react";
    
    function Tooltip() {
      const ref = useRef(null);
      const [tooltipHeight, setTooltipHeight] = useState(0);
    
      useLayoutEffect(() => {
        const { height } = ref.current.getBoundingClientRect();
        setTooltipHeight(height);
      }, []);
      // ...
    }
  • set-state-in-render (Experimental): Validates against unconditionally setting state during render, which can trigger additional renders and potential infinite render loops. (#1501)
  • unsupported-syntax: Validates against syntax that React Compiler does not support, including eval, with statements, and IIFEs in JSX (previously covered by jsx-no-iife).
  • use-memo: Validates that useMemo is called with a callback that returns a value. useMemo is designed for computing and caching values — without a return value it always returns undefined, which defeats its purpose. This rule also catches useMemo calls whose return value is discarded (not assigned to a variable), which indicates a side-effect misuse that should use useEffect instead.
  • use-state: Enforces correct usage of the useState hook — destructuring, symmetric naming of the value and setter (ex: count / setCount), and lazy initialization of expensive initial state. Moved from eslint-plugin-react-naming-convention into eslint-plugin-react-x. The lazy-initialization behavior (previously prefer-use-state-lazy-initialization) is controlled by the enforceLazyInitialization option (default: true).

Added compilationMode setting:

Added support for the compilationMode setting under settings["react-x"]. This setting informs rules about the React Compiler compilation mode the project is using, allowing rules to understand how components and hooks will be optimized by the compiler.

Added disable-conflict-eslint-plugin-react-hooks configuration to @eslint-react/eslint-plugin for easier migration from eslint-plugin-react-hooks.

Added unstable-rules-of-props support for generic foo/defaultFoo prop pairs (#1580)

🐞 Fixes

  • Enable immutability rule in the all configuration preset
  • Fix MDX documentation formatting issues (#1559)
  • Fix TS type expressions handling in rules, closes #1583 (#1584)
  • Fix no-forward-ref: do not add ref param when type arguments are mismatched (#1561)
  • Fix no-forward-ref: handle callback with no params (#1560)
  • Fix no-unused-props false positive for anonymous callbacks passed to call expressions (#1602)
  • Fix no-unused-props false positive when using Omit on union props type (#1578)
  • Fix no-useless-fragment false positive when passing a ref to a Fragment, closes #1567 (#1568)
  • Fix additional useState names should only match patterns configured in additionalStateHooks (#1601)
  • Fix object type compute on Boolean() like calls, closes #1587 (#1591)
  • Fix the migration guide link 404 in the FAQ, closes #1589 (#1590)
  • Fix traverse type expressions in component id, init path, and wrapper (#1603) ex: components using satisfies were previously not detected:
    // previously missed — now correctly identified as a component
    const App = (() => <div />) satisfies React.FC;

🪄 Improvements

  • Adopted tsl for type checking across the monorepo, improving linting performance (#1532)
  • Apply additionalStateHooks and additionalEffectHooks to more rules (#1597)
  • Bump ESLint to 10.0.3
  • Bump dependencies and update workflows
  • Bump tsdown target to Node 22
  • Changed the following rules from problem to suggestion type for better categorization:
    • react-x/jsx-dollar
    • react-x/jsx-shorthand-boolean
    • react-x/jsx-shorthand-fragment
    • react-x/no-array-index-key
    • react-x/no-children-count
    • react-x/no-children-for-each
    • react-x/no-children-map
    • react-x/no-children-only
    • react-x/no-children-prop
    • react-x/no-children-to-array
    • react-x/no-class-component
    • react-x/no-clone-element
    • react-x/no-create-ref
    • react-x/no-missing-component-display-name
    • react-x/no-missing-context-display-name
    • react-x/no-unnecessary-use-callback
    • react-x/no-unnecessary-use-memo
    • react-x/no-unused-class-component-members
    • react-x/no-unused-props
    • react-x/no-unused-state
    • react-x/no-useless-fragment
    • react-x/prefer-namespace-import
    • react-dom/prefer-namespace-import
  • Converted React 19 migration rules from auto-fix to suggestions (no-context-provider, no-forward-ref, no-use-context) to prevent automatic code modifications that could break existing code
  • Enhanced purity rule with TypeScript type expression support for more accurate detection of impure constructs
  • Improved resolve function with comprehensive definition types (#1576)
  • Improved set-state-in-effect rule to allow setState calls when the new state is derived from refs (aligning with React's recommended patterns) (#1521)
  • Improved detection of React components created via conditional (ternary) expressions in the function-component and no-nested-component-definitions rules (#1503)
  • Inlined getChildScopes, getVariableInitializer and cleaned up var utilities (#1562, #1572)
  • Moved @local/eff to devDependencies across workspace (#1596)
  • Moved disable-conflict-* configs to eslint-plugin-react-x (#1577)
  • Ported eslint-plugin-react-hooks rules (rules-of-hooks and exhaustive-deps) verbatim with code-path analysis for more accurate hook validation (#1535)
  • Refactored core modules to use the defineRuleListener helper for more consistent rule listener definitions (#1517)
  • Refactored refs rule (#1563)
  • Refined JSX attribute value extraction (#1579)
  • Removed React 19 version restriction from context-name rule (#1558)
  • Removed config adapters and fixed plugin default export types, closes #1564 (#1565)
  • Replaced jsx submodule functional APIs with JsxInspector class (#1585)
  • Restructured and consolidated component-detection modules for better maintainability and accuracy
  • Restructured core, var, and ast utility modules for improved code organization (#1520)
  • Standardized rule docs and unified MDX heading structure (#1555)
  • Updated documentation with standardized "See Also" and "Further Reading" sections (#1536, #1537)

✅ Upgrade Checklist

Use this checklist to upgrade from v2.x to v3.0.0:

Node.js

  • Upgrade Node.js to >=22.0.0 (previously >=20.19.0).

Package changes

  • Remove eslint-plugin-react-hooks-extra from your package.json — this package is no longer published.
  • If you were importing eslint-plugin-react-hooks-extra directly, replace it with eslint-plugin-react-x.

ESLint configuration

  • Remove @eslint-react/hooks-extra/* rules from your config — these have been removed from @eslint-react/eslint-plugin.
  • Replace react-hooks-extra/no-direct-set-state-in-use-effect with react-x/set-state-in-effect in your ESLint config.
  • Replace react-naming-convention/use-state (or @eslint-react/naming-convention-use-state) with react-x/use-state (or @eslint-react/use-state) in your ESLint config.
  • Remove references to the following deleted rules (use no-restricted-syntax instead if needed):
    • react-x/no-default-props
    • react-x/no-forbidden-props
    • react-x/no-prop-types
    • react-x/no-string-refs
  • Remove react-x/jsx-no-duplicate-props from your config if present — this rule has been removed since LSP and Language Features natively report duplicate JSX props.
  • Remove react-x/jsx-no-undef from your config if present — this rule has been removed since ESLint v10.0.0 now tracks JSX references natively.
  • Remove react-x/jsx-uses-react and react-x/jsx-uses-vars from your config if present — these rules have been removed since ESLint v10.0.0 now handles JSX variable tracking natively.
  • Remove react-x/no-unnecessary-key from your config if present — this rule has been deleted with no replacement.
  • Remove react-x/no-unnecessary-use-ref from your config if present — this rule has been deleted with no replacement.
  • Remove react-x/jsx-no-iife from your config if present — this rule has been consolidated into react-x/unsupported-syntax.
  • Remove react-x/no-useless-forward-ref from your config if present — this rule has been consolidated into react-x/no-forward-ref.
  • Remove react-x/prefer-read-only-props from your config if present — this rule has been consolidated into react-x/immutability.
  • Remove react-x/prefer-use-state-lazy-initialization from your config if present — this rule has been consolidated into react-x/use-state and its lazy-initialization checks are now controlled by the enforceLazyInitialization option.
  • Remove react-naming-convention/filename and react-naming-convention/filename-extension from your config if present — these rules have been deleted with no replacement.
  • Remove react-naming-convention/component-name from your config if present — this rule has been deleted with no replacement.
  • Be aware that react-x/no-context-provider, react-x/no-forward-ref, and react-x/no-use-context no longer auto-fix via --fix — their fixes have been converted to suggestions to prevent automatic code modifications that could break existing code. If you relied on eslint --fix for these rules, you will now need to apply fixes manually.

Settings

  • If your project uses React Compiler, consider adding the compilationMode setting under settings["react-x"] to inform rules about the compilation mode your project is using (possible values: "infer", "annotation", "syntax", "all").

Review new rules enabled in presets

If you use the recommended, x, or all preset, the following rules are now included automatically. Review your codebase for new reports:

  • react-x/component-hook-factories (error) — catches factory functions that define components or hooks inside them instead of at the module level.
  • react-x/error-boundaries (error) — catches try/catch blocks wrapping JSX or use hook calls where Error Boundaries should be used instead.
  • react-x/exhaustive-deps (warn) — enforces that hook dependency arrays contain all reactive values.
  • react-x/immutability (error, all only) — validates against mutating props, state, and other immutable values, including in-place array mutations and direct property assignments.
  • react-x/no-unused-class-component-members (warn) — catches unused class component methods and properties.
  • react-x/purity (warn) — validates that components and hooks are pure by checking that they do not call known-impure functions during render.
  • react-x/refs (error, all only) — validates correct usage of refs by checking that ref.current is not read or written during render.
  • react-x/rules-of-hooks (error) — enforces the Rules of Hooks.
  • react-x/set-state-in-effect (warn) — catches synchronous setState calls inside effects.
  • react-x/set-state-in-render (error) — catches unconditional setState calls during render that can cause infinite loops.
  • react-x/unsupported-syntax (error) — catches usage of syntax that React Compiler does not support, including eval, with statements, and IIFEs in JSX.
  • react-x/use-memo (error) — catches useMemo calls where the callback has no return value or where the useMemo return value is discarded.
  • react-x/use-state (warn) — Enforces correct usage of useState, including destructuring, symmetric naming of the value and setter (previously react-naming-convention/use-state), and wrapping expensive initializers in a lazy initializer function (previously prefer-use-state-lazy-initialization).

📘 Migration Guide: From eslint-plugin-react-hooks

See the complete migration guide for more details.

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.13.0...v3.0.0-rc.0

v2.13.0 (2026-02-15)

✨ New

🐞 Fixes

📝 Changes you should be aware of

  1. The naming-convention/filename rule has been deprecated and will be removed in the next major version.
  2. The naming-convention/filename-extension rule has been deprecated and will be removed in the next major version.

Modern React frameworks each come with their own naming conventions that can differ or even conflict. A single predefined, framework-agnostic filename or filename extension rule no longer matches real-world usage. Please follow the official naming conventions of the specific React framework you are using.

For example, here are some references for popular frameworks:

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.12.4...v2.13.0

v2.12.4 (2026-02-11)

🐞 Fixes

🪄 Improvements

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.12.2...v2.12.4

v2.12.2 (2026-02-08)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.12.1...v2.12.2

v2.12.1 (2026-02-07)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.12.0...v2.12.1

v2.12.0 (2026-02-07)

🪄 Improvements

📝 Changes you should be aware of

ESLint v10 is now supported and used throughout the repository. The minimum required ESLint version remains v8.57.0, but the project now supports and is tested against ESLint v10.

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.11.2...v2.12.0

v2.11.2 (2026-02-07)

🐞 Fixes

🪄 Improvements

  • Bump esbuild, node types, jsdoc plugin

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.11.1...v2.11.2

v2.11.1 (2026-02-07)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.11.0...v2.11.1

v2.11.0 (2026-02-06)

✨ New

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.10.1...v2.11.0

v2.10.1 (2026-02-05)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.10.0...v2.10.1

v2.10.0 (2026-02-05)

📝 Changes you should be aware of

  1. The no-implicit-key rule has been updated to use type checking and moved from recommended to type-checked presets.
  2. The no-unnecessary-use-ref rule has been moved to removed rules, because the rule is hard to get right.

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.9.4...v2.10.0

v2.9.4 (2026-02-03)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.9.3...v2.9.4

v2.9.3 (2026-02-02)

📝 Changes you should be aware of

The following rules have been deprecated and will be removed in the next major version:

  • no-default-props
  • no-prop-types
  • no-string-refs

For legacy codebases, use no-restricted-syntax as an alternative:

{
    files: ['**/*.jsx', '**/*.tsx'],
    rules: {
        "no-restricted-syntax": [
            "error",
            {
                "selector": "AssignmentExpression[operator='='][left.property.name='defaultProps']",
                "message": "[Deprecated] Use ES6 default parameters instead."
            },
            {
                "selector": "AssignmentExpression[operator='='][left.property.name='propTypes']",
                "message": "[Deprecated] Use TypeScript or another type-checking solution instead."
            },
            {
                "selector": "JSXAttribute[name.name='ref'][value.type='Literal']",
                "message": "[Deprecated] Use callback refs instead."
            }
        ]
    }
}

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.9.2...v2.9.3

v2.9.2 (2026-02-02)

🐞 Fixes

🪄 Improvements

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.9.0...v2.9.2

v2.9.0 (2026-02-02)

✨ New

🪄 Improvements

📝 Changes you should be aware of

The no-non-async-server-functions rule has been migrated to rsc/function-definition. Please update your configuration accordingly if you are using it.

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.8.4...v2.9.0

v2.8.4 (2026-02-01)

🐞 Fixes

New Contributors

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.8.3...v2.8.4

v2.8.3 (2026-02-01)

✨ New

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.8.1...v2.8.3

v2.8.1 (2026-01-29)

✨ New

  • Function component detection now supports identifying components that don't return a ReactNode but have a 'use memo' or 'use no memo' directive by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1440 The function in below example will be detected as a function component in relevant rules:
    function App() {
      "use memo";
    }
    
    function App() {
      "use no memo";
    }

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.8.0...v2.8.1

v2.8.0 (2026-01-29)

✨ New

  • Function component detection now supports identifying components that don't return a ReactNode but call React Hooks by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1438 The function in below example will be detected as a function component in relevant rules:
    function App() {
      useEffect(() => {}, []);
    }

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.7.4...v2.8.0

v2.7.4 (2026-01-25)

✨ New

🐞 Fixes

🪄 Improvements

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.7.2...v2.7.3

v2.7.2 (2026-01-18)

🪄 Improvements

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.7.1...v2.7.2

v2.7.1 (2026-01-16)

🐞 Fixes

📝 Changes you should be aware of

The no-unnecessary-use-ref rule has been removed from the strict presets, as it was causing false positives in certain scenarios. You can still enable it manually if needed, but please be aware of its current limitations.

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.7.0...v2.7.1

v2.7.0 (2026-01-16)

✨ New

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.6.4...v2.7.0

v2.6.4 (2026-01-15)

✨ New

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.6.2...v2.6.4

v2.6.2 (2026-01-14)

🐞 Fixes

New Contributors

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.6.0...v2.6.2

v2.6.0 (2026-01-14)

✨ New

📝 Changes you should be aware of

The new no-unnecessary-use-ref rule is included in the strict presets.

This rule reports unnecessary uses of useRef when the ref is only used within a single effect which the value can be co-located inside the effect itself. Thanks to @SukkaW for purposing it!

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.5.7...v2.6.0

v2.5.7 (2026-01-13)

🪄 Improvements

🐞 Fixes

📝 Changes you should be aware of

The no-implicit-key rule has been re-added to the recommended presets.

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.5.5...v2.5.7

v2.5.5 (2026-01-12)

🐞 Fixes

📝 Changes you should be aware of

The following rules have been removed from the strict and recommended presets:

  • no-unnecessary-key
  • no-duplicate-key
  • no-implicit-key

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.5.3...v2.5.5

v2.5.3 (2026-01-09)

🐞 Fixes

New Contributors

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.5.1...v2.5.3

v2.5.1 (2026-01-05)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.5.0...v2.5.1

v2.5.0 (2025-12-31)

✨ New

🪄 Improvements

New Contributors

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.4.0...v2.5.0

v2.4.0 (2025-12-24)

✨ New

🐞 Fixes

🪄 Improvements

  • Update typescript-eslint to 8.50.1 across all packages

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.3.13...v2.4.0

v2.3.13 (2025-12-09)

🐞 Fixes

🪄 Improvements

  • Update next and react to latest versions across all packages

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.3.12...v2.3.13

v2.3.12 (2025-12-03)

✨ New

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.3.11...v2.3.12

v2.3.11 (2025-12-02)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.3.9...v2.3.11

v2.3.9 (2025-11-26)

✨ New

🐞 Fixes

New Contributors

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.3.7...v2.3.9

v2.3.7 (2025-11-21)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.3.5...v2.3.7

v2.3.5 (2025-11-13)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.3.4...v2.3.5

v2.3.4 (2025-11-10)

✨ New

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.3.1...v2.3.4

v2.3.1 (2025-11-02)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.3.0...v2.3.1

v2.3.0 (2025-11-02)

✨ New

🪄 Improvements

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.2.4...v2.3.0

v2.2.4 (2025-10-27)

🐞 Fixes

🪄 Improvements

New Contributors

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.2.3...v2.2.4

v2.2.3 (2025-10-22)

🐞 Fixes

🪄 Improvements

New Contributors

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.2.2...v2.2.3

v2.2.2 (2025-10-14)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.2.1...v2.2.2

v2.2.1 (2025-10-13)

🪄 Improvements

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, 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
    • no-unstable-context-value
    • no-unstable-default-props
    • no-unused-class-component-members
    • no-unused-state
    • dom/no-missing-button-type
    • dom/no-missing-iframe-sandbox
    • dom/no-unsafe-iframe-sandbox
    • dom/no-unsafe-target-blank
  • Change typescript peer dependency version range from ^5.9.2 to ^5 by @Rel1cx

New Contributors

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.0.6...v2.1.1

v2.0.6 (2025-10-03)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.0.5...v2.0.6

v2.0.5 (2025-10-02)

🪄 Improvements

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.0.4...v2.0.5

v2.0.4 (2025-10-01)

✨ New

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.0.3...v2.0.4

v2.0.3 (2025-09-30)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.0.2...v2.0.3

v2.0.2 (2025-09-29)

🪄 Improvements

New Contributors

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v2.0.1...v2.0.2

v2.0.1 (2025-09-27)

🐞 Fixes

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

RuleReplaced byReason
avoid-shorthand-booleanjsx-shorthand-booleanconsolidated
avoid-shorthand-fragmentjsx-shorthand-fragmentconsolidated
ensure-forward-ref-using-refno-useless-forward-refrenamed
no-duplicate-propsjsx-no-duplicate-propsrenamed
no-comment-textnodesjsx-no-comment-textnodesrenamed
no-complicated-conditional-renderingdiscontinued
no-nested-componentsno-nested-component-definitionsrenamed
prefer-react-namespace-importprefer-namespace-importrenamed
prefer-shorthand-booleanjsx-shorthand-booleanconsolidated
prefer-shorthand-fragmentjsx-shorthand-fragmentconsolidated
use-jsx-varsjsx-uses-varsrenamed
dom/no-children-in-void-dom-elementsdom/no-void-elements-with-childrenrenamed
hooks-extra/no-direct-set-state-in-use-layout-effecthooks-extra/no-direct-set-state-in-use-effectconsolidated
hooks-extra/no-unnecessary-use-callbackno-unnecessary-use-callbackrelocated
hooks-extra/no-unnecessary-use-memono-unnecessary-use-memorelocated
hooks-extra/no-unnecessary-use-prefixno-unnecessary-use-prefixrelocated
hooks-extra/prefer-use-state-lazy-initializationprefer-use-state-lazy-initializationrelocated

Removed Presets

PresetReplaced byReason
corexrenamed
off-domdisable-domrenamed

Removed Settings

SettingReplaced byReason
additionalComponentsdiscontinued
additionalHooksdiscontinued
skipImportCheckdiscontinued

Rules previously using these settings have been refactored to use improved heuristics and no longer require manual configuration.

✨ New

Added the following new rules:

  • jsx-shorthand-boolean: Enforces a consistent style for boolean attributes by @Rel1cx
  • jsx-shorthand-fragment: Enforces a consistent style for React Fragments by @Rel1cx
  • no-forbidden-props: Disallows specific props on components by @reteps
  • no-unnecessary-key: Reports unnecessary key props on elements by @Rel1cx, @kachkaev
  • no-unused-props: Reports unused props in components by @ulrichstark
  • dom/no-string-style-prop: Disallows string values for the style prop by @Rel1cx, @karlhorky
  • 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:

  • no-unused-props: Reports unused props in components

The following rules now support Codemod features:

  • no-component-did-update by @Rel1cx
  • no-component-will-receive-props by @Rel1cx
  • no-component-will-update by @Rel1cx
  • no-context-provider by @Rel1cx
  • no-forward-ref by @Rel1cx
  • no-string-refs by @Rel1cx

The following rules now support auto-fix:

  • no-missing-context-display-name by @k-yle

The following rules now support suggestion fixes:

  • dom/no-missing-button-type by @Rel1cx
  • dom/no-missing-iframe-sandbox by @Rel1cx
  • 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(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: https://github.com/Rel1cx/eslint-react/compare/v1.53.1...v2.0.0

v1.53.1 (2025-09-11)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.53.0...v1.53.1

v1.53.0 (2025-09-04)

✨ New

🪄 Improvements

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.52.8...v1.53.0

v1.52.9 (2025-08-31)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.52.8...v1.52.9

v1.52.8 (2025-08-29)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.52.7...v1.52.8

v1.52.7 (2025-08-29)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.52.6...v1.52.7

v1.52.6 (2025-08-18)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.52.5...v1.52.6

v1.52.5 (2025-08-15)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.52.4...v1.52.5

v1.52.4 (2025-08-13)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.52.3...v1.52.4

v1.52.3 (2025-07-13)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.52.2...v1.52.3

v1.52.2 (2025-06-12)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.52.1...v1.52.2

v1.52.1 (2025-06-11)

✨ New

New Contributors

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.51.3...v1.52.1

v1.51.3 (2025-06-09)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.51.2...v1.51.3

v1.51.2 (2025-06-08)

🐞 Fixes

🪄 Improvements

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.51.1...v1.51.2

v1.51.1 (2025-06-06)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.51.0...v1.51.1

v1.51.0 (2025-06-03)

✨ New

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.50.0...v1.51.0

v1.50.0 (2025-05-25)

🐞 Fixes

New Contributors

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.49.0...v1.50.0

v1.49.0 (2025-05-05)

✨ New

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.48.5...v1.49.0

v1.48.5 (2025-04-25)

🐞 Fixes

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

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.48.2...v1.48.3

v1.48.2 (2025-04-16)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.48.1...v1.48.2

v1.48.1 (2025-04-16)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.47.4...v1.48.0

v1.47.4 (2025-04-15)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.47.3...v1.47.4

v1.47.3 (2025-04-15)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.47.2...v1.47.3

v1.47.2 (2025-04-14)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.47.1...v1.47.2

v1.47.1 (2025-04-14)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.47.0...v1.47.1

v1.47.0 (2025-04-14)

🪄 Improvements

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.46.0...v1.47.0

v1.46.0 (2025-04-13)

✨ New

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.45.3...v1.45.4

v1.45.4 (2025-04-13)

🪄 Improvements

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.45.3...v1.45.4

v1.45.3 (2025-04-12)

🪄 Improvements

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.45.2...v1.45.3

v1.45.2 (2025-04-12)

🪄 Improvements

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.45.1...v1.45.2

v1.45.1 (2025-04-12)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.45.0...v1.45.1

v1.45.0 (2025-04-11)

✨ New

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.44.0...v1.45.0

v1.44.0 (2025-04-11)

✨ New

🪄 Improvements

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.43.0...v1.44.0

v1.43.0 (2025-04-10)

✨ New

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.42.1...v1.43.0

v1.42.1 (2025-04-08)

✨ New

📝 Changes you should be aware of

The following presets have been renamed:

  • core to x
  • core-legacy to 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

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.40.4...1.41.0

v1.40.4 (2025-04-07)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.40.3...v1.40.4

v1.40.3 (2025-04-04)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.40.2...v1.40.3

v1.40.2 (2025-04-03)

🐞 Fixes

🪄 Improvements

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.40.1...v1.40.2

v1.40.1 (2025-04-01)

✨ New

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.40.0...v1.40.1

v1.40.0 (2025-04-01)

✨ New

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.38.4...v1.40.0

v1.38.4 (2025-03-29)

🪄 Improvements

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.38.3...v1.38.4

v1.38.3 (2025-03-28)

🪄 Improvements

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.38.2...v1.38.3

v1.38.2 (2025-03-27)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.38.0...v1.38.2

v1.38.0 (2025-03-25)

✨ New

🪄 Improvements

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.37.3...v1.38.0

v1.37.3 (2025-03-22)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.37.2...v1.37.3

v1.37.2 (2025-03-22)

🐞 Fixes

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.37.1...v1.37.2

v1.37.1 (2025-03-22)

🐞 Fixes

🪄 Improvements

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-initialization from recommended presets by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/1001

    Based 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

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

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.35.0...v1.36.1

v1.35.0 (2025-03-18)

✨ New

🪄 Improvements

📝 Changes you should be aware of

The following rules have been renamed:

  • hooks-extra/no-useless-custom-hooks to hooks-extra/no-unnecessary-use-prefix
  • @eslint-react/hooks-extra/no-useless-custom-hooks to @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

Full Changelog: https://github.com/Rel1cx/eslint-react/compare/v1.34.0...v1.34.1

v1.34.0 (2025-03-15)

🪄 Improvements

📝 Changes you should be aware of

The following rules have been renamed:

  • no-nested-components to no-nested-component-definitions
  • @eslint-react/no-nested-components to @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

🪄 Improvements

📝 Changes you should be aware of

The following rules have been renamed:

  • ensure-forward-ref-using-ref to no-useless-forward-ref
  • @eslint-react/ensure-forward-ref-using-ref to @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

v1.32.0 (2025-03-12)

✨ New

🪄 Improvements

v1.31.0 (2025-03-07)

✨ New

🪄 Improvements

  • docs: improve rules descriptions by @Rel1cx

v1.30.2 (2025-03-05)

🐞 Fixes

v1.30.1 (2025-03-04)

🐞 Fixes

🪄 Improvements

New Contributors

v1.30.0 (2025-03-03)

✨ New

🐞 Fixes

v1.29.0 (2025-03-01)

✨ New

🐞 Fixes

🪄 Improvements

New Contributors

v1.28.0 (2025-02-26)

✨ New

🪄 Improvements

v1.27.0 (2025-02-21)

✨ New

🪄 Improvements

v1.26.2 (2025-02-06)

🐞 Fixes

v1.26.1 (2025-02-03)

No notable changes have been made in this release.

v1.26.0 (2025-01-31)

✨ New

v1.25.0 (2025-01-27)

✨ New

🐞 Fixes

🪄 Improvements

v1.24.1 (2025-01-22)

🐞 Fixes

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

v1.23.0 (2024-12-31)

🪄 Improvements

  • refactor: JSX fragments related rules no longer rely on jsxPragma and jsxPragmaFrag settings to perform their checks by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/893
  • refactor: improve applicability of the no-useless-fragment and prefer-shorthand-fragment rules
  • refactor: deprecate settings["react-x"].jsxPragma and settings["react-x"].jsxPragmaFrag as they are no longer needed by any rules
  • refactor: replace short-unique-id w/ uid by @SukkaW in https://github.com/Rel1cx/eslint-react/pull/894

🐞 Fixes

v1.22.2 (2024-12-30)

🪄 Improvements

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.js examples 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-vars to use-jsx-vars
  • refactor(plugins/x): rename jsx-no-duplicate-props to no-duplicate-jsx-props
  • refactor(plugins/dom): rename no-children-in-void-dom-elements to no-void-elements-with-children

📝 Changes you should be aware of

The following rules have been renamed:

  • jsx-uses-vars to use-jsx-vars
  • jsx-no-duplicate-props to no-duplicate-jsx-props
  • dom/no-children-in-void-dom-elements to 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-hooks rule by @Rel1cx

🪄 Improvements

  • refactor(plugins/hooks-extra): deprecate rule no-redundant-custom-hook in favor of no-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

v1.20.0 (2024-12-16)

✨ New

🪄 Improvements

New Contributors

v1.19.0 (2024-12-10)

✨ New

  • feat(plugins/x): add no-context-provider rule by @Rel1cx
  • feat(plugins/x): add autofix for no-forward-ref rule by @Rel1cx in https://github.com/Rel1cx/eslint-react/pull/874
  • feat(plugins/eslint-plugin): add no-forward-ref and no-context-provider to recommended presets by @Rel1cx

🪄 Improvements

v1.18.0 (2024-12-08)

✨ New

🪄 Improvements

  • perf(plugins/dom): improve performance of no-void-elements-with-children by @Rel1cx

v1.17.3 (2024-12-03)

🐞 Fixes

🪄 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-utils to ^2.0.0

v1.17.1 (2024-11-22)

✨ New

  • feat(shared): add version detection logic;

🐞 Fixes

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

🪄 Improvements

v1.16.1 (2024-11-10)

✨ New

🪄 Improvements

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-typescript and recommended-typescript-legacy presets 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 avoid-shorthand-boolean and prefer-shorthand-fragment by @Rel1cx

🐞 Fixes

v1.15.0 (2024-10-12)

✨ New

🐞 Fixes

  • fix: Fix false positives when 'web-api/no-leaked-event-listener' passes a signal to an intermediate variable, closes #838

🪄 Improvements

New Contributors

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-callback and hooks-extra/no-unnecessary-use-memo false positives when there are references from nested scopes

v1.13.0 (2024-09-04)

✨ New

  • Added web-api/no-leaked-resize-observer rule to prevent leaked ResizeObserver

🐞 Fixes

  • hooks-extra/no-redundant-custom-hook should allow custom Hooks with empty body

🪄 Improvements

  • Rename debug/react-hooks to debug/hook
  • Rename hooks-extra/ensure-custom-using-hooks to hooks-extra/no-redundant-custom-hook
  • Rename hooks-extra/ensure-use-memo-has-non-empty-deps to hooks-extra/no-unnecessary-use-memo
  • Rename hooks-extra/ensure-use-callback-has-non-empty-deps to hooks-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 useLayoutEffect and useInsertionEffect support to hooks-extra/no-direct-set-state-in-use-effect

🪄 Improvements

  • Deprecate rule hooks-extra/no-direct-set-state-in-use-layout-effect in favor of hooks-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-key rule false positives when the key is a variable
  • Fixed web-api/no-leaked-set-timeout and web-api/no-leaked-set-interval false positives when a timer is assigned to a variable declared by let but 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-key rule false positives when the key is an variable
  • Fixed web-api/no-leaked-set-timeout and web-api/no-leaked-set-interval false positives when a timer is assigned to a variable declared by let but not initialized

🪄 Improvements

  • Allow upper case letters in the rule naming-convention/component-name when 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-x settings to the @typescript-eslint/utils/ts-eslint module via the SharedConfigurationSettings interface

🪄 Improvements

  • Improve the performance of the no-missing-key and no-duplicate-key rules
  • Upgrade @typescript-eslint's packages to ^8.3.0

v1.12.1 (2024-08-22)

✨ New

  • Add the options allowAllCaps, allowNamespace, allowLeadingUnderscore to naming-convention/component-name and set their default values to false

🪄 Improvements

  • Normalize the component name in rule naming-convention/component-name before checking it against the pattern

v1.12.0 (2024-08-21)

✨ New

  • Added hooks-extra rules to recommended and recommended-legacy presets

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-timeout rule to prevent leaked setTimeout
  • Added web-api/no-leaked-interval rule to prevent leaked setInterval
  • Added web-api/no-leaked-event-listener rule to prevent leaked addEventListener
  • Added web-api and web-api-legacy presets to enable all rules provided by eslint-plugin-react-web-api
  • Added web-api/no-leaked-event-listener to recommended and recommended-legacy presets

🪄 Improvements

  • Improve performance by skipping unnecessary checks when possible
  • Improve dts generation of the @eslint-react/eslint-plugin package
  • 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-initialization false positive when using an initializer function

🪄 Improvements

  • Improve rule no-implicit-key error 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-checked and disable-type-checked-legacy presets to disable all type-checked rules

🪄 Improvements

  • Rename off-dom and off-dom-legacy presets to disable-dom and disable-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-sandbox false positive when the sandbox attribute is set to sandbox=""
  • Fixed all and all-legacy presets not including hooks-extra rules

v1.9.0 (2024-08-06)

✨ New

  • Add core preset that includes the most essential rules

🪄 Improvements

  • Upgrade @typescript-eslint's packages to 8.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-effect and hooks-extra/no-direct-set-state-in-use-layout-effect to support set function directly passed to useCallback and useMemo without explicitly calling it
  • Improve website and documentation

v1.8.0 (2024-08-02)

🐞 Fixes

  • Fixed ESLintReactSettings type not being exported correctly
  • Fixed the set function calls that are wrapped in a useMemo or useCallback like hook not being detected by hooks-extra/no-direct-set-state-in-use-effect and hooks-extra/no-direct-set-state-in-use-layout-effect

🪄 Improvements

  • Upgrade @typescript-eslint's packages to 8.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-rendering now 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"].polymorphicPropName setting to specify the name of the prop that is used to determine the component type

🪄 Improvements

  • Dropped the current incomplete lint support for React.createElement to improve performance and subsequent code maintainability

v1.6.0 (2024-07-27)

✨ New

  • Add controlled setting to settings["react-x"].additionalComponents' attributes object to set whether it is controlled or not
  • Add glob support to settings["react-x"].additionalComponents' name setting
  • Add default settings for react-x settings to presets
  • Undeprecate rule no-implicit-key and improve its usefulness
  • Undeprecate rule no-complicated-conditional-rendering and rename it to no-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?)-effect should warn only for the set function

🪄 Improvements

  • Remove no-direct-set-state-in-use-(layout?)-effect from recommended presets

v1.5.30 (2024-07-22)

🐞 Fixes

  • Revert change @typescript-eslint's packages in dependencies to "^7.16.1 || ^rc-v8" as this format is not supported by all package managers

v1.5.29 (2024-07-22)

✨ New

  • Add rule no-prop-types
  • Add rule no-default-props
  • Add experimental settings["react-x"].additionalComponents settings (currently only the no-unsafe-target-blank rule uses it, but more rules will use it in the future)

🪄 Improvements

  • Add rule no-prop-types to recommended presets
  • Add rule no-default-props to recommended presets
  • Remove rule no-useless-fragment from recommended presets
  • Optimize performance of rule no-create-ref
  • Change @typescript-eslint' packages in dependencies to "^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-props reports only the first component in a file

🪄 Improvements

  • Improve website and documentation

v1.5.27 (2024-07-16)

🐞 Fixes

  • Fix rule prefer-read-only-props that was accidentally added to the recommended type-checked presets
  • Fix false negatives in rule hooks-extra/no-direct-set-state-in-use-effect when call set function inside a non-function scope
  • Fix false negatives in rule hooks-extra/no-direct-set-state-in-use-layout-effect when call set function inside a non-function scope

🪄 Improvements

  • Rule no-leaked-conditional-rendering now supports BigInt literals on the left side of the logical expression
  • Rule no-leaked-conditional-rendering now 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-deps when referencing component block scope
  • Fix false positives in rule hooks-extra/no-unnecessary-use-callback when referencing component block scope

🪄 Improvements

  • Add rule hooks-extra/no-direct-set-state-in-use-effect to recommended presets
  • Add rule hooks-extra/no-direct-set-state-in-use-layout-effect to recommended presets
  • Add rule hooks-extra/prefer-use-state-lazy-initialization to recommended presets

v1.5.25 (2024-07-13)

🪄 Improvements

  • Optimize bundle size

v1.5.24 (2024-07-11)

🐞 Fixes

  • Fix rule prefer-read-only-props false positive when using ObjectPattern in function arguments

🪄 Improvements

  • Change typescript version in peerDependencies to "^4.9.5 || ^5.3.3"

v1.5.23 (2024-07-07)

🐞 Fixes

  • Fix rule prefer-read-only-props false negative when using ObjectPattern in 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-components false negative when placing components inside JSX props

🪄 Improvements

  • Update @typescript-eslint's packages to v8
  • Improve rule no-leaked-conditional-rendering compatibility with different versions of typescript-eslint

v1.5.20 (2024-07-02)

🐞 Fixes

  • Fix rule prefer-destructuring-assignment false positive when the function looks like a component

🪄 Improvements

  • Improve utilities/jsx/is-jsx-value to better distinguish between normal values and JSX values
  • Improve core/component-collector to 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 reactOptions in favor of react-x in ESLint Shared Settings

v1.5.18 (28 Fri Jun 2024)

🐞 Fixes

  • Fix rule no-useless-fragment not respecting jsxPragma settings

🪄 Improvements

  • Update documentation for rule no-useless-fragment to reflect the actual behavior of the rule

v1.5.17 (2024-06-26)

🪄 Improvements

  • Remove rule no-children-prop from 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-boolean from recommended presets
  • Remove rule prefer-shorthand-fragment from recommended presets
  • Remove rule prefer-destructuring-assignment from recommended presets

v1.5.15 (2024-06-08)

🐞 Fixes

  • Remove languageOptions.parser from presets
  • Remove @typescript-eslint/parser from 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-type false positive when using type attribute in a JSX expression

v1.5.13 (2024-05-28)

🐞 Fixes

  • Fix components that use getDerivedStateFromError should not be warned by rule no-class-component

🪄 Improvements

  • Update @typescript-eslint's packages to 7.11.0

v1.5.12 (2024-05-17)

🐞 Fixes

  • Fix ESLint peer dependency range in package.json

🪄 Improvements

  • Update @typescript-eslint's packages to 7.9.0
  • Minor improvements

v1.5.11 (2024-05-08)

✨ New

  • Rule no-class-component rule now allows class components with a componentDidCatch method
  • Settings reactOptions now supports importSource to specify the import source for React

🗑️ Deprecations

  • Deprecate rule no-implicit-key because it is stylistic and opinionated
  • Deprecate rule no-complicated-conditional-rendering because it is stylistic and opinionated

🪄 Improvements

  • Refactor React pragma and import name retrieval utils to support custom import source
  • Update @typescript-eslint's packages to 7.8.0

v1.5.10 (2024-04-28)

🪄 Improvements

  • Update react to 18.3.1
  • Update @typescript-eslint's packages to 7.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 to 7.7.0

v1.5.8 (2024-04-11)

🪄 Improvements

  • Update @typescript-eslint's packages to 7.6.0

v1.5.7 (2024-03-28)

🪄 Improvements

  • Update @typescript-eslint's packages to 7.4.0

v1.5.6 (2024-03-12)

🪄 Improvements

  • Update @typescript-eslint's packages to 7.2.0

v1.5.5 (2024-02-18)

🐞 Fixes

  • Fix rule no-component-will-receive-props not 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-value not renamed in v1.0.0

🪄 Improvements

  • Improve code samples in rule docs
  • Update effect to 2.3.5
  • Update @typescript-eslint's packages to 7.0.1

v1.5.3 (2024-02-10)

🪄 Improvements

  • Improve diagnostic messages
  • Remove needless deps from peerDependencies
  • Update @typescript-eslint's packages to 6.21.0

v1.5.2 (2024-01-31)

🪄 Improvements

  • Remove needless deps from peerDependencies
  • Update @typescript-eslint's packages to 6.20.0
  • Update effect to 2.2.3

v1.5.2-beta.2 (2024-01-31)

🪄 Improvements

  • Update effect to 2.2.3
  • Remove needless deps from peerDependencies

v1.5.2-beta.0 (2024-01-30)

🪄 Improvements

  • Update @typescript-eslint's packages to 6.20.0

v1.5.1 (2024-01-29)

✨ New

  • Add off-dom and off-dom-legacy presets 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-key to no-implicit-key
  • Rename rule no-constructed-context-value to no-unstable-context-value
  • Rename rule no-unstable-nested-components to no-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/ with dom/ in rule names
    • Replace react-hooks/ with hooks-extra/ in rule names
  • Switch to new settings schema
    • Put settings under reactOptions instead of eslintReact
    • Replace jsx.pragma with jsxPragma
    • Replace jsx.fragment with jsxPragmaFrag
    • Replace react.version with version
    • Remove jsx.extensions

v1.0.2 (2024-01-27)

🐞 Fixes

  • Fix rule dom/no-namespace not renamed in v1.0.0
  • Fix rule dom/no-void-elements-with-children not renamed in v1.0.0

🪄 Improvements

  • Improve rules overview page on website
  • Remove jsx and hooks presets from documentation

v1.0.1 (2024-01-27)

🪄 Improvements

  • Improve jsx and jsx-legacy presets
  • Improve core and core-legacy presets
  • Improve recommended and recommended-legacy presets
  • Improve recommended-type-checked and recommended-type-checked-legacy presets

v1.0.0 (2024-01-27)

💥 Breaking Changes

  • Rename rule react/no-void-elements-with-children to dom/no-void-elements-with-children
  • Rename rule react/no-dangerously-set-innerhtml-with-children to dom/no-dangerously-set-innerhtml-with-children
  • Rename rule react/no-dangerously-set-innerhtml to dom/no-dangerously-set-innerhtml
  • Rename rule react/no-find-dom-node to dom/no-find-dom-node
  • Rename rule react/no-missing-button-type to dom/no-missing-button-type
  • Rename rule react/no-missing-iframe-sandbox to dom/no-missing-iframe-sandbox
  • Rename rule react/no-namespace to dom/no-namespace
  • Rename rule react/no-render-return-value to dom/no-render-return-value
  • Rename rule react/no-script-url to dom/no-script-url
  • Rename rule react/no-unsafe-iframe-sandbox to dom/no-unsafe-iframe-sandbox
  • Rename rule react/no-unsafe-target-blank to dom/no-unsafe-target-blank

✨ New

  • Make dom an alias of react-dom preset
  • Make hooks an alias of react-hooks preset
  • Add preset jsx and jsx-legacy
  • Add preset react-dom and dom-legacy
  • Add preset core and core-legacy
  • Add preset react-hooks and hooks-legacy

🐞 Fixes

  • Fix the lint message for rule 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 dom an alias of react-dom preset
  • Make hooks an alias of react-hooks preset

v1.0.0-beta.1 (2024-01-26)

✨ New

  • Add preset jsx and jsx-legacy
  • Add preset dom and dom-legacy
  • Add preset core and core-legacy
  • Add preset hooks and hooks-legacy

v1.0.0-beta.0 (2024-01-26)

💥 Breaking Changes

  • Rename rule react/no-dangerously-set-innerhtml to dom/no-dangerously-set-innerhtml
  • Rename rule react/no-dangerously-set-innerhtml-with-children to dom/no-dangerously-set-innerhtml-with-children
  • Rename rule react/no-find-dom-node to dom/no-find-dom-node
  • Rename rule react/no-missing-button-type to dom/no-missing-button-type
  • Rename rule react/no-missing-iframe-sandbox to dom/no-missing-iframe-sandbox
  • Rename rule react/no-script-url to dom/no-script-url
  • Rename rule react/no-unsafe-iframe-sandbox to dom/no-unsafe-iframe-sandbox
  • Rename rule react/no-unsafe-target-blank to dom/no-unsafe-target-blank

v0.10.12 (2024-01-21)

🪄 Improvements

  • Remove unnecessary parserOptions fields from presets

v0.10.12-beta.0 (2024-01-21)

🪄 Improvements

  • Remove unnecessary parserOptions fields from presets

v0.10.11 (2024-01-20)

✨ New

  • Add rule react/no-access-state-in-setstate

🪄 Improvements

  • Improve rule react/no-unused-state to respect the usage of getDerivedStateFromProps
  • Update @typescript-eslint's packages to 6.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 to 6.19.0

v0.10.11-beta.0 (2024-01-15)

🪄 Improvements

  • Improve rule react/no-unused-state to respect the usage of getDerivedStateFromProps

v0.10.10 (2024-01-14)

🪄 Improvements

  • Improve rule react/no-unused-state to support checking for more cases
  • Improve rule react/no-direct-mutation-state to support checking for more cases
  • Improve rule react/no-unused-class-component-members to support checking for more cases

v0.10.10-beta.0 (2024-01-14)

🪄 Improvements

  • Improve rule react/no-unused-state to support checking for more cases
  • Improve rule react/no-direct-mutation-state to support checking for more cases
  • Improve rule react/no-unused-class-component-members to 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-value and react/no-unstable-default-props would 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-value and react/no-unstable-default-props would 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 to 6.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 to 6.18.0

v0.10.4 (2024-01-06)

🪄 Improvements

  • Improve rule react/no-unstable-default-props to support checking for ObjectPatterns within VariableDeclarators that occur on props
  • Improve function component detection in rule react/no-unstable-nested-components and debug/function-component

🐞 Fixes

  • Fix same kind of error inside a component should not only be reported once in rule react/no-create-ref and react/no-constructed-context-value
  • Fix an issue where render functions wrapped in useCallback were accidentally detected as function components in rules react/no-unstable-nested-components and debug/function-component

v0.10.4-beta.1 (2024-01-06)

🪄 Improvements

  • Improve function component detection in rule react/no-unstable-nested-components and debug/function-component

🐞 Fixes

  • Fix an issue where render functions wrapped in useCallback were accidentally detected as function components in rules react/no-unstable-nested-components and debug/function-component

v0.10.4-beta.0 (2024-01-06)

🪄 Improvements

  • Improve rule react/no-unstable-default-props to 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-ref and react/no-constructed-context-value

v0.10.3 (2024-01-05)

🪄 Improvements

  • Update @typescript-eslint's packages to 6.17.0

v0.10.3-beta.0 (2024-01-02)

🪄 Improvements

  • Update @typescript-eslint's packages to 6.17.0

v0.10.2 (2023-12-30)

✨ New

v0.10.2-beta.0 (2023-12-30)

✨ New

v0.10.1 (2023-12-27)

🪄 Improvements

  • Add react/no-clone-element to recommended and recommended-legacy presets
  • Improve rule react/no-unstable-nested-components, make its behavior closer to react-hooks/no-nested-components
  • Update @typescript-eslint's packages to 6.16.0

v0.10.1-beta.1 (2023-12-26)

🪄 Improvements

  • Update @typescript-eslint's packages to 6.16.0

v0.10.1-beta.0 (2023-12-25)

🪄 Improvements

  • Add react/no-clone-element to recommended and recommended-legacy presets
  • 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 recommended and recommended-legacy presets

v0.10.0-beta.0 (2023-12-21)

✨ New

  • Add rule jsx/max-depth

🪄 Improvements

  • Improve recommended and recommended-legacy presets

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 recommended and recommended-legacy presets
  • Update @typescript-eslint's packages to 6.15.0

v0.9.8-beta.2 (2023-12-19)

🪄 Improvements

  • Optimize recommended and recommended-legacy presets

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-extension rename rule option to allow

🐞 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/filename to PascalCase

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-extension rename rule option to allow

✨ New

  • Rule named-convention/filename add extensions option
  • Rule named-convention/filename-extension add extensions option

v0.9.6 (2023-12-12)

✨ New

  • Add rule react-hooks/prefer-use-state-lazy-initialization

🪄 Improvements

  • Rule named-convention/component-name add both string and object options support
  • Rule named-convention/filename add both string and object options support
  • Rule named-convention/filename-extension add both string and object options support
  • Rule debug/react-hooks reports hookCalls.length instead of cost
  • Update @typescript-eslint's packages to 6.14.0

v0.9.6-beta.5 (2023-12-12)

🪄 Improvements

  • Update @typescript-eslint's packages to 6.14.0

v0.9.6-beta.4 (2023-12-11)

🪄 Improvements

  • Rule named-convention/component-name add both string and object options support
  • Rule named-convention/filename add both string and object options support
  • Rule named-convention/filename-extension add both string and object options support

v0.9.6-beta.3 (2023-12-11)

🪄 Improvements

  • Remove rule react-hooks/prefer-use-state-lazy-initialization from recommended and recommended-legacy presets

v0.9.6-beta.2 (2023-12-11)

✨ New

  • Add rule react-hooks/prefer-use-state-lazy-initialization

🪄 Improvements

  • Rule named-convention/filename-extension switch options format from object to string

v0.9.6-beta.1 (2023-12-11)

🪄 Improvements

  • Rule debug/react-hooks reports hookCalls.length instead of cost

v0.9.5 (2023-12-11)

🪄 Improvements

  • Improve rule jsx/no-leaked-conditional-rendering error marker position and range
  • Improve rule react/no-missing-button-type error marker position and range
  • Improve rule react/no-missing-iframe-sandbox error marker position and range
  • Improve rule react/no-unsafe-iframe-sandbox error 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 recommended and recommended-legacy presets
  • 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 allowExpressions option from rule jsx/no-useless-fragment
  • @eslint-react/jsx
    • Remove isFragmentWithOnlyTextAndIsNotChild, isFragmentHasLessThanTwoChildren, isFragmentWithSingleExpression from @eslint-react/jsx's API

✨ New

  • Add rule react/no-redundant-should-component-update

🪄 Improvements

  • Update Options of rule jsx/no-useless-fragment
  • Optimize bundle size

On this page

v4.0.0-beta.0 (2026-03-15)💥 Breaking Changes✨ New🪄 Improvements✅ Upgrade ChecklistPackage changesESLint configurationRule prefix changes in @eslint-react/eslint-pluginReview new rulesRemoved rulesv3.0.0 (2026-03-16)🧹 Choresv3.0.0-rc.5 (2026-03-16)🐞 Fixesv3.0.0-rc.4 (2026-03-14)🪄 Improvements🧹 Choresv3.0.0-rc.3 (2026-03-13)🐞 Fixesv3.0.0-rc.2 (2026-03-13)✨ New🐞 Fixesv3.0.0-rc.1 (2026-03-12)✨ New🪄 Improvementsv3.0.0-rc.0 (2026-03-08)💥 Breaking Changes✨ New🐞 Fixes🪄 Improvements✅ Upgrade ChecklistNode.jsPackage changesESLint configurationSettingsReview new rules enabled in presets📘 Migration Guide: From eslint-plugin-react-hooksv2.13.0 (2026-02-15)✨ New🐞 Fixes📝 Changes you should be aware ofv2.12.4 (2026-02-11)🐞 Fixes🪄 Improvementsv2.12.2 (2026-02-08)🐞 Fixesv2.12.1 (2026-02-07)🐞 Fixesv2.12.0 (2026-02-07)🪄 Improvements📝 Changes you should be aware ofv2.11.2 (2026-02-07)🐞 Fixes🪄 Improvementsv2.11.1 (2026-02-07)🐞 Fixesv2.11.0 (2026-02-06)✨ Newv2.10.1 (2026-02-05)🐞 Fixesv2.10.0 (2026-02-05)📝 Changes you should be aware ofv2.9.4 (2026-02-03)🐞 Fixesv2.9.3 (2026-02-02)📝 Changes you should be aware ofv2.9.2 (2026-02-02)🐞 Fixes🪄 Improvementsv2.9.0 (2026-02-02)✨ New🪄 Improvements📝 Changes you should be aware ofv2.8.4 (2026-02-01)🐞 FixesNew Contributorsv2.8.3 (2026-02-01)✨ Newv2.8.1 (2026-01-29)✨ New🐞 Fixesv2.8.0 (2026-01-29)✨ New🐞 Fixesv2.7.4 (2026-01-25)✨ New🐞 Fixes🪄 Improvementsv2.7.2 (2026-01-18)🪄 Improvementsv2.7.1 (2026-01-16)🐞 Fixes📝 Changes you should be aware ofv2.7.0 (2026-01-16)✨ New🐞 Fixesv2.6.4 (2026-01-15)✨ Newv2.6.2 (2026-01-14)🐞 FixesNew Contributorsv2.6.0 (2026-01-14)✨ New📝 Changes you should be aware ofv2.5.7 (2026-01-13)🪄 Improvements🐞 Fixes📝 Changes you should be aware ofv2.5.5 (2026-01-12)🐞 Fixes📝 Changes you should be aware ofv2.5.3 (2026-01-09)🐞 FixesNew Contributorsv2.5.1 (2026-01-05)🐞 Fixesv2.5.0 (2025-12-31)✨ New🪄 ImprovementsNew Contributorsv2.4.0 (2025-12-24)✨ New🐞 Fixes🪄 Improvementsv2.3.13 (2025-12-09)🐞 Fixes🪄 Improvementsv2.3.12 (2025-12-03)✨ New🐞 Fixesv2.3.11 (2025-12-02)🐞 Fixesv2.3.9 (2025-11-26)✨ New🐞 FixesNew Contributorsv2.3.7 (2025-11-21)🐞 Fixesv2.3.5 (2025-11-13)🐞 Fixesv2.3.4 (2025-11-10)✨ New🐞 Fixesv2.3.1 (2025-11-02)🐞 Fixesv2.3.0 (2025-11-02)✨ New🪄 Improvementsv2.2.4 (2025-10-27)🐞 Fixes🪄 ImprovementsNew Contributorsv2.2.3 (2025-10-22)🐞 Fixes🪄 ImprovementsNew Contributorsv2.2.2 (2025-10-14)🐞 Fixesv2.2.1 (2025-10-13)🪄 Improvementsv2.1.1 (2025-10-13)✨ New🐞 Fixes🪄 ImprovementsNew Contributorsv2.0.6 (2025-10-03)🐞 Fixesv2.0.5 (2025-10-02)🪄 Improvementsv2.0.4 (2025-10-01)✨ New🐞 Fixesv2.0.3 (2025-09-30)🐞 Fixesv2.0.2 (2025-09-29)🪄 ImprovementsNew Contributorsv2.0.1 (2025-09-27)🐞 Fixesv2.0.0 (2025-09-26)💥 Breaking Changes✨ New🐞 Fixes🪄 Improvementsv1.53.1 (2025-09-11)🐞 Fixesv1.53.0 (2025-09-04)✨ New🪄 Improvementsv1.52.9 (2025-08-31)🐞 Fixesv1.52.8 (2025-08-29)🐞 Fixesv1.52.7 (2025-08-29)🐞 Fixesv1.52.6 (2025-08-18)🐞 Fixesv1.52.5 (2025-08-15)🐞 Fixesv1.52.4 (2025-08-13)🐞 Fixesv1.52.3 (2025-07-13)🐞 Fixesv1.52.2 (2025-06-12)🐞 Fixesv1.52.1 (2025-06-11)✨ NewNew Contributorsv1.51.3 (2025-06-09)🐞 Fixesv1.51.2 (2025-06-08)🐞 Fixes🪄 Improvementsv1.51.1 (2025-06-06)🐞 Fixesv1.51.0 (2025-06-03)✨ New🐞 Fixesv1.50.0 (2025-05-25)🐞 FixesNew Contributorsv1.49.0 (2025-05-05)✨ Newv1.48.5 (2025-04-25)🐞 Fixesv1.48.4 (2025-04-19)🐞 Fixesv1.48.3 (2025-04-17)🪄 Improvementsv1.48.2 (2025-04-16)🐞 Fixesv1.48.1 (2025-04-16)🐞 Fixesv1.47.4 (2025-04-15)🐞 Fixesv1.47.3 (2025-04-15)🐞 Fixesv1.47.2 (2025-04-14)🐞 Fixesv1.47.1 (2025-04-14)🐞 Fixesv1.47.0 (2025-04-14)🪄 Improvementsv1.46.0 (2025-04-13)✨ Newv1.45.4 (2025-04-13)🪄 Improvementsv1.45.3 (2025-04-12)🪄 Improvementsv1.45.2 (2025-04-12)🪄 Improvementsv1.45.1 (2025-04-12)🐞 Fixesv1.45.0 (2025-04-11)✨ Newv1.44.0 (2025-04-11)✨ New🪄 Improvementsv1.43.0 (2025-04-10)✨ Newv1.42.1 (2025-04-08)✨ New📝 Changes you should be aware ofv1.41.0 (2025-04-08)✨ Newv1.40.4 (2025-04-07)🐞 Fixesv1.40.3 (2025-04-04)🐞 Fixesv1.40.2 (2025-04-03)🐞 Fixes🪄 Improvementsv1.40.1 (2025-04-01)✨ Newv1.40.0 (2025-04-01)✨ Newv1.38.4 (2025-03-29)🪄 Improvementsv1.38.3 (2025-03-28)🪄 Improvementsv1.38.2 (2025-03-27)🐞 Fixesv1.38.0 (2025-03-25)✨ New🪄 Improvementsv1.37.3 (2025-03-22)🐞 Fixesv1.37.2 (2025-03-22)🐞 Fixesv1.37.1 (2025-03-22)🐞 Fixes🪄 Improvementsv1.37.0 (2025-03-20)🪄 Improvementsv1.36.3 (2025-03-20)🐞 Fixesv1.36.2 (2025-03-20)v1.36.1 (2025-03-19)🪄 Improvementsv1.35.0 (2025-03-18)✨ New🪄 Improvements📝 Changes you should be aware ofv1.34.1 (2025-03-15)🐞 Fixesv1.34.0 (2025-03-15)🪄 Improvements📝 Changes you should be aware ofv1.33.0 (2025-03-14)🐞 Fixes🪄 Improvements📝 Changes you should be aware ofv1.32.1 (2025-03-13)🐞 Fixesv1.32.0 (2025-03-12)✨ New🪄 Improvementsv1.31.0 (2025-03-07)✨ New🪄 Improvementsv1.30.2 (2025-03-05)🐞 Fixesv1.30.1 (2025-03-04)🐞 Fixes🪄 ImprovementsNew Contributorsv1.30.0 (2025-03-03)✨ New🐞 Fixesv1.29.0 (2025-03-01)✨ New🐞 Fixes🪄 ImprovementsNew Contributorsv1.28.0 (2025-02-26)✨ New🪄 Improvementsv1.27.0 (2025-02-21)✨ New🪄 Improvementsv1.26.2 (2025-02-06)🐞 Fixesv1.26.1 (2025-02-03)v1.26.0 (2025-01-31)✨ Newv1.25.0 (2025-01-27)✨ New🐞 Fixes🪄 Improvementsv1.24.1 (2025-01-22)🐞 Fixesv1.24.0 (2025-01-21)🪄 Improvementsv1.23.2 (2025-01-07)✨ Newv1.23.1 (2025-01-03)🐞 Fixesv1.23.0 (2024-12-31)🪄 Improvements🐞 Fixesv1.22.2 (2024-12-30)🪄 Improvementsv1.22.1 (2024-12-24)🪄 Improvements📝 Changes in examplesv1.22.0 (2024-12-22)🪄 Improvements📝 Changes you should be aware ofv1.21.0 (2024-12-20)✨ New🪄 Improvements📝 Changes in Rule implementationv1.20.1 (2024-12-18)🪄 Improvementsv1.20.0 (2024-12-16)✨ New🪄 ImprovementsNew Contributorsv1.19.0 (2024-12-10)✨ New🪄 Improvementsv1.18.0 (2024-12-08)✨ New🪄 Improvementsv1.17.3 (2024-12-03)🐞 Fixes🪄 Improvementsv1.17.2 (2024-12-01)🪄 Improvementsv1.17.1 (2024-11-22)✨ New🐞 Fixesv1.17.0 (2024-11-21)✨ New🐞 Fixesv1.16.2 (2024-11-20)🐞 Fixes🪄 Improvementsv1.16.1 (2024-11-10)✨ New🪄 Improvementsv1.16.0 (2024-11-01)✨ New🪄 Improvementsv1.15.2 (2024-10-29)🪄 Improvementsv1.15.1 (2024-10-26)✨ New🐞 Fixesv1.15.0 (2024-10-12)✨ New🐞 Fixes🪄 ImprovementsNew Contributorsv1.14.3 (2024-09-29)🪄 Improvementsv1.14.2 (2024-09-20)🪄 Improvementsv1.14.1 (2024-09-12)🐞 Fixesv1.14.0 (2024-09-10)🐞 Fixes🪄 Improvementsv1.13.1 (2024-09-09)🐞 Fixesv1.13.0 (2024-09-04)✨ New🐞 Fixes🪄 Improvementsv1.12.4 (2024-08-31)✨ New🪄 Improvementsv1.12.3 (2024-08-29)✨ New🐞 Fixesv1.12.3 (2024-08-29)✨ New🐞 Fixes🪄 Improvementsv1.12.2 (2024-08-27)✨ New🪄 Improvementsv1.12.1 (2024-08-22)✨ New🪄 Improvementsv1.12.0 (2024-08-21)✨ Newv1.11.0 (2024-08-20)✨ New🪄 Improvementsv1.10.1 (2024-08-13)🐞 Fixes🪄 Improvementsv1.10.0 (2024-08-11)✨ New🪄 Improvementsv1.9.1 (2024-08-08)🐞 Fixesv1.9.0 (2024-08-06)✨ New🪄 Improvementsv1.8.2 (2024-08-03)🐞 Fixesv1.8.1 (2024-08-03)🪄 Improvementsv1.8.0 (2024-08-02)🐞 Fixes🪄 Improvementsv1.7.1 (2024-07-31)🐞 Fixes🪄 Improvementsv1.7.0 (2024-07-30)✨ New🪄 Improvementsv1.6.0 (2024-07-27)✨ New🐞 Fixes🪄 Improvementsv1.5.30 (2024-07-22)🐞 Fixesv1.5.29 (2024-07-22)✨ New🪄 Improvementsv1.5.28 (2024-07-20)🐞 Fixes🪄 Improvementsv1.5.27 (2024-07-16)🐞 Fixes🪄 Improvementsv1.5.26 (2024-07-15)✨ New🐞 Fixes🪄 Improvementsv1.5.25 (2024-07-13)🪄 Improvementsv1.5.24 (2024-07-11)🐞 Fixes🪄 Improvementsv1.5.23 (2024-07-07)🐞 Fixes🪄 Improvementsv1.5.22 (2024-07-05)✨ New🪄 Improvementsv1.5.21 (2024-07-03)🐞 Fixes🪄 Improvementsv1.5.20 (2024-07-02)🐞 Fixes🪄 Improvementsv1.5.19 (30 Sun Jun 2024)🪄 Improvementsv1.5.18 (28 Fri Jun 2024)🐞 Fixes🪄 Improvementsv1.5.17 (2024-06-26)🪄 Improvementsv1.5.16 (2024-06-17)🐞 Fixes🪄 Improvementsv1.5.15 (2024-06-08)🐞 Fixesv1.5.14 (2024-05-30)✨ New🐞 Fixesv1.5.13 (2024-05-28)🐞 Fixes🪄 Improvementsv1.5.12 (2024-05-17)🐞 Fixes🪄 Improvementsv1.5.11 (2024-05-08)✨ New🗑️ Deprecations🪄 Improvementsv1.5.10 (2024-04-28)🪄 Improvementsv1.5.9 (2024-04-19)🪄 Improvementsv1.5.8 (2024-04-11)🪄 Improvementsv1.5.7 (2024-03-28)🪄 Improvementsv1.5.6 (2024-03-12)🪄 Improvementsv1.5.5 (2024-02-18)🐞 Fixes🪄 Improvementsv1.5.4 (2024-02-16)🐞 Fixes🪄 Improvementsv1.5.3 (2024-02-10)🪄 Improvementsv1.5.2 (2024-01-31)🪄 Improvementsv1.5.2-beta.2 (2024-01-31)🪄 Improvementsv1.5.2-beta.0 (2024-01-30)🪄 Improvementsv1.5.1 (2024-01-29)✨ New🪄 Improvementsv1.5.0 (2024-01-29)💥 Breaking Changesv1.0.2 (2024-01-27)🐞 Fixes🪄 Improvementsv1.0.1 (2024-01-27)🪄 Improvementsv1.0.0 (2024-01-27)💥 Breaking ChangesAll DOM related rules are moved to react-dom namespace✨ New🐞 Fixesv1.0.0-beta.3 (2024-01-26)🐞 Fixesv1.0.0-beta.2 (2024-01-26)✨ Newv1.0.0-beta.1 (2024-01-26)✨ Newv1.0.0-beta.0 (2024-01-26)💥 Breaking ChangesAll DOM related rules are moved to react-dom namespacev0.10.12 (2024-01-21)🪄 Improvementsv0.10.12-beta.0 (2024-01-21)🪄 Improvementsv0.10.11 (2024-01-20)✨ New🪄 Improvementsv0.10.11-beta.2 (2024-01-19)✨ Newv0.10.11-beta.1 (2024-01-16)🪄 Improvementsv0.10.11-beta.0 (2024-01-15)🪄 Improvementsv0.10.10 (2024-01-14)🪄 Improvementsv0.10.10-beta.0 (2024-01-14)🪄 Improvementsv0.10.9 (2024-01-12)🐞 Fixesv0.10.8 (2024-01-11)🐞 Fixesv0.10.7 (2024-01-11)✨ Newv0.10.6 (2024-01-09)🐞 Fixesv0.10.6-beta.0 (2024-01-08)🐞 Fixesv0.10.5 (2024-01-08)✨ New🪄 Improvementsv0.10.5-beta.0 (2024-01-07)✨ New🪄 Improvementsv0.10.4 (2024-01-06)🪄 Improvements🐞 Fixesv0.10.4-beta.1 (2024-01-06)🪄 Improvements🐞 Fixesv0.10.4-beta.0 (2024-01-06)🪄 Improvements🐞 Fixesv0.10.3 (2024-01-05)🪄 Improvementsv0.10.3-beta.0 (2024-01-02)🪄 Improvementsv0.10.2 (2023-12-30)✨ Newv0.10.2-beta.0 (2023-12-30)✨ Newv0.10.1 (2023-12-27)🪄 Improvementsv0.10.1-beta.1 (2023-12-26)🪄 Improvementsv0.10.1-beta.0 (2023-12-25)🪄 Improvementsv0.10.0 (2023-12-21)✨ New🪄 Improvementsv0.10.0-beta.0 (2023-12-21)✨ New🪄 Improvementsv0.9.8 (2023-12-19)✨ New🪄 Improvementsv0.9.8-beta.2 (2023-12-19)🪄 Improvementsv0.9.8-beta.1 (2023-12-19)🪄 Improvementsv0.9.8-beta.0 (2023-12-17)✨ New🪄 Improvementsv0.9.7 (2023-12-17)💥 Breaking Changes🐞 Fixes🪄 Improvementsv0.9.7-beta.2 (2023-12-16)🐞 Fixesv0.9.7-beta.1 (2023-12-14)🪄 Improvementsv0.9.7-beta.0 (2023-12-14)💥 Breaking Changesv0.9.6 (2023-12-12)✨ New🪄 Improvementsv0.9.6-beta.5 (2023-12-12)🪄 Improvementsv0.9.6-beta.4 (2023-12-11)🪄 Improvementsv0.9.6-beta.3 (2023-12-11)🪄 Improvementsv0.9.6-beta.2 (2023-12-11)✨ New🪄 Improvementsv0.9.6-beta.1 (2023-12-11)🪄 Improvementsv0.9.5 (2023-12-11)🪄 Improvementsv0.9.4 (2023-12-08)🪄 Improvementsv0.9.3 (2023-12-08)✨ New🪄 Improvementsv0.9.2 (2023-12-06)✨ Newv0.9.1 (2023-12-05)✨ Newv0.9.0 (2023-12-01)💥 Breaking Changes✨ New🪄 Improvements