FrontendDeveloper.in

React question detail

What is the useSyncExternalStore hook?

The useSyncExternalStore hook is designed to subscribe to external stores (non-React state sources) in a way that's compatible with concurrent rendering. It's primarily used by library authors for state management libraries.

Syntax

const state = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot?);
  • subscribe: Function to subscribe to the store, returns an unsubscribe function
  • getSnapshot: Function that returns the current store value
  • getServerSnapshot: Optional function for SSR that returns the initial server snapshot

Example: Browser Online Status

import { useSyncExternalStore } from 'react';

function getSnapshot() {
return navigator.onLine;
}

function subscribe(callback) {
window.addEventListener('online', callback);
window.addEventListener('offline', callback);
return () => {
window.removeEventListener('online', callback);
window.removeEventListener('offline', callback);
};
}

function useOnlineStatus() {
return useSyncExternalStore(subscribe, getSnapshot, () => true);
}

function StatusBar() {
const isOnline = useOnlineStatus();
return <h1>{isOnline ? '✅ Online' : '❌ Disconnected'}</h1>;
}

This hook ensures that when the external store changes, React re-renders consistently without tearing (showing inconsistent data).

Back to all React questions
Get LinkedIn Premium at Rs 399