Fix React hooks, state management, performance issues, SSR, Next.js, production bugs, and enterprise React problems
useEffect runs infinitely because dependency array includes an object that changes on every render.
Event listeners added in useEffect are never removed, causing memory leaks when component unmounts.
State updates use stale values because setState callback receives old state, not current.
Multiple rapid requests can return out of order, causing UI to show wrong data.
Child components re-render on every parent state change even when props don't change.
All consumers re-render when any context value changes, even if they only use one value.
Server-rendered HTML doesn't match client render, causing hydration errors.
useCallback dependencies are missing, causing stale closure values.
Heavy computation runs on every render instead of being memoized.
List items rendered without unique keys cause React reconciliation problems and performance issues.
Multiple setState calls trigger separate renders instead of being batched.
useEffect has missing dependencies, causing it to run unnecessarily or miss updates.
Props are passed through multiple components unnecessarily, causing prop drilling and re-renders.
Input value is not controlled by state, causing uncontrolled component warnings.
Error boundaries don't catch errors in async operations, causing unhandled errors.
useRef value is reset on re-render because ref object is recreated.
State updates in concurrent mode cause race conditions and stale closures.
Modal or tooltip needs to render outside component tree but is constrained by parent.
Suspense boundary doesn't show loading state while data is being fetched.
Visual flicker occurs because DOM updates happen after paint when useEffect should use useLayoutEffect.
Custom hook violates rules of hooks by calling hooks conditionally or in loops.
Next.js server component tries to import client component without 'use client' directive.
Cache doesn't update after mutation, showing stale data to users.
Zustand store state is lost on page refresh because it's not persisted.
User can navigate away with unsaved changes because navigation isn't blocked.