Skip to content

chore(deps): update dependency @eslint-react/eslint-plugin to v5#145

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/eslint-react-eslint-plugin-5.x
Open

chore(deps): update dependency @eslint-react/eslint-plugin to v5#145
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/eslint-react-eslint-plugin-5.x

Conversation

@renovate

@renovate renovate Bot commented May 5, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

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

Release Notes

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

v5.14.1

Compare Source

🐞 Fixes
  • react-rsc/function-definition: fixed invalid async autofixes for object and class methods with local 'use server' directives, including generator and computed methods; accessors and constructors are now reported without an unsafe fix.
🏗️ Internal
  • Added behavior-boundary tests for react-rsc/function-definition, covering directive placement, export resolution, function forms, and autofix behavior.
  • Cleaned up redundant code and comments in react-rsc/function-definition and react-x/unsupported-syntax.

Full Changelog: Rel1cx/eslint-react@v5.14.0...v5.14.1

v5.14.0

Compare Source

✨ New
  • react-x/refs: added render-reachability support for function declarations, IIFEs, synchronous array callbacks, and render-time callbacks passed to useMemo and useReducer. (#​1895)
  • react-x/refs: added lazy-initialization support for explicit undefined guards and for null guards enclosing additional nested conditions. (#​1895)
🐞 Fixes
  • react-x/refs: reworked render-time call analysis as an unbounded fixed-point propagation, removing the previous 50-iteration cap. (#​1895)
  • react-x/refs: tightened inverted lazy-initialization handling so the non-null branch must unconditionally return or throw. (#​1895)
  • react-x/refs: stopped treating !ref.current as a null guard because initialized refs may contain falsy values. (#​1895)
🏗️ Internal
  • react-x/refs: refactored ref aliases, function bindings, JSX refs, and duplicate initialization tracking to use scoped ESLint variable identities and position-aware binding events instead of file-wide identifier names. (#​1895)
  • Added behavior-boundary tests for react-x/immutability and documented them in the spec diff report.
  • Updated build scripts.
  • Bumped @effect/language-service to ^0.86.5.
  • Bumped preact to ^10.29.7.
  • Bumped vite to ^8.1.4 in example apps.
  • Bumped dprint JSON plugin to ^0.23.0.

Full Changelog: Rel1cx/eslint-react@v5.13.2...v5.14.0

v5.13.2

Compare Source

🐞 Fixes
  • react-x/immutability: fixed false positive on ref.current write inside useEffect. (#​1894)
🏗️ Internal
  • Bumped @types/node to ^26.1.1.
  • Bumped preact to ^10.29.6.
  • Bumped tsdown to ^0.22.4.

Full Changelog: Rel1cx/eslint-react@v5.13.1...v5.13.2

v5.13.1

Compare Source

🐞 Fixes
  • react-x/refs: aligned error message wording for readDuringRender, writeDuringRender, and refPassedToFunction with the React Compiler specification.

Full Changelog: Rel1cx/eslint-react@v5.13.0...v5.13.1

v5.13.0

Compare Source

✨ New
  • react-x/refs now detects nested property writes on a ref's value (e.g. ref.current.inner = value), which are now reported as writeDuringRender instead of being misclassified as a read.
  • react-x/refs now tracks functions bound to (and called through) simple object-member-expression targets (e.g. object.foo = () => ref.current; object.foo();), closing a gap in the render-reachability analysis that previously only covered plain variable bindings.
  • react-x/refs now detects ref.current accesses inside the lazy initializer function passed directly as useState's first argument, since it runs synchronously during the initial render unlike other hook-callback arguments.
  • react-x/refs now exempts calls to a function named render (e.g. props.render(ref), a common render-prop pattern) from the refPassedToFunction diagnostic, alongside the existing mergeRefs/hook exemptions.
🐞 Fixes
  • Improved react-x/refs lazy-init guard-block detection so it is direction-aware: inside the branch of an if (ref.current == null)-style guard that is guaranteed to see ref.current as null, only a direct write is treated as the (single) valid initialization; reads or values passed to a function there are still reported.
🏗️ Internal
  • Refactored react-x/refs internals, replacing isRefCurrentNullCheck with getRefCurrentNullCheckBranch in lib.ts.
  • Upgraded fumadocs packages and preact.
  • Cleaned up redundant code in the react-debug/jsx rule.

Full Changelog: Rel1cx/eslint-react@v5.12.2...v5.13.0

v5.12.1

Compare Source

📝 Documentation
  • Fixed react-x/immutability rule description in docs.
🏗️ Internal
  • Cleaned up redundant code in some rules.

Full Changelog: Rel1cx/eslint-react@v5.12.0...v5.12.1

v5.12.0

Compare Source

✨ New
  • Reworked react-x/immutability to align with the React Compiler's ValidateNoFreezingKnownMutableFunctions validation pass: it now detects functions that (transitively) mutate a captured local variable and reports them when passed as a JSX prop, passed as a hook argument, or returned from a hook. (#​1891)
📝 Documentation
  • Cleaned up the rule relations table.
🏗️ Internal
  • Bumped typescript-eslint packages to ^8.63.0.
  • Bumped eslint-plugin-perfectionist to ^5.10.0.

Full Changelog: Rel1cx/eslint-react@v5.11.3...v5.12.0

v5.11.3

Compare Source

🐞 Fixes
  • Fixed FunctionComponentDetectionHint.DoNotIncludeFunctionDefinedAsClassProperty checking for object Property nodes instead of class PropertyDefinition nodes, so functions defined as class fields are now correctly excluded when the hint is set. (#​1890)
🏗️ Internal
  • Renamed fix helpers and formatted MessageID types.
  • Inlined local string constants in rule implementations.
  • Bumped eslint-plugin-jsdoc, typedoc, undici and pnpm.

Full Changelog: Rel1cx/eslint-react@v5.11.2...v5.11.3

v5.11.2

Compare Source

📝 Documentation
  • Updated rule documentation for React introspection APIs (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-to-array, and react-x/no-clone-element) with clearer guidance on why child introspection creates fragile component coupling and links to Astryx's no-react-introspection rule. (#​1889)
  • Updated the function-component collector sequence diagram on the website.
  • Updated THIRD-PARTY-LICENSE file.

Full Changelog: Rel1cx/eslint-react@v5.11.0...v5.11.2

v5.11.0

Compare Source

✨ New
  • react-x/refs now detects ref mutations/reads inside helper functions that are called (directly, or through a simple variable alias) during render, closing a gap where any nested function was previously treated as a safe boundary regardless of whether it was actually invoked during render.
  • react-x/refs now reports a second guarded ref initialization: only a single if (ref.current == null) { ref.current = ... } guarded initialization is allowed per ref per component/hook, and a second guarded write (in the same or a different if block) is reported as duplicateRefInit.
  • react-x/refs now supports .current accesses whose base is a member expression that looks like a ref (e.g. props.ref.current), not just a plain identifier.
🏗️ Internal
  • Added unit tests for packages/ast/src/check.ts.
  • Bumped @effect/language-service to ^0.86.4 and preact to ^10.29.4.
  • Refactored react-x/static-components internals without changing behavior: findVariableForIdentifier now delegates to @typescript-eslint/utils/ast-utils's findVariable instead of a hand-rolled scope-chain walk, resolveDynamicValue was split into findDynamicCreationSite and findReassignmentCreationSite, and render-boundary/JSX-candidate handling was extracted into dedicated helpers.
  • Unified the signatures of Check.isDirective and Check.isIdentifier in @eslint-react/ast: both now take the node as the first argument and an optional name as the second, replacing the previous curried (name) => (node) => boolean shape. Removed Check.isStringLiteral; use ts-pattern's isMatching or an inline type guard instead.

Full Changelog: Rel1cx/eslint-react@v5.10.4...v5.11.0

v5.10.4

Compare Source

🐞 Fixes
  • Fixed react-x/no-misused-capture-owner-stack not recognizing process.env.NODE_ENV checks wrapped in TypeScript type expressions such as (process.env as any).NODE_ENV. (#​1813)
  • Fixed Extract.getFullyQualifiedName to unwrap TSAsExpression, TSTypeAssertion, TSNonNullExpression, and ChainExpression before resolving names. This improves name resolution for rules that identify React APIs or collect component/hook names through type-wrapped expressions.

Full Changelog: Rel1cx/eslint-react@v5.10.3...v5.10.4

v5.10.3

Compare Source

🏗️ Internal
  • Bumped typescript-eslint packages to ^8.62.1.
  • Bumped @effect/language-service to ^0.86.3.
  • Bumped undici and undici-types to ^8.6.0.
  • Updated the @eslint-react/eslint-plugin package description.

Full Changelog: Rel1cx/eslint-react@v5.10.2...v5.10.3

v5.10.2

Compare Source

🐞 Fixes
  • Fixed an issue where several rules treated computed identifier keys in spread props (e.g. <div {...{ [key]: value }} />) as static prop names. The actual property name is the runtime value of the variable; computed string literal keys are still recognized. Affected rules:
    • react-x/no-missing-key
    • react-jsx/no-children-prop-with-children
    • react-jsx/no-children-prop
    • react-jsx/no-useless-fragment
    • react-dom/no-dangerously-set-innerhtml-with-children
    • react-dom/no-dangerously-set-innerhtml
    • react-dom/no-missing-button-type
    • react-dom/no-missing-iframe-sandbox
    • react-dom/no-string-style-prop
    • react-dom/no-unsafe-iframe-sandbox
    • react-dom/no-unsafe-target-blank
    • react-dom/no-void-elements-with-children
    • react-web-api/no-leaked-event-listener
    • react-web-api/no-leaked-fetch
  • Fixed react-x/unsupported-syntax to no longer report IIFEs in JSX. This makes the rule consistent with the upstream react-hooks/unsupported-syntax and removes the iife message.
✨ New
  • react-x/unsupported-syntax now detects eval calls via globalThis.eval, globalThis["eval"], and type assertions like (globalThis as any).eval.
🏗️ Internal
  • Added an optional resolve parameter to Extract.getPropertyName so callers can control how identifier and private identifier property names are resolved.
  • Added unit tests for Extract.getPropertyName.

Full Changelog: Rel1cx/eslint-react@v5.10.1...v5.10.2

v5.10.1

Compare Source

🐞 Fixes
  • Added the missing static-components rule to disable-conflict-eslint-plugin-react-hooks, closes #​1884.
📝 Documentation
  • Rewrote the noCircularEffect recipe sample to use @eslint-react/kit collectors and simpleTraverse, and updated the recipe overview accordingly.
  • Removed the under construction brand assets page from the website.
🏗️ Internal
  • Bumped typescript-eslint, @types/node, vite, and tailwindcss.
  • Bumped fumadocs, lucide-react, and postcss in the website.

Full Changelog: Rel1cx/eslint-react@v5.10.0...v5.10.1

v5.10.0

Compare Source

📝 Documentation
  • Added status emoji markers to recipe and rule documentation code examples (#​1882).
  • Fixed the v5.7.2 changelog entry for react-x/no-unused-state.
  • Updated the community projects list.
🏗️ Internal
  • Bumped eslint to ^10.6.0.
  • Bumped js-yaml workspace override to ^4.3.0.

Full Changelog: Rel1cx/eslint-react@v5.9.5...v5.10.0

v5.9.5

Compare Source

🐞 Fixes
  • Compare.isEqual now recognizes structurally identical CallExpression nodes. This fixes false positives in the following rules when the compared target (event target, controller, or observed element) is derived from a function call such as window.matchMedia('…') or getEl():
    • react-web-api/no-leaked-event-listener
    • react-web-api/no-leaked-fetch
    • react-web-api/no-leaked-resize-observer
    • react-web-api/no-leaked-intersection-observer

Full Changelog: Rel1cx/eslint-react@v5.9.4...v5.9.5

v5.9.4

Compare Source

🐞 Fixes
  • The following rules now detect member expression calls made with computed string property access (e.g. obj["foo"]()):
    • react-x/no-array-index-key
    • react-x/no-duplicate-key
    • react-x/no-unnecessary-use-prefix
    • react-x/set-state-in-effect
    • react-x/set-state-in-render
    • react-dom/no-find-dom-node
    • react-dom/no-flush-sync
    • react-dom/no-hydrate
    • react-dom/no-render
    • react-dom/no-render-return-value
    • react-dom/no-use-form-state
    • react-web-api/no-leaked-fetch
📝 Documentation
  • Updated the community page and project list.
🏗️ Internal
  • Unified member expression property name checks with Extract.getPropertyName (#​1881).
  • Updated dependencies and switched postinstall to prepare.

Full Changelog: Rel1cx/eslint-react@v5.9.3...v5.9.4

v5.9.3

Compare Source

🐞 Fixes
  • ast: Corrected the TSESTreeJSX union and handling of computed member expressions (#​1877).
  • jsx: Handled namespaced host elements and cleaned up the spread child API (#​1876).
📝 Documentation
  • Refined the rule feature system docs and renamed the term-based patterns document.
  • Renamed import-paths.md to path-aliases.md.
  • Updated JSX type aliases and unwrap documentation.
🏗️ Internal
  • Aligned RuleContext imports in the kit package.
  • Bumped typescript-eslint packages to ^8.62.0 and related dependencies.
  • Renamed scripts with numeric prefixes and renamed verify-* scripts to check-*.
  • Replaced pnpm run with node --run across scripts (#​1879).
  • Replaced the website brand component with an inline logo SVG.
  • Restructured the test directory and added integration tests (#​1880).
  • Updated nx to ^23.0.1 and pnpm to 11.9.0.

Full Changelog: Rel1cx/eslint-react@v5.9.2...v5.9.3

v5.9.2

Compare Source

📝 Documentation
  • Cleaned up the "Further Reading" links in the rule docs.
🏗️ Internal
  • Switched to pnpm/action-setup to install Node and pnpm in CI.
  • Updated dependencies and the lockfile.
  • Updated the baseline.json timestamp and quality signal.

Full Changelog: Rel1cx/eslint-react@v5.9.1...v5.9.2

v5.9.1

Compare Source

📝 Documentation
  • Updated rule patterns and feature system documentation (#​1875).
  • Refined naming convention rule docs for context-name, id-name, and ref-name (#​1873).
  • Updated the example comment in the react-x/unsupported-syntax docs.
  • Removed the ast.unwrap example from the kit package docs.
  • Fixed a typo in a warning callout description.
🏗️ Internal
  • Bumped actions/checkout to v7.0.0 (#​1874).
  • Moved getHumanReadableKind from the ast package into the specific rules that use it.
  • Moved the iterator callback position map for react-x/no-missing-key into lib.ts.
  • Updated dprint line width to 160 and reformatted the codebase.
  • Updated eslint to ^10.5.0 and bumped miscellaneous dependencies.
  • Updated the dprint JSON plugin to v0.22.0.
  • Updated the baseline and DocsPage styling, and pruned pnpm workspace excludes.

Full Changelog: Rel1cx/eslint-react@v5.9.0...v5.9.1

v5.9.0

Compare Source

✨ New
  • Added react-web-api/no-leaked-intersection-observer rule to prevent leaked IntersectionObserver instances in components and hooks, enabled as warn in the recommended preset (#​1841, #​1868).
🐞 Fixes
  • react-web-api/no-leaked-intersection-observer, react-web-api/no-leaked-resize-observer: Report when disconnect is only called inside the observer's own callback, since the callback may never run if the component unmounts before the element intersects or resizes (#​1872).
🏗️ Internal
  • Improved CI configuration and updated SECURITY.md documentation (#​1871).
  • Bumped fumadocs-core and fumadocs-ui to 16.10.1.
New Contributors

Full Changelog: Rel1cx/eslint-react@v5.8.19...v5.9.0

v5.8.19

Compare Source

🏗️ Internal
  • Simplified isJsxLike in core package and added behavior boundary tests (#​1869).
  • Aligned code style in jsx package with core package (#​1870).
  • Updated @types/node to ^25.9.3.

Full Changelog: Rel1cx/eslint-react@v5.8.18...v5.8.19

v5.8.18

Compare Source

🐞 Fixes
  • Improved key detection in react-x/no-array-index-key and react-x/no-missing-key rules (#​1867).
📝 Documentation
  • Removed 'See Also' sections from custom rule recipes.
  • Reordered AST section in kit package docs (#​1866).
  • Formatted examples as accordions in kit package docs.
🏗️ Internal
  • Removed postinstall script on the website.
  • Updated textlint rules for inclusive language.
  • Updated dependencies and relaxed eslint peer dependency.

Full Changelog: Rel1cx/eslint-react@v5.8.17...v5.8.18

v5.8.17

Compare Source

📝 Documentation
  • Simplified project description (#​1860).
  • Updated LICENSE copyright to include contributors (#​1858).
  • Updated brand assets guidelines and trademark policy on the website (#​1859).
🏗️ Internal
  • Bumped typescript-eslint packages to v8.61.0 (#​1863, #​1864).
  • Cleaned up config files (#​1856).
  • Dropped rename-rule script and npm script (#​1857).
  • Updated sponsors.svg (#​1855).
  • Updated undici and cleaned up dprint config (#​1854).
  • Updated brand component and removed boilerplate on the website (#​1861).
  • Updated scaffold script, docs and baseline (#​1862).

Full Changelog: Rel1cx/eslint-react@v5.8.16...v5.8.17

v5.8.16

Compare Source

🐞 Fixes
  • Aligned dependency versions across monorepo (#​1853).

Full Changelog: Rel1cx/eslint-react@v5.8.15...v5.8.16

v5.8.15

📝 Documentation
  • Added under-construction callouts and refined kit pages on the website (#​1850, #​1851).
  • Removed AGENTS.md and CONTRIBUTING.md documents and references (#​1848).
  • Updated home and third-party plugins pages on the website.
  • Updated issue template guidance and labels.
🏗️ Internal
  • Bumped @types/* dependencies (#​1852).
  • Relaxed checklist requirements in issue templates (#​1849).

Full Changelog: Rel1cx/eslint-react@v5.8.13...v5.8.15

v5.8.13

Compare Source

📝 Documentation
  • Added GoogleCloudPlatform/gke-mcp and removed archived antfu/shiki-stream from community projects on the website.
  • Improved RSC Directives wording in documentation.
  • Removed the no-multiple-children-in-title recipe from the website.
  • Removed the kit beta banner from the website (#​1846).
🏗️ Internal
  • Added RuleListener return type to all rule create functions (#​1845).
  • Added boundary and edge case tests for react-dom rules, JSX rules, and naming-convention rules (context-name, id-name, ref-name).
  • Added identifier resolution tests for react-x/no-leaked-conditional-rendering (#​1844).
  • Bumped pnpm and updated lockfile.
  • Bumped tsdown to 0.22.2 and updated dependencies.
  • Removed redundant single-argument merge() calls in rules (#​1843).
  • Switched GitHub workflows to ubuntu-latest.
  • Updated website brand assets and icons.

Full Changelog: Rel1cx/eslint-react@v5.8.12...v5.8.13

v5.8.12

Compare Source

🪄 Improvements
  • jsx: Aligned getChildren with Babel's buildChildren and cleanJSXElementLiteralChild patterns, improving whitespace handling accuracy in react-jsx/no-useless-fragment and react-jsx/no-children-prop rules. Migrated child text cleanup to @eslint-react/jsx utilities and removed local lib.ts helpers. (#​1836)
  • jsx: Removed isPaddingWhitespace API and added whitespace boundary tests for react-jsx/no-useless-fragment and react-dom/no-dangerously-set-innerhtml-with-children rules. (#​1837)
  • jsx: Renamed cleanJSXTextValue to collapseMultilineText in the public API and updated react-jsx/no-useless-fragment to use the new name. (#​1838)
📝 Documentation
  • Website: Expanded the Brand Assets page with an icons section and formatted file names as inline code. (#​1834)
🏗️ Internal
  • Added scripts/generate-website-icons.py for automated icon generation and refined logo geometry across all website assets. (#​1833)
  • Bumped import-integrity-lint and enhanced-resolve.
  • Bumped axios to ^1.17.0 and shiki to 4.2.0.
  • Updated pnpm lockfiles for dompurify and rolldown.
  • Updated rule-level changelogs for no-useless-fragment, no-children-prop, and no-dangerously-set-innerhtml-with-children. (#​1836, #​1837, #​1838)

Full Changelog: Rel1cx/eslint-react@v5.8.11...v5.8.12

v5.8.11

Compare Source

📝 Documentation
  • Added a new Brand Assets page and updated Meta legal name (#​1832).
🏗️ Internal
  • Updated default React fallback version to 19.2.7 (#​1827).
  • Recreated logo with an open-source workflow, removing reliance on SVG assets exported by Amadine (#​1831).
  • Removed @fontsource/iosevka-aile and switched to system font fallbacks.
  • Bumped TypeScript to 6.0.3 (#​1828).
  • Patch bumped @typescript-eslint/* to 8.60.1, react / react-dom to 19.2.7, next to 16.2.7, and @types/react to 19.2.16.

Full Changelog: Rel1cx/eslint-react@v5.8.10...v5.8.11

v5.8.10

Compare Source

🐞 Fixes
  • react-dom/no-unused-class-component-members: Aligned preset details in rule documentation (#​1825).
  • react-dom/no-unsafe-iframe-sandbox, react-x/context-name, react-x/id-name, react-x/ref-name, react-x/no-unnecessary-use-prefix, react-x/no-string-style-prop: Fixed missing or incorrect presets in rule documentation (#​1826).
📝 Documentation
  • naming-convention: Expanded examples and annotated Ok cases for context-name, id-name, and ref-name rules (#​1819).
  • Refactored MyComponent examples to Button component in custom rules of props and function component definition recipes (#​1823).
  • Added azat-io eslint-config to the community presets list.
🏗️ Internal
  • jsx: Consolidated whitespace child predicates and added isEmptyStringExpression to the public API (#​1820).
  • Added preset verification to verify-docs.ts (#​1822).
  • Added AGENTS.md guide for AI coding agents (#​1824).
  • Normalized local package metadata in .pkgs/*.
  • Bumped vite to ^8.0.15 and ansis to ^4.3.1 across workspace packages.
New Contributors

Full Changelog: Rel1cx/eslint-react@v5.8.9...v5.8.10

v5.8.9

Compare Source

🐞 Fixes
  • react-x/no-direct-mutation-state: Detect nested state mutations and member expressions in assignment expressions (#​1818).
📝 Documentation
  • Updated contributing guide and monorepo structure documentation.
🏗️ Internal
  • Removed .vscode directories from all examples, added missing engines.node to Preact examples, cleaned up redundant .config/*.ts from tsconfig.node.json, and updated .gitignore.
  • Cleaned up configs and docs.
  • Patch bumped eslint, tinyglobby, and tsdown across workspace packages; added @fontsource/iosevka-aile to the website; reordered CSS imports in layout.tsx.
  • Updated .sentrux baseline timestamp.

Full Changelog: Rel1cx/eslint-react@v5.8.8...v5.8.9

v5.8.8

Compare Source

📝 Documentation
  • kit: Added is.APICall callout to the Kit documentation (#​1813).
  • jsx: Updated getChildren and hasChildren API documentation to reflect empty string children behavior.
  • Reworked status emoji indicators across docs and examples (#​1816).
  • Added ℞ prefix to recipe titles and cleaned up See Also sections.
  • Removed the custom-rules-of-children recipe and cross-linked the remaining recipes.
  • Added redirects for moved rule documentation.
  • Cleaned up the "Community Maintained Presets that use ESLint React" documentation page.
🏗️ Internal
  • react-x/no-misused-capture-owner-stack: Added edge-case tests for captureOwnerStack (#​1813).
  • Updated fonts and dropped the data-theme attribute.
  • Updated theme configuration (#​1815).
  • Aligned the tsdown version in @local/configs.
  • Enabled trustPolicy: "no-downgrade" and added minimumReleaseAge: 1440 (1 day).
  • Bumped eslint to 10.4.1 across workspace packages.
  • Bumped pnpm to 11.5.0 and refreshed the lockfile.
  • Bumped fumadocs packages and tinyexec.
  • Bumped eslint-plugin-package-json to 1.2.0.
  • Updated dprint plugins and reformatted font families in example projects.
  • Updated Sentrux baseline metrics.
  • Updated .gitignore.

Full Changelog: Rel1cx/eslint-react@v5.8.7...v5.8.8

v5.8.7

Compare Source

🐞 Fixes
  • react-x/no-create-ref: Fixed a false positive where createRef calls in non-React classes were reported. The rule now only reports createRef calls inside function components or Hooks (#​1812).
  • react-x/no-unused-state: Removed the "only used in effects" detection so the rule only reports state variables that are defined but never used, reducing false positives (#​1808, #​1749).
  • jsx: Aligned children filtering and hasChildren behavior with React source, updating no-children-prop and no-useless-fragment rules accordingly (#​1805).
  • Zod compatibility: Relaxed zod peer dependency to support both v3 and v4 (#​1810).
📝 Documentation
  • react-dom, react-web-api, react-x: Enriched rule MDX examples with TypeScript snippets from react.dev (#​1809).
  • react-dom: Added more rule examples to no-dangerously-set-innerhtml, no-find-dom-node, no-hydrate, no-render, and no-render-return-value documentation (#​1804).
  • react-dom: Added legitimate flushSync use cases to no-flush-sync rule documentation (#​1803).
  • Bumped the documented ESLint minimum version to 10.3.0.
  • Clarified that the off preset disables all rules.
  • Fixed inaccurate minimum ESLint version and off preset description in README.
🏗️ Internal
  • react-x/no-misused-capture-owner-stack: Refactored the process.env.NODE_ENV detection helpers to use the shared core.isAPI utility (#​1812).
  • react-x/no-unused-state: Removed incorrect invalid test cases.
  • jsx: Added targeted test cases for empty string children behavior in no-children-prop-with-children and no-useless-fragment rules (#​1806).
  • Website: Removed SF Pro fonts from the body font stack and normalized CSS baseline.
  • Tests: Normalized quote usage in test files and removed www prefix from eslint-react.xyz links (#​1807).
  • Removed eslint-plugin-function and bumped website dependencies (#​1811).
  • Flattened scripts/lib into the scripts root.
  • Updated .textlintrc.json.
  • Updated dprint plugins and tidied scripts.
  • Removed enriching-rule-examples-from-react-dev.md from main branch.
  • Updated Sentrux baseline metrics.
  • Updated per-rule CHANGELOGs for no-useless-fragment, no-children-prop, and no-children-prop-with-children (#​1805).
  • Bumped dependencies:
    • @takumi-rs/image-response to ^1.6.0
    • dompurify to 3.4.6
    • fumadocs-mdx and updated pnpm lockfile
    • tsdown to 0.22.1
    • dprint plugins (g-plane/markup_fmt and markdown)

Full Changelog: Rel1cx/eslint-react@v5.8.6...v5.8.7

v5.8.6

Compare Source

📝 Documentation
  • Improved react-x/context-name rule description accuracy.
  • Removed broken Further Reading links across rule documentation.
  • Reordered Further Reading links by relevance in react-x, react-dom, and react-web-api rule documentation.
  • Updated term-based-rule-patterns.md documentation.
🏗️ Internal
  • ast: Replaced isLiteral with isStringLiteral in Check utilities (#​1798).
  • Assets: Made logo 120° rotationally symmetric and regenerated all icon assets (#​1799).
  • Configs: Converted tsdown and tsl base configs to factory functions.
  • Custom Rules: Moved custom rule samples to the @local/samples package (#​1800).
  • TypeScript: Fixed TypeScript version specification and cleaned up code style (#​1801).
  • Bumped dependencies across workspace packages:
    • @typescript-eslint to ^8.60.0
    • eslint-plugin-jsdoc to 63.0.0
    • fumadocs patch versions
    • nx to ^22.7.4
    • pnpm and lockfile updates

Full Changelog: Rel1cx/eslint-react@v5.8.5...v5.8.6

v5.8.5

Compare Source

📝 Documentation
  • Added rule implementation patterns guide (docs/rule-implementation-patterns.md) and term-based rule patterns guide (docs/term-based-rule-patterns.md).
  • Lowered minimum TypeScript version requirement from 5.1.0 to 5.0.0 across README and documentation.
  • Fixed textlint war-metaphor warnings and refined .textlintrc.json patterns.
🏗️ Internal
  • Adjusted formatting across configuration and script files (#​1795).
  • Fixed a typo in the CI test workflow step.
  • Added regression tests for oxc issues compatibility verification (#​1796).
  • Bumped dependencies across workspace packages:
    • @effect/language-service to ^0.86.2
    • @takumi-rs/image-response to ^1.3.0
    • @tsconfig/vite-react to ^8.0.6
    • @types/node to ^25.9.1
    • @types/react to ^19.2.15
    • eslint-plugin-package-json to ^1.1.0
    • fumadocs-core to ^16.9.0
    • fumadocs-mdx to ^15.0.7
    • fumadocs-ui to ^16.9.0
    • lru-cache to 11.5.0
    • nx to ^22.7.3
    • postcss to ^8.5.15
    • vite to ^8.0.14
    • vitest to ^4.1.7
    • pnpm to 11.2.1

Full Changelog: Rel1cx/eslint-react@v5.8.4...v5.8.5

v5.8.4

Compare Source

📝 Documentation
  • Website: Restructured the FAQ page from an accordion layout to standard headings for better SEO, accessibility, and direct anchor linking.
  • Website: Replaced the homepage Hint popover with a direct link to the FAQ anchor explaining the project's human/LLM collaboration policy.
  • Added a new "What does 90% human-written mean?" section to the FAQ.
  • Updated documentation for isClassComponent and JsxConfig.
  • Removed outdated documentation files.
🏗️ Internal
  • core: Simplified isClassComponent by removing the context parameter and replacing isClassComponentLoose with the simplified function.
  • eslint-plugin-react-x: Removed unnecessary optional chaining across multiple rules (immutability, no-unused-state, purity, refs, set-state-in-effect, static-components, use-memo, etc.) and expanded test coverage for edge cases (#​1792).
  • Added automated GitHub Release workflow and fixed actions/setup-node cache parameter error.
  • Added null-safety boundary tests for rules affected by PR #​1792 (#​1794).
  • Bumped dependencies across workspace packages: @takumi-rs/image-response to 1.2.1, fumadocs-mdx to 15.0.6, import-integrity-lint to 1.1.1, preact to 10.29.2, tsx to 4.22.1, @typescript-eslint to ^8.59.4, @types/node to ^25.9.0, dompurify to ^3.4.5, pnpm to 11.1.3, textlint to 15.7.1, and dprint TypeScript plugin to 0.96.1.
  • Cleaned up stray empty string in tsl.config.ts.
  • Cleaned up type and lint errors across the workspace (#​1793).
  • Downgraded TypeScript override in pnpm-workspace.yaml from ^6.0.3 to 5.9.3.
  • Fixed zizmor security audit findings in release workflow and moved ignore comments inline, removing .github/zizmor.yml.
  • Removed scripts/verify-lockfile.ts, scripts/verify-devtools.ts, and all references to them.
  • Reordered handler functions in react-jsx/no-children-prop (no logic change).
  • Updated baseline metrics and compacted tsconfig.

Full Changelog: Rel1cx/eslint-react@v5.8.3...v5.8.4

v5.8.3

Compare Source

🐞 Fixes
  • react-dom/no-unknown-property: Added React 19 precedence and blocking attributes to the known property allowlist with version-gated tag checks, preventing false positives on <style>, <link>, and <script> elements (#​1789, #​1790).

Full Changelog: Rel1cx/eslint-react@v5.8.2...v5.8.3

v5.8.2

Compare Source

📝 Documentation
  • Added React 19 use hook guidance to error-boundaries, rules-of-hooks, and no-use-context docs.
  • Added migration examples and corrected rule descriptions for class-component-related rules.
  • Improved eslint-plugin-react-x rule documentation with scenario-based examples, Troubleshooting sections, and Further Reading links across 48 rule docs (#​1786).
  • Removed inline ESLint error annotations (^^^) from documentation examples for better readability (#​1785).
  • Updated migration guide for eslint-plugin-react with additional details.
🏗️ Internal
  • Set up textlint and fixed inappropriate wording in documentation (#​1787).
  • Bumped dependencies across workspace packages (#​1788).
  • Updated pnpm-lock.yaml: bumped nx to 22.7.2 and brace-expansion to 5.0.5.

Full Changelog: Rel1cx/eslint-react@v5.8.1...v5.8.2

v5.8.1

Compare Source

📝 Documentation
  • Restructured rule documentation across all plugins (eslint-plugin-react-x, eslint-plugin-react-dom, eslint-plugin-react-jsx, eslint-plugin-react-web-api, eslint-plugin-react-naming-convention, eslint-plugin-react-debug, eslint-plugin-react-rsc) from the Common Violations / Invalid / Valid format to the new Examples / scenario-based / Troubleshooting / Further Reading format (#​1784).
  • Updated README tagline and description, removed the Benchmark section, and fixed migration guide links (#​1783).
  • Updated website recipe docs, FAQ, and third-party plugins page (#​1783).
🏗️ Internal
  • Updated scripts/scaffold-rule.ts and the rule request issue template to match the new documentation structure (#​1782).

Full Changelog: Rel1cx/eslint-react@v5.8.0...v5.8.1

v5.8.0

Compare Source

🪄 Improvements
  • react-jsx/no-children-prop, react-jsx/no-children-prop-with-children: Added support for createElement calls in addition to JSX elements (#​1780).
📝 Documentation
  • Added eslint-plugin-perfectionist to the third-party plugins documentation page (#​1778).
🏗️ Internal
  • Bumped import-integrity-lint to 1.0.1.
  • Fixed multiple versions of typescript-eslint and import-integrity-lint in the workspace (#​1776).
  • Increased pnpm minimumReleaseAge to 3 days and updated lockfile (#​1779).
  • Removed .repos directory references from config files (#​1773).
  • Removed obsolete maintenance scripts (create-spec-alignment-issues.sh, migrate-labels.sh) (#​1777).
  • Replaced eslint-plugin-fast-import with import-integrity-lint (#​1774).
  • Simplified the publish CI workflow by skipping install scripts and removing the lint step (#​1775).

Full Changelog: Rel1cx/eslint-react@v5.7.10...v5.8.0

v5.7.10

🐞 Fixes
  • react-x/no-leaked-conditional-rendering, react-x/set-state-in-effect: Added cycle detection to prevent stack overflow in recursive function analysis (#​1769).
📝 Documentation
  • Added third-party-plugins.mdx documentation page.
  • Added spec diff and compiler test fixtures for react-x/globals rule.
  • Updated ESLint Stylistic link to rules anchor.
  • Updated community projects (added Obsidian Copilot).
  • Added redirects and simplified removed docs page.
🏗️ Internal
  • react-x/error-boundaries: Simplified getEnclosingTryBlock implementation.
  • Added minimumReleaseAge and minimumReleaseAgeExclude entries to pnpm-workspace.yaml.
  • Bumped fumadocs-core and fumadocs-ui to 16.8.11.
  • Pinned pnpm to v11 in CI and adjusted install hooks.
  • Fixed the git diff noise issue caused by a large number of external repository files introduced by "Vendored facebook/react as git subtree under .repos" in v5.7.9 (re-released as v5.7.10, closes #​1772).

Full Changelog: Rel1cx/eslint-react@v5.7.8...v5.7.10

v5.7.8

Compare Source

🐞 Fixes
  • react-x/no-missing-key: Fixed the rule not detecting ConditionalExpression/LogicalExpression returned from block-bodied .map/Array.from callbacks. The rule now reports both branches when both lack a key, instead of only the first (#​1767, #​1766).
📝 Documentation
  • Added [NEEDS VERIFICATION] markers to spec diffs for React Compiler aligned rules.
  • Added Issue Labels Design Doc and migration scripts.
  • Added a Hint component to the website and used it on the home page.
🏗️ Internal
  • Bumped @effect/language-service to 0.86.0.
  • Bumped dompurify to 3.4.3.
  • Bumped fumadocs-mdx to 15.0.4 and related dependencies.
  • Bumped pnpm from 11.1.0 to 11.1.1.
  • Enabled caching for Nx targets.
  • Removed experimental.useFlatConfig from Zed settings.
  • Removed two dprint plugins from dprint.json.
  • Updated Sentrux baseline metrics.

v5.7.7

Compare Source

🐞 Fixes
  • Fixed the rule documentation URLs returned by eslint-plugin-react-jsx and eslint-plugin-react-rsc to include the jsx- / rsc- prefixes so editor Open documentation links resolve correctly (#​1757) — by @​kasmacioma.
🏗️ Internal
  • Bumped @types/node from 25.6.2 to 25.7.0.
  • Bumped pnpm from 11.0.9 to 11.1.0.
  • Bumped mermaid from 11.14.0 to 11.15.0 and pinned it via pnpm-workspace.yaml overrides, dropping the transitive chevrotain@12.0.0 chain in favor of @chevrotain/types@11.1.2.
  • Enabled trustPolicy: "no-downgrade" in pnpm-workspace.yaml.

v5.7.6

Compare Source

📝 Documentation
  • Migrated the website to the fumadocs solar theme; removed the WIP Frutiger Aero variant and consolidated theme overrides.
  • Each rule documentation page now lists prior versions in a Versions accordion sourced from per-rule CHANGELOG.md.
  • Added the mikoto project to the community showcase.
  • Updated README badges to use @eslint-react/core.
🏗️ Internal
  • Bumped @typescript-eslint packages from 8.59.2 to 8.59.3.
  • Bumped fumadocs-core and fumadocs-ui from 16.8.7 to 16.8.10.
  • Bumped fumadocs-mdx from 14.3.2 to 15.0.3.
  • Bumped tailwindcss and @tailwindcss/postcss from 4.2.4 to 4.3.0.
  • Bumped tailwind-merge from 3.5.0 to 3.6.0.
  • Bumped vitest from 4.1.5 to 4.1.6.
  • Bumped ansis from 4.2.0 to 4.3.0.
  • Bumped semver from 7.7.4 to 7.8.0.
  • Bumped pnpm from 11.0.8 to 11.0.9.
  • Upgraded dprint biome plugin from 0.12.10 to 0.12.11.
  • Reverted nx from a 23.0.0 canary back to 22.7.1 stable.
  • Renamed the verify:rule-docs script to verify:docs.
  • Removed unused assets/logo.html and assets/react-icon.html ([#​1755](https://redirect.github.com/Rel1cx/eslint-react/

Note

PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

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

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

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


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

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot force-pushed the renovate/eslint-react-eslint-plugin-5.x branch 7 times, most recently from 28849ce to dbfabce Compare May 12, 2026 17:51
@renovate renovate Bot force-pushed the renovate/eslint-react-eslint-plugin-5.x branch 8 times, most recently from 04700f7 to a35adef Compare May 19, 2026 22:45
@renovate renovate Bot force-pushed the renovate/eslint-react-eslint-plugin-5.x branch 3 times, most recently from 6c126ff to fc1a9ed Compare May 27, 2026 06:35
@renovate renovate Bot force-pushed the renovate/eslint-react-eslint-plugin-5.x branch 7 times, most recently from a863e4a to 809c93c Compare June 4, 2026 22:14
@renovate renovate Bot force-pushed the renovate/eslint-react-eslint-plugin-5.x branch 5 times, most recently from f6bdb42 to 9ed9b41 Compare June 12, 2026 02:58
@renovate renovate Bot force-pushed the renovate/eslint-react-eslint-plugin-5.x branch 2 times, most recently from ef0afc0 to 1b659d5 Compare June 19, 2026 19:41
@renovate renovate Bot force-pushed the renovate/eslint-react-eslint-plugin-5.x branch 4 times, most recently from e8691b5 to 9ac301a Compare June 28, 2026 13:56
@renovate renovate Bot force-pushed the renovate/eslint-react-eslint-plugin-5.x branch 11 times, most recently from 3a493fa to a5589dc Compare July 9, 2026 17:11
@renovate renovate Bot force-pushed the renovate/eslint-react-eslint-plugin-5.x branch from a5589dc to 0f378a9 Compare July 10, 2026 21:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants