📖
Hook 18

useSyncExternalStore

Subscriba em stores externos sem tearing em Concurrent Mode.

📚 O que é

API oficial para integrar stores fora do React (Redux, Zustand, window.matchMedia). Três argumentos: subscribe (registra listener), getSnapshot (lê valor atual), getServerSnapshot (SSR fallback).

✅ Quando usar

Criar lib de state management customizada. Subscribar APIs nativas do browser (matchMedia, online/offline, BroadcastChannel). Integrar stores externos com Concurrent Mode corretamente.

🚫 Quando NÃO usar

State interno do React (use useState/useReducer). Quando a lib já usa internamente (Zustand, Redux Toolkit já fazem isso). Casos simples onde useEffect+useState basta.

👍 Prós
Sem tearing garantido
API oficial (não hack)
Funciona com Concurrent Mode
SSR-safe com getServerSnapshot
👎 Contras
Mais verbose que useEffect
Overkill para casos simples
Só React 18+
🔗 Termos relacionados