Skip to content

useDocumentVisibility

Edit

Returns the current document visibility state.

useDocumentVisibility.ts
import { useSyncExternalStore } from "react";
const subscribeToVisibility = (notify: () => void): (() => void) => {
if (typeof document === "undefined") return () => {};
document.addEventListener("visibilitychange", notify);
return () => document.removeEventListener("visibilitychange", notify);
};
const getVisibility = (): DocumentVisibilityState =>
typeof document === "undefined" ? "hidden" : document.visibilityState;
/** Returns the current document visibility state. */
export const useDocumentVisibility = (): DocumentVisibilityState =>
useSyncExternalStore(subscribeToVisibility, getVisibility, () => "hidden");
Terminal
wget -O src/hooks/useDocumentVisibility.ts https://raw.githubusercontent.com/jrTilak/lazykit/HEAD/registry/react-hooks/useDocumentVisibility.ts
useDocumentVisibility.example.tsx
import { useDocumentVisibility } from "./useDocumentVisibility";
export const DocumentVisibilityExample = () => {
const visibility = useDocumentVisibility();
return <p>Document is {visibility}.</p>;
};

This hook takes no arguments.

DocumentVisibilityState. The server snapshot is "hidden".