Skip to content

chore(deps): update npm devdependencies (major)#192

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/major-npm-dev-deps
Open

chore(deps): update npm devdependencies (major)#192
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/major-npm-dev-deps

Conversation

@renovate

@renovate renovate Bot commented Feb 10, 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 Confidence
@eslint-react/eslint-plugin (source) ^2.0.2^5.0.0 age confidence
@eslint/js (source) ^9.15.0^10.0.0 age confidence
@vitejs/plugin-react (source) ^5.0.0^6.0.0 age confidence
typescript (source) ^5.7.3^7.0.0 age confidence
vite (source) ^7.2.2^8.0.0 age confidence

Release Notes

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

v5.18.0

Compare Source

✨ New
  • @eslint-react/core: added isUseRefLikeCall and a new additionalRefHooks setting for declaring custom ref-creating hooks; the following rules now recognize them: (#​1922, closes #​1904)
    • react-x/refs
    • react-x/immutability
    • react-x/set-state-in-effect
    • react-naming-convention/ref-name
    • react-debug/is-from-ref
📝 Documentation
  • Updated rule docs to match current rule sources. (#​1920)
🏗️ Internal
  • @local/testkit: simplified internals.
  • react-x: extracted a shared createImplicitPropListener helper used by no-implicit-children, no-implicit-key, and no-implicit-ref. (#​1923)
  • Bumped tsdown to 0.22.13, typescript-eslint to 8.65.0, eslint-plugin-jsdoc to 63.2.0, import-integrity-lint to 1.2.0, react to 19.2.8, next to 16.2.11, and postcss to 8.5.21.
  • Replaced vite-node with nub for running workspace scripts. (#​1919)
  • Unified JSDoc comment style of exported APIs in @eslint-react/ast and @eslint-react/core.

Full Changelog: Rel1cx/eslint-react@v5.17.3...v5.18.0

v5.17.3

Compare Source

🏗️ Internal
  • @eslint-react/ast: reworked the Extract API — replaced getRootIdentifier with the position-based getIdentifierAt, renamed getStaticPropertyName to getPropertyName (with a min/max effort option), and added findProperty for finding properties in nested object expressions; added Check.isConditional for matching conditional expressions and control flow statements. (#​1918)
  • Bumped eslint-plugin-jsdoc to 63.1.0, expect-type to 1.4.0, @preact/preset-vite to 2.10.6, and pnpm to 11.15.0.

Full Changelog: Rel1cx/eslint-react@v5.17.2...v5.17.3

v5.17.2

Compare Source

📝 Documentation
  • @eslint-react/kit: added a README with quick start and API overview.
🏗️ Internal
  • @eslint-react/core: migrated JsxDetectionHint and related JSX detection helpers from @eslint-react/jsx. (#​1913)
  • @eslint-react/jsx: consolidated helpers into focused attribute, children, element, and text modules. (#​1914)
  • @eslint-react/var: renamed computeObjectType to resolveObjectType.
  • @local/testkit: extracted shared test helpers into a new local package. (#​1915)
  • Bumped tsdown to 0.22.9, eslint-plugin-jsdoc to 63.0.14, and pnpm to 11.13.1.

Full Changelog: Rel1cx/eslint-react@v5.17.1...v5.17.2

v5.17.1

Compare Source

🏗️ Internal
  • react-jsx/no-key-after-spread: reworked the attribute scan to a pipeline style using dropWhile and not from @local/eff, Check.is from @eslint-react/ast, and the new isAttribute helper from @eslint-react/jsx. (#​1912)
  • @eslint-react/jsx: added isAttribute for matching JSX attributes by name.
  • @local/eff: added dropWhile and takeWhile.
  • Bumped tsdown to 0.22.8, tsl-dx to 0.13.3, import-integrity-lint to 1.1.4, fumadocs to 16.11.5, and fumadocs-mdx to 15.2.0.

Full Changelog: Rel1cx/eslint-react@v5.17.0...v5.17.1

v5.17.0

Compare Source

🐞 Fixes
  • react-jsx/no-leaked-dollar: the intentional-$ exemption (e.g. <div>${price}</div>) is no longer defeated by surrounding whitespace or empty siblings — a lone $ before a single expression is now allowed whenever all other siblings are non-substantive. (#​1911)
  • react-jsx/no-leaked-semicolon: consecutive leaked semicolons (e.g. ;;) at the start of a JSX text node are now detected. (#​1911)
📝 Documentation
  • react-x/no-unnecessary-use-prefix: reorganized the rule examples.
🏗️ Internal
  • react-jsx: extracted the shared find-create-element-children-prop and remove-jsx-attribute rule helpers, removed dead Literal visitors from no-comment-textnodes and no-leaked-semicolon, simplified the no-key-after-spread attribute scan, and hoisted no-useless-fragment detection and fix helpers to module level. (#​1911)
  • @local/eff: synced the Function module with effect and added missing @category tags.
  • Unified JSDoc comment style across packages.

Full Changelog: Rel1cx/eslint-react@v5.16.1...v5.17.0

v5.16.1

Compare Source

🐞 Fixes
  • react-jsx/no-children-prop: React.createElement calls whose props argument is wrapped in a TypeScript type assertion (e.g. { children: "x" } as Props) are now reported; computed property keys written as template literals (e.g. { [children]: "x" }) are now recognized as the children prop; fixed a false positive where a computed identifier key in a createElement props object (e.g. { [propName]: "Children" }) was treated as the static children prop; the suggestion fix now escapes JSX-sensitive characters (<, >, {, }, &) when moving a string children prop value into element content. (#​1910)
  • react-jsx/no-children-prop-with-children: same createElement edge-case fixes as no-children-prop. (#​1910)
  • react-jsx/no-useless-fragment: allowExpressions: false now only flags fragments with a single expression child, matching the option's documented behavior, instead of flagging any fragment inside a JSX element; fragments with spread attributes (e.g. <Fragment {...props}>) are no longer auto-fixed; the auto-fixer now removes leading indentation when collapsing whitespace-only fragments. (#​1910)
  • react-jsx/no-leaked-dollar: $ character references (&#&#8203;36;, &#x24;) are no longer treated as leaked dollar signs; only a literal $ in the source is reported. (#​1910)
  • react-jsx/no-leaked-semicolon: leaked semicolons followed by spaces or tabs before a newline, including CRLF line endings, are now detected. (#​1910)
  • react-x/immutability: added useHistory to known navigation hooks, so navigation methods such as .push() are not treated as in-place mutations inside frozen callbacks.
🏗️ Internal
  • @eslint-react/ast: added Extract.getStaticPropertyName for resolving static property names from object properties. (#​1910)

Full Changelog: Rel1cx/eslint-react@v5.16.0...v5.16.1

v5.16.0

Compare Source

✨ New
  • @eslint-react/core: added support for hook calls written as tagged template literals. (#​1909)

    const x = useMotionValue(100);
    const transform = useMotionTemplate`transform(${x}px)`;
    //                ^^^ tagged template literal hook call
  • @eslint-react/jsx: findAttribute now resolves nested spread identifiers and nested object expression spreads. (#​1908)

🏗️ Internal
  • Added tests and per-rule changelogs for tagged template literal hook calls. (#​1909)

Full Changelog: Rel1cx/eslint-react@v5.15.0...v5.16.0

v5.15.0

Compare Source

📝 Documentation
  • Added a FAQ entry on improving analyzer accuracy to the website. (#​1907)
  • Fixed inconsistencies and omissions in internal documentation.
🏗️ Internal
  • Bumped typescript-eslint to 8.64.0, nx to 23.1.0, eslint-plugin-package-json to 1.6.0, and pnpm to 11.13.0.
  • Enabled strictBooleanExpressions in TSL and synchronized sample rule configurations. (#​1907)
  • Removed the website-specific changelog file.
  • Switched CI workflows to use pnpm/action-setup instead of installing pnpm globally via npm.

Full Changelog: Rel1cx/eslint-react@v5.14.10...v5.15.0

v5.14.10

Compare Source

🐞 Fixes
  • @eslint-react/ast: Extract.getCalleeName now returns null for computed member expressions (e.g. obj[foo](), obj["foo"](), obj[foo]()) instead of the property name, so callers don't treat dynamically chosen methods as static method names. (#​1906)
🏗️ Internal
  • Added unit tests for Extract.getCalleeName.

Full Changelog: Rel1cx/eslint-react@v5.14.9...v5.14.10

v5.14.9

Compare Source

🐞 Fixes
  • @eslint-react/ast: removed Extract.getPropertyName and added Extract.getCalleeName for simpler callee name resolution. (#​1905)
  • Rules that match calls by method name no longer treat computed string-literal property access as a static match (e.g. obj["foo"]() is no longer resolved to "foo"). This avoids relying on the runtime value of computed keys and aligns callee matching across the codebase. Affected rules:
    • react-dom/no-dangerously-set-innerhtml
    • react-dom/no-find-dom-node
    • react-dom/no-flush-sync
    • react-web-api/no-leaked-event-listener
    • react-web-api/no-leaked-fetch
    • react-x/globals
    • react-x/immutability
  • core.isJsxLike: no longer treats React['createElement'] calls as JSX-like, since the callee is accessed through a computed member expression.
🏗️ Internal
  • Simplified callee name checks across core, react-dom, react-web-api, and react-x rules using Extract.getCalleeName.
  • Bumped @effect/platform, effect, fumadocs-core, fumadocs-mdx, fumadocs-ui, postcss, pnpm, and tsdown.

Full Changelog: Rel1cx/eslint-react@v5.14.8...v5.14.9

v5.14.8

Compare Source

📝 Documentation
  • react-x: refreshed the React Compiler diff reports. (#​1903)
🏗️ Internal
  • react-x: moved the purity and refs resolvers into lib.ts. (#​1902)
  • Bumped tsdown, postcss, and fumadocs.

Full Changelog: Rel1cx/eslint-react@v5.14.7...v5.14.8

v5.14.7

Compare Source

🐞 Fixes
  • react-x/immutability: ignore navigation hook methods (e.g. useNavigate, useNavigation) as mutations. (#​1901)
🏗️ Internal
  • Refreshed pnpm lockfile.

Full Changelog: Rel1cx/eslint-react@v5.14.6...v5.14.7

v5.14.6

Compare Source

🐞 Fixes
  • react-x/immutability: ignore useRouter() navigation methods (e.g. .push()) as mutations when they appear inside frozen callbacks; aliases created through variable declarators are also recognized. (#​1898)
🏗️ Internal
  • Added Check.isExpression to @eslint-react/ast along with unit tests.
  • Bumped eslint, nx, dompurify, and pnpm.
  • Restored standalone quality workflows.
  • Simplified react-x/immutability analysis helpers by sharing initializer provenance checks for useRef() and useRouter() and using AST parent traversal for function-boundary detection.
  • Started running CI tests on Node.js 26.

Full Changelog: Rel1cx/eslint-react@v5.14.5...v5.14.6

v5.14.5

Compare Source

📝 Documentation
  • Temporarily disabled the Bluesky embed on the community page to avoid API rate limits.
🏗️ Internal
  • Consolidated the check:configs and check:docs scripts into a single check:rules script.

Full Changelog: Rel1cx/eslint-react@v5.14.4...v5.14.5

v5.14.2

Compare Source

🐞 Fixes
  • react-x/globals: added detection for global writes through destructuring assignments and property deletion with delete. (#​1896)
  • react-x/globals: propagated render-time global mutation effects through directly called helpers and stable local aliases. (#​1896)
🏗️ Internal
  • Expanded behavior-boundary coverage for react-debug component and source detection, react-naming-convention naming rules, and react-x/immutability React Compiler fixtures.
  • Strengthened documentation verification and added formatting, configuration, architecture, MDX, website type, and production build checks to CI.
  • Gated publishing on the check, test, and workflow security jobs, including for application, example, and configuration changes.

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

v5.14.1

Compare Source

🐞 Fixes
  • @eslint-react/ast: Extract.getCalleeName now returns null for computed member expressions (e.g. obj[foo](), obj["foo"](), obj[foo]()) instead of the property name, so callers don't treat dynamically chosen methods as static method names. (#​1906)
🏗️ Internal
  • Added unit tests for Extract.getCalleeName.

Full Changelog: Rel1cx/eslint-react@v5.14.9...v5.14.10

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](https://redire

Note

PR body was truncated to here.


Configuration

📅 Schedule: (in timezone Europe/Berlin)

  • 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.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • 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 commented Feb 10, 2026

Copy link
Copy Markdown
Contributor Author

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: package-lock.json
npm warn Unknown env config "store". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
npm warn ERESOLVE overriding peer dependency
npm warn While resolving: @eslint-react/ast@2.13.0
npm warn Found: typescript@7.0.2
npm warn node_modules/typescript
npm warn   dev typescript@"^7.0.0" from the root project
npm warn   7 more (@joshwooding/vite-plugin-react-docgen-typescript, ...)
npm warn
npm warn Could not resolve dependency:
npm warn peer typescript@">=4.8.4 <6.0.0" from @eslint-react/ast@2.13.0
npm warn node_modules/@eslint-react/ast
npm warn   @eslint-react/ast@"2.13.0" from @eslint-react/core@2.13.0
npm warn   node_modules/@eslint-react/core
npm warn   7 more (@eslint-react/var, eslint-plugin-react-dom, ...)
npm warn
npm warn Conflicting peer dependency: typescript@5.9.3
npm warn node_modules/typescript
npm warn   peer typescript@">=4.8.4 <6.0.0" from @eslint-react/ast@2.13.0
npm warn   node_modules/@eslint-react/ast
npm warn     @eslint-react/ast@"2.13.0" from @eslint-react/core@2.13.0
npm warn     node_modules/@eslint-react/core
npm warn     7 more (@eslint-react/var, eslint-plugin-react-dom, ...)
npm warn ERESOLVE overriding peer dependency
npm warn While resolving: @eslint-react/core@2.13.0
npm warn Found: typescript@7.0.2
npm warn node_modules/typescript
npm warn   dev typescript@"^7.0.0" from the root project
npm warn   7 more (@joshwooding/vite-plugin-react-docgen-typescript, ...)
npm warn
npm warn Could not resolve dependency:
npm warn peer typescript@">=4.8.4 <6.0.0" from @eslint-react/core@2.13.0
npm warn node_modules/@eslint-react/core
npm warn   @eslint-react/core@"2.13.0" from eslint-plugin-react-dom@2.13.0
npm warn   node_modules/eslint-plugin-react-dom
npm warn   4 more (eslint-plugin-react-hooks-extra, ...)
npm warn
npm warn Conflicting peer dependency: typescript@5.9.3
npm warn node_modules/typescript
npm warn   peer typescript@">=4.8.4 <6.0.0" from @eslint-react/core@2.13.0
npm warn   node_modules/@eslint-react/core
npm warn     @eslint-react/core@"2.13.0" from eslint-plugin-react-dom@2.13.0
npm warn     node_modules/eslint-plugin-react-dom
npm warn     4 more (eslint-plugin-react-hooks-extra, ...)
npm warn ERESOLVE overriding peer dependency
npm warn While resolving: @eslint-react/shared@2.13.0
npm warn Found: typescript@7.0.2
npm warn node_modules/typescript
npm warn   dev typescript@"^7.0.0" from the root project
npm warn   7 more (@joshwooding/vite-plugin-react-docgen-typescript, ...)
npm warn
npm warn Could not resolve dependency:
npm warn peer typescript@">=4.8.4 <6.0.0" from @eslint-react/shared@2.13.0
npm warn node_modules/@eslint-react/shared
npm warn   @eslint-react/shared@"2.13.0" from @eslint-react/core@2.13.0
npm warn   node_modules/@eslint-react/core
npm warn   7 more (@eslint-react/var, eslint-plugin-react-dom, ...)
npm warn
npm warn Conflicting peer dependency: typescript@5.9.3
npm warn node_modules/typescript
npm warn   peer typescript@">=4.8.4 <6.0.0" from @eslint-react/shared@2.13.0
npm warn   node_modules/@eslint-react/shared
npm warn     @eslint-react/shared@"2.13.0" from @eslint-react/core@2.13.0
npm warn     node_modules/@eslint-react/core
npm warn     7 more (@eslint-react/var, eslint-plugin-react-dom, ...)
npm warn ERESOLVE overriding peer dependency
npm warn While resolving: @eslint-react/var@2.13.0
npm warn Found: typescript@7.0.2
npm warn node_modules/typescript
npm warn   dev typescript@"^7.0.0" from the root project
npm warn   7 more (@joshwooding/vite-plugin-react-docgen-typescript, ...)
npm warn
npm warn Could not resolve dependency:
npm warn peer typescript@">=4.8.4 <6.0.0" from @eslint-react/var@2.13.0
npm warn node_modules/@eslint-react/var
npm warn   @eslint-react/var@"2.13.0" from @eslint-react/core@2.13.0
npm warn   node_modules/@eslint-react/core
npm warn   6 more (eslint-plugin-react-dom, ...)
npm warn
npm warn Conflicting peer dependency: typescript@5.9.3
npm warn node_modules/typescript
npm warn   peer typescript@">=4.8.4 <6.0.0" from @eslint-react/var@2.13.0
npm warn   node_modules/@eslint-react/var
npm warn     @eslint-react/var@"2.13.0" from @eslint-react/core@2.13.0
npm warn     node_modules/@eslint-react/core
npm warn     6 more (eslint-plugin-react-dom, ...)
npm error code ERESOLVE
npm error ERESOLVE could not resolve
npm error
npm error While resolving: @eslint/js@10.0.1
npm error Found: eslint@9.39.4
npm error node_modules/eslint
npm error   dev eslint@"^9.15.0" from the root project
npm error   peer eslint@"^6.0.0 || ^7.0.0 || >=8.0.0" from @eslint-community/eslint-utils@4.9.1
npm error   node_modules/@eslint-community/eslint-utils
npm error     @eslint-community/eslint-utils@"^4.9.1" from @typescript-eslint/utils@8.58.0
npm error     node_modules/@typescript-eslint/utils
npm error       @typescript-eslint/utils@"^8.55.0" from @eslint-react/ast@2.13.0
npm error       node_modules/@eslint-react/ast
npm error         @eslint-react/ast@"2.13.0" from @eslint-react/core@2.13.0
npm error         node_modules/@eslint-react/core
npm error         7 more (@eslint-react/var, eslint-plugin-react-dom, ...)
npm error       13 more (@eslint-react/core, @eslint-react/shared, ...)
npm error     @eslint-community/eslint-utils@"^4.8.0" from eslint@9.39.4
npm error   21 more (@eslint-react/ast, @eslint-react/core, ...)
npm error
npm error Could not resolve dependency:
npm error peerOptional eslint@"^10.0.0" from @eslint/js@10.0.1
npm error node_modules/@eslint/js
npm error   dev @eslint/js@"^10.0.0" from the root project
npm error
npm error Conflicting peer dependency: eslint@10.7.0
npm error node_modules/eslint
npm error   peerOptional eslint@"^10.0.0" from @eslint/js@10.0.1
npm error   node_modules/@eslint/js
npm error     dev @eslint/js@"^10.0.0" from the root project
npm error
npm error Fix the upstream dependency conflict, or retry this command with --force or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
npm error
npm error
npm error For a full report see:
npm error /runner/cache/others/npm/_logs/2026-07-25T21_08_33_998Z-eresolve-report.txt
npm error A complete log of this run can be found in: /runner/cache/others/npm/_logs/2026-07-25T21_08_33_998Z-debug-0.log

@renovate
renovate Bot force-pushed the renovate/major-npm-dev-deps branch from 15e06c7 to 48e304f Compare February 26, 2026 09:49
@renovate
renovate Bot force-pushed the renovate/major-npm-dev-deps branch from 48e304f to cc68cf3 Compare March 5, 2026 14:41
@renovate
renovate Bot force-pushed the renovate/major-npm-dev-deps branch from cc68cf3 to 778915f Compare March 15, 2026 16:33
@renovate renovate Bot changed the title chore(deps): update dependency @eslint/js to v10 chore(deps): update npm devdependencies (major) Mar 15, 2026
@renovate
renovate Bot force-pushed the renovate/major-npm-dev-deps branch from 778915f to 7e7d2e6 Compare March 19, 2026 00:57
@renovate
renovate Bot force-pushed the renovate/major-npm-dev-deps branch from 7e7d2e6 to 88fdfb9 Compare March 26, 2026 17:05
@renovate
renovate Bot force-pushed the renovate/major-npm-dev-deps branch 4 times, most recently from 8c13884 to 0919493 Compare April 8, 2026 18:00
@renovate
renovate Bot force-pushed the renovate/major-npm-dev-deps branch from 0919493 to 39df7eb Compare May 2, 2026 04:47
@renovate
renovate Bot force-pushed the renovate/major-npm-dev-deps branch from 39df7eb to 330aa4c Compare June 19, 2026 22:58
@renovate
renovate Bot force-pushed the renovate/major-npm-dev-deps branch from 330aa4c to 5ea5ce2 Compare July 1, 2026 07:48
@renovate
renovate Bot force-pushed the renovate/major-npm-dev-deps branch from 5ea5ce2 to d8dd88d Compare July 11, 2026 17:40
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