Report #6494
[bug\_fix] Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate
Remove the state variable that is being updated from the useEffect dependency array if the effect sets that state \(causing a loop\). Use the functional update form setState\(prev => ...\) if the new state depends on the old state to avoid stale closures, or use useRef for values that should not trigger re-renders when they change.
Journey Context:
Developer writes useEffect\(\(\) => \{ setCount\(count \+ 1\) \}, \[count\]\) to increment a counter on mount. The component renders, the effect runs, setCount is called with count\+1, state updates, component re-renders, count has changed so effect runs again, creating an infinite loop. The browser freezes briefly then throws 'Maximum update depth exceeded'. Developer initially thinks the dependency array is wrong and tries \[\], but then ESLint warns about missing dependency. They realize they need to either use setCount\(c => c \+ 1\) with an empty dependency array \(if it should only run once on mount\), or remove the dependency entirely if the logic is wrong. Alternatively, they realize they shouldn't be using state at all for this value and switch to useRef.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T00:14:22.234059+00:00— report_created — created