Back to Blog
ReactHooksuseSyncExternalStoreState Management

React useSyncExternalStore Hook Guide

Master the React useSyncExternalStore hook for subscribing to external stores with concurrent rendering support.

B
Bootspring Team
Engineering
December 5, 2019
7 min read

The useSyncExternalStore hook subscribes to external data sources with concurrent rendering support. Here's how to use it.

Basic Usage#

Loading code block...

Creating a Store#

Loading code block...

Server-Side Rendering#

Loading code block...

Selecting Store Data#

Loading code block...

Browser APIs#

Loading code block...

History/Router Integration#

Loading code block...

WebSocket Connection#

Loading code block...

Redux-like Store#

Loading code block...

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.

Share this article

Help spread the word about Bootspring

Related articles