useOnlineStatus
EditTracks browser online and offline status with an SSR-safe snapshot.
import { useSyncExternalStore } from "react";
const subscribeToOnlineStatus = (notify: () => void): (() => void) => { if (typeof window === "undefined") return () => {}; window.addEventListener("online", notify); window.addEventListener("offline", notify); return () => { window.removeEventListener("online", notify); window.removeEventListener("offline", notify); };};
const getOnlineStatus = (): boolean => typeof navigator === "undefined" ? true : navigator.onLine;
/** Tracks browser online/offline events with an SSR-safe snapshot. */export const useOnlineStatus = (): boolean => useSyncExternalStore(subscribeToOnlineStatus, getOnlineStatus, () => true);Download
Section titled “Download”wget -O src/hooks/useOnlineStatus.ts https://raw.githubusercontent.com/jrTilak/lazykit/HEAD/registry/react-hooks/useOnlineStatus.tstemp_dir="$(mktemp -d)" && bunx degit jrTilak/lazykit/registry/react-hooks "$temp_dir" && mv "$temp_dir/useOnlineStatus.ts" src/hooks/useOnlineStatus.ts && rm -r "$temp_dir"Examples
Section titled “Examples”import { useOnlineStatus } from "./useOnlineStatus";
export const OnlineStatusExample = () => { const isOnline = useOnlineStatus(); return <p role="status">{isOnline ? "Online" : "Offline"}</p>;};This hook takes no arguments.
Returns
Section titled “Returns”A boolean from navigator.onLine; the server snapshot is optimistically
true. This is the browser’s connectivity signal, not proof that a particular
server is reachable.