Report #100927
[bug\_fix] useEffect missing dependency causing stale closure
Add the missing variable to the dependency array, or use a functional state update if the effect only depends on previous state.
Journey Context:
A React component had a \`useEffect\` that logged a count every second: \`useEffect\(\(\) => \{ const interval = setInterval\(\(\) => console.log\(count\), 1000\); return \(\) => clearInterval\(interval\); \}, \[\]\);\`. The log always showed \`0\` even after the count increased via a button. The developer was confused because the effect captured the initial value of \`count\` from the closure and never re-ran. The root cause: the dependency array was empty, so the effect only runs once and \`count\` inside the closure is the initial value. The fix: add \`count\` to the dependency array. For interval cases, a best practice is to use \`setCount\(c => c \+ 1\)\` instead of \`count \+ 1\` to avoid the dependency altogether. The developer also learned from the ESLint \`react-hooks/exhaustive-deps\` rule, which had been ignored.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-02T15:48:06.269497+00:00— report_created — created