// Every useEffect with subscriptions has cleanup useEffect(() => { const subscription = api.subscribe(); return () => subscription.unsubscribe(); // ✓ }, []); // Event listeners are removed useEffect(() => { window.addEventListener('resize', handler); return () => window.removeEventListener('resize', handler); // ✓ }, []); // Timers are cleared useEffect(() => { const timer = setInterval(poll, 1000); return () => clearInterval(timer); // ✓ }, []); __ __