- New Violations: Component names now need to start with an uppercase letter instead of a non-lowercase letter. This means
_Button
or_component
are no longer valid. (@kassens) in #25162
- Consider dispatch from
useActionState
stable. (@eps1lon in #29665) - Add support for ESLint v9. (@eps1lon in #28773)
- Accept
as
expression in callback. (@StyleShit in #28202) - Accept
as
expressions in deps array. (@StyleShit in #28189) - Treat
React.use()
the same asuse()
. (@kassens in #27769) - Move
use()
lint to non-experimental. (@kassens in #27768) - Support Flow
as
expressions. (@cpojer in #27590) - Allow
useEffect(fn, undefined)
. (@kassens in #27525) - Disallow hooks in async functions. (@acdlite in #27045)
- Rename experimental
useEvent
touseEffectEvent
. (@sebmarkbage in #25881) - Lint for presence of
useEvent
functions in dependency lists. (@poteto in #25512) - Check
useEvent
references instead. (@poteto in #25319) - Update
RulesOfHooks
withuseEvent
rules. (@poteto in #25285)
- No changes, this was an automated release together with React 18.
- Support ESLint 8. (@MichaelDeBoey in #22248)
- Fix a crash with an empty effect. (@ChrisRu in #20385)
- Improve the error message. (@callmetwan in #20692)
- Handle optional chained methods as dependency. (@AriPerkkio in #20247)
- Assume the new
useTransition
signature in the rule. (@rickhanlonii in #20976)
- No changes, this was an automated release together with React 17.
- Improve support for optional chaining. (@pfongkye in #19680)
- Fix a false positive warning for TypeScript parameters. (@NeoRaider in #19751)
- New Violations: Warn when dependencies change on every render. (@captbaritone in #19590)
- Fix a crash when the dependency array has an empty element. (@yeonjuan in #19145)
- Fix a false positive warning that occurs with optional chaining. (@fredvollmer in #19061)
- Fix a false positive warning that occurs with optional chaining. (@fredvollmer in #19061)
- Support nullish coalescing and optional chaining. (@yanneves in #19008)
- Remove the heuristic that checks all Hooks ending with
Effect
due to too many false positives. (@gaearon in #19004)
- Prevent Hooks that have
Effect
in the middle from being considered effects. (@surgeboris in #18907)
- Declare support for ESLint 7. (@MichaelDeBoey in #18878)
- New Violations: Consider
PascalCase.useFoo()
calls as Hooks. (@cyan33 in #18722) - New Violations: Check callback body when it's not written inline. (@gaearon in #18435)
- New Violations: Check dependencies for all Hooks ending with
Effect
. (@airjp73 in #18580) - Add a way to enable the dangerous autofix. (@gaearon in #18437)
- Offer a more sensible suggestion when encountering an assignment. (@Zzzen in #16784)
- Consider TypeScript casts of
useRef
as constant. (@sophiebits in #18496) - Add documentation. (@ghmcadams in #16607)
- New Violations: Forbid calling Hooks from classes. (@ianobermiller in #18341)
- Add a recommended config. (@SimenB in #14762)
- Fix a misleading error message in loops. (@M-Izadmehr in #16853)
- New Violations: Run checks for functions passed to
forwardRef
. (@dprgarner in #17255) - New Violations: Check for ref usage in any Hook containing the word
Effect
. (@gaearon in #17663) - Disable dangerous autofix and use ESLint Suggestions API instead. (@wdoug in #17385)
- New Violations: Forbid calling Hooks at the top level. (@gaearon in #16455)
- Fix a crash when referencing arguments in arrow functions. (@hristo-kanchev in #16356)
The 1.x releases aren’t noted in this changelog, but you can find them in the commit history.