What's Changed
🏗️ Internal
react-x/set-state-in-effect: reworked the rule to the fact-based implementation pattern —collect.ts(call, setup-identifier, and setter-reference facts with their function-phase context),origins.ts(setState and ref provenance), andeffects.ts(violation inference) are now separate modules, withlib.tsreplaced by a pure-ASThelpers.ts; a hook name configured as bothadditionalStateHooksandadditionalEffectHooksis again classified as a state hook first, matching the original call-kind precedence. (#1983)- Renamed message ids to kebab-case across all plugins. (#1984)
react-x/set-state-in-render: reworked the rule to the fact-based implementation pattern —collect.ts(call and early-return facts with their function context),origins.ts(setState provenance), andeffects.ts(violation inference) are now separate modules, withlib.tsreplaced by a pure-ASThelpers.ts. (#1985)react-x/use-memo: reworked the rule to the fact-based implementation pattern —collect.ts(per-call facts: unwrapped callback, result usage, own return statements, and identifier writes),origins.ts(outer-variable resolution for written identifiers), andeffects.ts(violation inference) are now separate modules, withlib.tsreplaced by a pure-ASThelpers.ts. (#1986)- Migrated package unit tests to the shared
@local/testkithelpers. (#1987)
📝 Documentation
- Added eslint-config-xo-react to the website's community presets.
Full Changelog: v5.23.5...v5.24.0-beta.0
Attestation
https://github.com/Rel1cx/eslint-react/attestations/52418033