Report #41342
[bug\_fix] Maximum update depth exceeded in useEffect dependency array
Include all reactive dependencies in the array, use functional updates \`setState\(prev => ...\)\` to avoid depending on current state, or use \`useRef\` for values that shouldn't trigger re-renders
Journey Context:
You write a \`useEffect\` hook that synchronizes a prop to local state with \`setValue\(prop\)\`, and include \`\[prop\]\` in the dependency array. Immediately, the page freezes and crashes with "Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate." You check your dependencies and realize you included the state variable itself in the array, creating an infinite loop: the effect runs → updates state → state change triggers effect → repeat. You try removing the dependency but ESLint warns about exhaustive deps. You realize you need the functional update form \`setCount\(c => c \+ 1\)\` so the effect doesn't depend on the current state value, or you use \`useMemo\`/\`useCallback\` to stabilize object references. Alternatively, you move the logic outside \`useEffect\` entirely if it's derived state. The fix works because React's dependency array determines when to re-run the effect; including the state being updated creates a circular dependency. Functional updates break this cycle by not requiring the current state in the closure.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T23:52:04.046583+00:00— report_created — created