You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@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)
@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.
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.
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.
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.
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.
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)
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.
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.
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.
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:
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.
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():
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
Maikel van Dort (@Netail) made their first contribution in #1868.
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)
Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.
This PR includes no changesets
When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types
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: pnpm-lock.yaml
[WARN] The "pnpm" field in package.json is no longer read by pnpm. The following keys were ignored: "pnpm.overrides". See https://pnpm.io/settings for the new home of each setting.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^5.8.9→^5.14.10^5.8.9→^5.14.10^8.0.2→^8.0.3^8.60.0→^8.64.0^8.60.0→^8.64.0>=1.1.13→>=1.1.16>=5.0.5→>=5.0.7](https://renovatebot.com/diffs/npm/brace-expansion@>=4.0.0 <5.0.5/5.0.5/5.0.7)>=6.1.5→>=6.1.7^10.4.1→^10.7.0^4.16.2→^4.17.1^3.2.0→^3.3.0^3.4.0→^3.6.0^17.6.0→^17.7.0^3.1.4→^3.1.524→24.18.0^0.52.0→^0.59.0^1.0.0→^1.74.0>=4.0.4→>=4.0.5](https://renovatebot.com/diffs/npm/picomatch@>=4.0.0 <4.0.4/4.0.4/4.0.5)11.5.0+sha512.dbfcc4f81cf48597afd4bc391ffdf12c11f1a9fb83a395bfa6b0a2d9cc2fd8ffebafdb1ccbd529632153f793904c2615b7f09fe1a345473fd1c35845172a8eb1→11.13.0^3.0.0→^3.9.5^3.8.3→^3.9.5^8.60.0→^8.64.0^2.0.0→^2.1.0>=2.8.3→>=2.9.0](https://renovatebot.com/diffs/npm/yaml@>=2.0.0 <2.8.3/2.8.3/2.9.0)Release Notes
Rel1cx/eslint-react (@eslint-react/eslint-plugin)
v5.14.10Compare Source
🐞 Fixes
@eslint-react/ast:Extract.getCalleeNamenow returnsnullfor 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
Extract.getCalleeName.Full Changelog: Rel1cx/eslint-react@v5.14.9...v5.14.10
v5.14.9Compare Source
🐞 Fixes
@eslint-react/ast: removedExtract.getPropertyNameand addedExtract.getCalleeNamefor simpler callee name resolution. (#1905)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-innerhtmlreact-dom/no-find-dom-nodereact-dom/no-flush-syncreact-web-api/no-leaked-event-listenerreact-web-api/no-leaked-fetchreact-x/globalsreact-x/immutabilitycore.isJsxLike: no longer treatsReact['createElement']calls as JSX-like, since the callee is accessed through a computed member expression.🏗️ Internal
core,react-dom,react-web-api, andreact-xrules usingExtract.getCalleeName.@effect/platform,effect,fumadocs-core,fumadocs-mdx,fumadocs-ui,postcss,pnpm, andtsdown.Full Changelog: Rel1cx/eslint-react@v5.14.8...v5.14.9
v5.14.8Compare Source
📝 Documentation
react-x: refreshed the React Compiler diff reports. (#1903)🏗️ Internal
react-x: moved the purity and refs resolvers intolib.ts. (#1902)tsdown,postcss, andfumadocs.Full Changelog: Rel1cx/eslint-react@v5.14.7...v5.14.8
v5.14.7Compare Source
🐞 Fixes
react-x/immutability: ignore navigation hook methods (e.g.useNavigate,useNavigation) as mutations. (#1901)🏗️ Internal
pnpmlockfile.Full Changelog: Rel1cx/eslint-react@v5.14.6...v5.14.7
v5.14.6Compare Source
🐞 Fixes
react-x/immutability: ignoreuseRouter()navigation methods (e.g..push()) as mutations when they appear inside frozen callbacks; aliases created through variable declarators are also recognized. (#1898)🏗️ Internal
Check.isExpressionto@eslint-react/astalong with unit tests.eslint,nx,dompurify, andpnpm.react-x/immutabilityanalysis helpers by sharing initializer provenance checks foruseRef()anduseRouter()and using AST parent traversal for function-boundary detection.Full Changelog: Rel1cx/eslint-react@v5.14.5...v5.14.6
v5.14.5Compare Source
📝 Documentation
🏗️ Internal
check:configsandcheck:docsscripts into a singlecheck:rulesscript.Full Changelog: Rel1cx/eslint-react@v5.14.4...v5.14.5
v5.14.2Compare Source
🐞 Fixes
react-x/globals: added detection for global writes through destructuring assignments and property deletion withdelete. (#1896)react-x/globals: propagated render-time global mutation effects through directly called helpers and stable local aliases. (#1896)🏗️ Internal
react-debugcomponent and source detection,react-naming-conventionnaming rules, andreact-x/immutabilityReact Compiler fixtures.Full Changelog: Rel1cx/eslint-react@v5.14.1...v5.14.2
v5.14.1Compare 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
react-rsc/function-definition, covering directive placement, export resolution, function forms, and autofix behavior.react-rsc/function-definitionandreact-x/unsupported-syntax.Full Changelog: Rel1cx/eslint-react@v5.14.0...v5.14.1
v5.14.0Compare Source
✨ New
react-x/refs: added render-reachability support for function declarations, IIFEs, synchronous array callbacks, and render-time callbacks passed touseMemoanduseReducer. (#1895)react-x/refs: added lazy-initialization support for explicitundefinedguards 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.currentas 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)react-x/immutabilityand documented them in the spec diff report.@effect/language-serviceto^0.86.5.preactto^10.29.7.viteto^8.1.4in example apps.dprintJSON plugin to^0.23.0.Full Changelog: Rel1cx/eslint-react@v5.13.2...v5.14.0
v5.13.2Compare Source
🐞 Fixes
react-x/immutability: fixed false positive onref.currentwrite insideuseEffect. (#1894)🏗️ Internal
@types/nodeto^26.1.1.preactto^10.29.6.tsdownto^0.22.4.Full Changelog: Rel1cx/eslint-react@v5.13.1...v5.13.2
v5.13.1Compare Source
🐞 Fixes
react-x/refs: aligned error message wording forreadDuringRender,writeDuringRender, andrefPassedToFunctionwith the React Compiler specification.Full Changelog: Rel1cx/eslint-react@v5.13.0...v5.13.1
v5.13.0Compare Source
✨ New
react-x/refsnow detects nested property writes on a ref's value (e.g.ref.current.inner = value), which are now reported aswriteDuringRenderinstead of being misclassified as a read.react-x/refsnow 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/refsnow detectsref.currentaccesses inside the lazy initializer function passed directly asuseState's first argument, since it runs synchronously during the initial render unlike other hook-callback arguments.react-x/refsnow exempts calls to a function namedrender(e.g.props.render(ref), a common render-prop pattern) from therefPassedToFunctiondiagnostic, alongside the existingmergeRefs/hook exemptions.🐞 Fixes
react-x/refslazy-init guard-block detection so it is direction-aware: inside the branch of anif (ref.current == null)-style guard that is guaranteed to seeref.currentas null, only a direct write is treated as the (single) valid initialization; reads or values passed to a function there are still reported.🏗️ Internal
react-x/refsinternals, replacingisRefCurrentNullCheckwithgetRefCurrentNullCheckBranchinlib.ts.fumadocspackages andpreact.react-debug/jsxrule.Full Changelog: Rel1cx/eslint-react@v5.12.2...v5.13.0
v5.12.1Compare Source
📝 Documentation
react-x/immutabilityrule description in docs.🏗️ Internal
Full Changelog: Rel1cx/eslint-react@v5.12.0...v5.12.1
v5.12.0Compare Source
✨ New
react-x/immutabilityto align with the React Compiler'sValidateNoFreezingKnownMutableFunctionsvalidation 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
🏗️ Internal
typescript-eslintpackages to^8.63.0.eslint-plugin-perfectionistto^5.10.0.Full Changelog: Rel1cx/eslint-react@v5.11.3...v5.12.0
v5.11.3Compare Source
🐞 Fixes
FunctionComponentDetectionHint.DoNotIncludeFunctionDefinedAsClassPropertychecking for objectPropertynodes instead of classPropertyDefinitionnodes, so functions defined as class fields are now correctly excluded when the hint is set. (#1890)🏗️ Internal
MessageIDtypes.eslint-plugin-jsdoc,typedoc,undiciandpnpm.Full Changelog: Rel1cx/eslint-react@v5.11.2...v5.11.3
v5.11.2Compare Source
📝 Documentation
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, andreact-x/no-clone-element) with clearer guidance on why child introspection creates fragile component coupling and links to Astryx'sno-react-introspectionrule. (#1889)THIRD-PARTY-LICENSEfile.Full Changelog: Rel1cx/eslint-react@v5.11.0...v5.11.2
v5.11.0Compare Source
✨ New
react-x/refsnow 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/refsnow reports a second guarded ref initialization: only a singleif (ref.current == null) { ref.current = ... }guarded initialization is allowed per ref per component/hook, and a second guarded write (in the same or a differentifblock) is reported asduplicateRefInit.react-x/refsnow supports.currentaccesses whose base is a member expression that looks like a ref (e.g.props.ref.current), not just a plain identifier.🏗️ Internal
packages/ast/src/check.ts.@effect/language-serviceto^0.86.4andpreactto^10.29.4.react-x/static-componentsinternals without changing behavior:findVariableForIdentifiernow delegates to@typescript-eslint/utils/ast-utils'sfindVariableinstead of a hand-rolled scope-chain walk,resolveDynamicValuewas split intofindDynamicCreationSiteandfindReassignmentCreationSite, and render-boundary/JSX-candidate handling was extracted into dedicated helpers.Check.isDirectiveandCheck.isIdentifierin@eslint-react/ast: both now take the node as the first argument and an optionalnameas the second, replacing the previous curried(name) => (node) => booleanshape. RemovedCheck.isStringLiteral; usets-pattern'sisMatchingor an inline type guard instead.Full Changelog: Rel1cx/eslint-react@v5.10.4...v5.11.0
v5.10.4Compare Source
🐞 Fixes
react-x/no-misused-capture-owner-stacknot recognizingprocess.env.NODE_ENVchecks wrapped in TypeScript type expressions such as(process.env as any).NODE_ENV. (#1813)Extract.getFullyQualifiedNameto unwrapTSAsExpression,TSTypeAssertion,TSNonNullExpression, andChainExpressionbefore 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.3Compare Source
🏗️ Internal
typescript-eslintpackages to^8.62.1.@effect/language-serviceto^0.86.3.undiciandundici-typesto^8.6.0.@eslint-react/eslint-pluginpackage description.Full Changelog: Rel1cx/eslint-react@v5.10.2...v5.10.3
v5.10.2Compare Source
🐞 Fixes
<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-keyreact-jsx/no-children-prop-with-childrenreact-jsx/no-children-propreact-jsx/no-useless-fragmentreact-dom/no-dangerously-set-innerhtml-with-childrenreact-dom/no-dangerously-set-innerhtmlreact-dom/no-missing-button-typereact-dom/no-missing-iframe-sandboxreact-dom/no-string-style-propreact-dom/no-unsafe-iframe-sandboxreact-dom/no-unsafe-target-blankreact-dom/no-void-elements-with-childrenreact-web-api/no-leaked-event-listenerreact-web-api/no-leaked-fetchreact-x/unsupported-syntaxto no longer report IIFEs in JSX. This makes the rule consistent with the upstreamreact-hooks/unsupported-syntaxand removes theiifemessage.✨ New
react-x/unsupported-syntaxnow detectsevalcalls viaglobalThis.eval,globalThis["eval"], and type assertions like(globalThis as any).eval.🏗️ Internal
resolveparameter toExtract.getPropertyNameso callers can control how identifier and private identifier property names are resolved.Extract.getPropertyName.Full Changelog: Rel1cx/eslint-react@v5.10.1...v5.10.2
v5.10.1Compare Source
🐞 Fixes
static-componentsrule todisable-conflict-eslint-plugin-react-hooks, closes #1884.📝 Documentation
noCircularEffectrecipe sample to use@eslint-react/kitcollectors andsimpleTraverse, and updated the recipe overview accordingly.🏗️ Internal
typescript-eslint,@types/node,vite, andtailwindcss.fumadocs,lucide-react, andpostcssin the website.Full Changelog: Rel1cx/eslint-react@v5.10.0...v5.10.1
v5.10.0Compare Source
📝 Documentation
react-x/no-unused-state.🏗️ Internal
eslintto^10.6.0.js-yamlworkspace override to^4.3.0.Full Changelog: Rel1cx/eslint-react@v5.9.5...v5.10.0
v5.9.5Compare Source
🐞 Fixes
Compare.isEqualnow recognizes structurally identicalCallExpressionnodes. 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 aswindow.matchMedia('…')orgetEl():react-web-api/no-leaked-event-listenerreact-web-api/no-leaked-fetchreact-web-api/no-leaked-resize-observerreact-web-api/no-leaked-intersection-observerFull Changelog: Rel1cx/eslint-react@v5.9.4...v5.9.5
v5.9.4Compare Source
🐞 Fixes
obj["foo"]()):react-x/no-array-index-keyreact-x/no-duplicate-keyreact-x/no-unnecessary-use-prefixreact-x/set-state-in-effectreact-x/set-state-in-renderreact-dom/no-find-dom-nodereact-dom/no-flush-syncreact-dom/no-hydratereact-dom/no-renderreact-dom/no-render-return-valuereact-dom/no-use-form-statereact-web-api/no-leaked-fetch📝 Documentation
🏗️ Internal
Extract.getPropertyName(#1881).postinstalltoprepare.Full Changelog: Rel1cx/eslint-react@v5.9.3...v5.9.4
v5.9.3Compare Source
🐞 Fixes
ast: Corrected theTSESTreeJSXunion and handling of computed member expressions (#1877).jsx: Handled namespaced host elements and cleaned up the spread child API (#1876).📝 Documentation
import-paths.mdtopath-aliases.md.unwrapdocumentation.🏗️ Internal
RuleContextimports in the kit package.typescript-eslintpackages to^8.62.0and related dependencies.verify-*scripts tocheck-*.pnpm runwithnode --runacross scripts (#1879).nxto^23.0.1andpnpmto11.9.0.Full Changelog: Rel1cx/eslint-react@v5.9.2...v5.9.3
v5.9.2Compare Source
📝 Documentation
🏗️ Internal
pnpm/action-setupto install Node and pnpm in CI.baseline.jsontimestamp and quality signal.Full Changelog: Rel1cx/eslint-react@v5.9.1...v5.9.2
v5.9.1Compare Source
📝 Documentation
context-name,id-name, andref-name(#1873).react-x/unsupported-syntaxdocs.ast.unwrapexample from the kit package docs.🏗️ Internal
actions/checkouttov7.0.0(#1874).getHumanReadableKindfrom the ast package into the specific rules that use it.react-x/no-missing-keyintolib.ts.dprintline width to160and reformatted the codebase.eslintto^10.5.0and bumped miscellaneous dependencies.dprintJSON plugin tov0.22.0.DocsPagestyling, and prunedpnpmworkspace excludes.Full Changelog: Rel1cx/eslint-react@v5.9.0...v5.9.1
v5.9.0Compare Source
✨ New
react-web-api/no-leaked-intersection-observerrule to prevent leakedIntersectionObserverinstances in components and hooks, enabled aswarnin therecommendedpreset (#1841, #1868).🐞 Fixes
react-web-api/no-leaked-intersection-observer,react-web-api/no-leaked-resize-observer: Report whendisconnectis 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
SECURITY.mddocumentation (#1871).fumadocs-coreandfumadocs-uito16.10.1.New Contributors
Full Changelog: Rel1cx/eslint-react@v5.8.19...v5.9.0
v5.8.19Compare Source
🏗️ Internal
isJsxLikein core package and added behavior boundary tests (#1869).@types/nodeto^25.9.3.Full Changelog: Rel1cx/eslint-react@v5.8.18...v5.8.19
v5.8.18Compare Source
🐞 Fixes
react-x/no-array-index-keyandreact-x/no-missing-keyrules (#1867).📝 Documentation
🏗️ Internal
postinstallscript on the website.textlintrules for inclusive language.eslintpeer dependency.Full Changelog: Rel1cx/eslint-react@v5.8.17...v5.8.18
v5.8.17Compare Source
📝 Documentation
🏗️ Internal
typescript-eslintpackages tov8.61.0(#1863, #1864).rename-rulescript and npm script (#1857).sponsors.svg(#1855).undiciand cleaned updprintconfig (#1854).Full Changelog: Rel1cx/eslint-react@v5.8.16...v5.8.17
v5.8.16Compare Source
🐞 Fixes
Full Changelog: Rel1cx/eslint-react@v5.8.15...v5.8.16
v5.8.15📝 Documentation
AGENTS.mdandCONTRIBUTING.mddocuments and references (#1848).🏗️ Internal
@types/*dependencies (#1852).Full Changelog: Rel1cx/eslint-react@v5.8.13...v5.8.15
v5.8.13Compare Source
📝 Documentation
GoogleCloudPlatform/gke-mcpand removed archivedantfu/shiki-streamfrom community projects on the website.no-multiple-children-in-titlerecipe from the website.🏗️ Internal
RuleListenerreturn type to all rulecreatefunctions (#1845).react-domrules, JSX rules, andnaming-conventionrules (context-name,id-name,ref-name).react-x/no-leaked-conditional-rendering(#1844).pnpmand updated lockfile.tsdownto0.22.2and updated dependencies.merge()calls in rules (#1843).ubuntu-latest.Full Changelog: Rel1cx/eslint-react@v5.8.12...v5.8.13
v5.8.12Compare Source
🪄 Improvements
jsx: AlignedgetChildrenwith Babel'sbuildChildrenandcleanJSXElementLiteralChildpatterns, improving whitespace handling accuracy inreact-jsx/no-useless-fragmentandreact-jsx/no-children-proprules. Migrated child text cleanup to@eslint-react/jsxutilities and removed locallib.tshelpers. (#1836)jsx: RemovedisPaddingWhitespaceAPI and added whitespace boundary tests forreact-jsx/no-useless-fragmentandreact-dom/no-dangerously-set-innerhtml-with-childrenrules. (#1837)jsx: RenamedcleanJSXTextValuetocollapseMultilineTextin the public API and updatedreact-jsx/no-useless-fragmentto use the new name. (#1838)📝 Documentation
🏗️ Internal
scripts/generate-website-icons.pyfor automated icon generation and refined logo geometry across all website assets. (#1833)import-integrity-lintandenhanced-resolve.axiosto^1.17.0andshikito4.2.0.dompurifyandrolldown.no-useless-fragment,no-children-prop, andno-dangerously-set-innerhtml-with-children. (#1836, #1837, #1838)Full Changelog: Rel1cx/eslint-react@v5.8.11...v5.8.12
v5.8.11Compare Source
📝 Documentation
🏗️ Internal
19.2.7(#1827).@fontsource/iosevka-aileand switched to system font fallbacks.6.0.3(#1828).@typescript-eslint/*to8.60.1,react/react-domto19.2.7,nextto16.2.7, and@types/reactto19.2.16.Full Changelog: Rel1cx/eslint-react@v5.8.10...v5.8.11
v5.8.10Compare 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 forcontext-name,id-name, andref-namerules (#1819).MyComponentexamples toButtoncomponent in custom rules of props and function component definition recipes (#1823).azat-ioeslint-config to the community presets list.🏗️ Internal
jsx: Consolidated whitespace child predicates and addedisEmptyStringExpressionto the public API (#1820).verify-docs.ts(#1822).AGENTS.mdguide for AI coding agents (#1824)..pkgs/*.viteto^8.0.15andansisto^4.3.1across workspace packages.New Contributors
Full Changelog: Rel1cx/eslint-react@v5.8.9...v5.8.10
eslint/markdown (@eslint/markdown)
v8.0.3Compare Source
Bug Fixes
typescript-eslint/typescript-eslint (@typescript-eslint/eslint-plugin)
v8.64.0Compare Source
🚀 Features
using/await usingdeclarations and deprecate the rule (#12500)🩹 Fixes
❤️ Thank You
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.63.0Compare Source
🚀 Features
🩹 Fixes
❤️ Thank You
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.62.1Compare Source
🩹 Fixes
❤️ Thank You
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.62.0Compare Source
🚀 Features
❤️ Thank You
See GitHub Releases for more information.
You can read about our versioning strategy and releases on our website.
v8.61.1[Compare Source](https://redirect.github.com/typescript-eslint/typescri
Configuration
📅 Schedule: (in timezone Europe/Zurich)
* 0-3 1 * *)🚦 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.
This PR was generated by Mend Renovate. View the repository job log.