Hint
Parent renders, new object/function props, context value changes — diagnose with React DevTools Profiler
Common causes:
// ❌ New object every render — breaks memo
// new {} each time
doWork()} /> // new fn each time
// new [] each time
// ❌ Context providing unstable reference
function Provider({ children }) {
const [user, setUser] = useState(null);
return (
{/* new object every render! */}
{children}
);
}
// ✅ Stable context value
const value = useMemo(() => ({ user, setUser }), [user]);
Diagnosis tools:
why-did-you-render library — logs unnecessary renders with reasons