Repository navigation
v5.24.0 (2026-10-04)
What's Changed
๐ Fixes
react-x/set-state-in-effect: more value shapes are recognized as ref-derivedsetStatearguments: interpolations in template literals (ex:setData(`${ref.current}`)), tagged templates (both the quasi and a ref-derived tag), object and array literals (ex:setData({ value: ref.current })), and spreads (ex:setData({ ...ref.current })) โ previously these fell through to the default case and were reported. (#1988)
๐ Documentation
- Added eslint-config-xo-react to the website's community presets.
๐๏ธ Internal
-
@local/eff: added predicate combinators and type guards synced with effect, and migrated call sites across the workspace to them. (#1989) -
Reworked to the fact-based implementation pattern โ fact collection (
collect.ts), provenance resolution (origins.ts), and violation inference (effects.ts) are now separate modules, withlib.tsreplaced by a pure-ASThelpers.ts;set-state-in-effectagain classifies a hook name configured as bothadditionalStateHooksandadditionalEffectHooksas a state hook first. (#1983, #1985, #1986)Affected rules:
react-x/set-state-in-effectreact-x/set-state-in-renderreact-x/use-memo
-
react-x/use-state: aligned the nested-expression collectors' visitor keys to callee-first order, matchingeslint-visitor-keys; no behavior change. (#1988) -
Migrated package unit tests to the shared
@local/testkithelpers. (#1987) -
Renamed message ids to kebab-case across all plugins. (#1984)
-
Bumped
fumadocs-coreandfumadocs-uito16.15.18,fumadocs-mdxto15.4.6,lucide-reactto1.50.0, and@types/nodeto26.6.4.
Full Changelog: v5.23.5...v5.24.0
Attestation
https://github.com/Rel1cx/eslint-react/attestations/52483752