Report #26265
[bug\_fix] React Hook useEffect has a missing dependency: 'someFunction'. Either include it or remove the dependency array \(ESLint react-hooks/exhaustive-deps\)
Include all values referenced inside useEffect \(props, state, functions\) in the dependency array. If including a function causes infinite loops because the function reference changes every render, wrap the function in useCallback or move the function definition inside useEffect.
Journey Context:
Developer writes \`useEffect\(\(\) => \{ fetchUser\(userId\) \}, \[\]\)\` intending to run once on mount. ESLint warns that \`userId\` is missing from deps. Developer ignores it. Later, when \`userId\` changes from URL params, the effect doesn't re-run, showing stale data. Developer adds \`userId\` to deps: \`\[userId\]\`. Now it works for data updates, but if \`fetchUser\` is defined in the component \(not outside\), it triggers infinite loop because \`fetchUser\` is recreated every render. Developer tries to add \`fetchUser\` to deps but that makes it loop forever. Realizes \`fetchUser\` should be wrapped in \`useCallback\` with its own deps, or the fetch logic should be moved inside the useEffect \(so it's not a dependency\). The established fix is to either use \`useCallback\` for the function or define the function inside useEffect, ensuring the dependency array correctly reflects all reactive values without causing infinite renders.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T22:29:08.588912+00:00— report_created — created