Skip to content

v5.30.0-beta.4 (2026-10-26)

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 26 Oct 00:04
· 15 commits to main since this release
Immutable release. Only release title and notes can be modified.
98d6149

What's Changed

🐞 Fixes

  • react-x/set-state-in-effect: report every possible setter when the callee may resolve to multiple setters (ex: (cond ? setA : setB)(1)). (#2082)
  • react-x/set-state-in-effect: apply the ref-derived exemption to any argument position of a custom state hook's setter (ex: setValue(0, ref.current)). (#2082)
  • react-x/set-state-in-effect: ref-derived early-return guards now gate the following statements as the else branch inside try/switch/bare blocks and in loop bodies or update clauses; a try whose paths all terminate now counts as terminating. (#2082, #2083)
  • react-x/set-state-in-effect: follow ref provenance through IIFEs, including nested and TypeScript-wrapped ones; deferred and async/generator writes stay excluded. (#2082)
  • react-x/set-state-in-effect: report setter calls reached through the same effect-side trigger once per setter name. (#2082)

📝 Documentation

  • react-x/set-state-in-effect: note that files without a use…Effect name in their source are skipped, limiting additionalEffectHooks patterns that lack the Effect suffix. (#2082)

🏗️ Internal

  • @eslint-react/ast: added the Analyze namespace (isTerminatingStatement, isUnconditionallyTerminating), now used by react-x/set-state-in-effect and react-x/refs. (#2083)

Full Changelog: v5.30.0-beta.3...v5.30.0-beta.4

Attestation

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