typescriptbeginner

usePageVisibility Hook

Detects when the page is hidden or visible using the Page Visibility API.

typescript
import { useState, useEffect } from 'react';

export function usePageVisibility(): boolean {
  const [isVisible, setIsVisible] = useState(!document.hidden);

  useEffect(() => {
    const handler = () => setIsVisible(!document.hidden);
    document.addEventListener('visibilitychange', handler);
    return () => document.removeEventListener('visibilitychange', handler);
  }, []);

  return isVisible;
}

// Usage:
// const isVisible = usePageVisibility();
// useEffect(() => {
//   if (isVisible) refetchData();
// }, [isVisible]);

Use Cases

  • Pausing animations
  • Stopping polling when tab is hidden

Tags

Related Snippets

Similar patterns you can reuse in the same workflow.