Use useEffect to synchronize components with timers, subscriptions, network connections, and non-React systems. Separate event-driven work from synchronization and remove effects that only duplicate rendering logic.