github Rel1cx/eslint-react v5.30.0-beta.6
v5.30.0-beta.6 (2026-10-27)

latest release: v5.30.0-beta.7
pre-release7 hours ago

What's Changed

🐞 Fixes

  • react-x/no-missing-key: elements with a spread attribute are no longer reported as missing key. (#2086)

  • react-jsx/no-useless-fragment: fragments with a spread attribute are no longer reported. (#2086)

  • react-dom/no-dangerously-set-innerhtml-with-children: empty expression containers ({} and comments) no longer count as children. (#2086)

  • react-dom/no-script-url: namespaced attributes such as xlink:href are now checked for javascript: URLs. (#2086)

  • react-dom/no-void-elements-with-children: comment-only/empty containers and newline-only formatting whitespace no longer count as children. (#2086)

  • react-web-api/no-leaked-event-listener: cyclic alias chains no longer cause infinite recursion when resolving a signal option. (#2085)

  • children supplied through a statically resolvable computed key in a createElement props object is now detected. (#2086)

    Affected rules:

    • react-jsx/no-children-prop
    • react-jsx/no-children-prop-with-children

🪄 Improvements

  • JSX and createElement rules no longer resolve spread props, since a spread's contents are unknown; only direct attributes and properties are inspected. (#2086)

    Affected rules:

    • react-x/no-missing-key
    • react-jsx/no-children-prop
    • react-jsx/no-children-prop-with-children
    • react-jsx/no-useless-fragment
    • react-dom/no-dangerously-set-innerhtml
    • react-dom/no-dangerously-set-innerhtml-with-children
    • 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

🏗️ Internal

  • @eslint-react/jsx / @eslint-react/ast: rewrote the jsx module around direct-attribute descriptors and parseCreateElementCall (dropping its @eslint-react/var and ts-pattern dependencies and spread-property resolution), added Extract.getJSXName, and made getChildren return meaningful children. (#2086)

  • @eslint-react/var: added resolveOriginChain, isProvenanceEqual, and hasDefault, expanded resolveObjectType and createImportLookup (isModuleBinding replaces hasNamespace), made isValueEqual identity-only, and removed resolveBindingTarget/BindingTarget. (#2085)

  • Rules now use the shared callee, JSX-name, and resolution helpers and unwrap AssignmentPattern defaults inline; react-x/no-unknown-property also caches its lookups per React version. No behavior change. (#2085, #2086)

    Affected rules:

    • react-x/globals
    • react-x/immutability
    • react-x/no-array-index-key
    • react-x/no-unknown-property
    • react-x/no-unused-props
    • react-x/purity
    • react-x/set-state-in-effect
    • react-x/unstable-exhaustive-deps
    • react-jsx/no-namespace
    • 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

Full Changelog: v5.30.0-beta.5...v5.30.0-beta.6

Attestation

https://github.com/Rel1cx/eslint-react/attestations/60167330

Don't miss a new eslint-react release

NewReleases is sending notifications on new releases.