The useSyncExternalStore hook subscribes to external data sources with concurrent rendering support. Here's how to use it.
Basic Usage#
Creating a Store#
Server-Side Rendering#
Selecting Store Data#
Browser APIs#
History/Router Integration#
WebSocket Connection#
Redux-like Store#
Best Practices#
Usage:
✓ Use for external data sources
✓ Provide server snapshot for SSR
✓ Memoize selectors
✓ Keep snapshots immutable
Store Design:
✓ Return same object if unchanged
✓ Notify only on actual changes
✓ Clean up subscriptions
✓ Handle edge cases
Performance:
✓ Select minimal data needed
✓ Avoid creating objects in getSnapshot
✓ Use stable selector references
✓ Batch updates when possible
Avoid:
✗ Using for React-managed state
✗ Mutating snapshot data
✗ Expensive getSnapshot logic
✗ Missing server snapshot
Conclusion#
The useSyncExternalStore hook safely integrates external data sources with React's concurrent rendering. Use it for browser APIs, WebSocket connections, global stores, and third-party state management. Always provide a server snapshot for SSR compatibility and use selectors to optimize re-renders.