React Hooks Patterns/Respond to media queries

Expose a boolean that tracks a CSS media query.

Section: Common UI Hooks

Respond to media queries

tsx
tsx
function useMediaQuery(query: string) {
  const [matches, setMatches] = useState(false);
  useEffect(() => {
    const media = window.matchMedia(query);
    setMatches(media.matches);
    const onChange = () => setMatches(media.matches);
    media.addEventListener('change', onChange);
    return () => media.removeEventListener('change', onChange);
  }, [query]);
  return matches;
}
Explanation

Useful for responsive behavior that components need to know about in JavaScript.

Learn the surrounding workflow

Compare similar commands or jump into common fixes when this command is part of a bigger troubleshooting path.

Related commands

Same sheet · prioritizing Common UI Hooks
Track previous value
Store the previous render’s value.
OpenIn sheettsxsame section
Persist state to localStorage
Sync component state with localStorage.
OpenIn sheettsxsame section
Handle clicks outside an element
Close menus or popovers when a click happens outside a ref.
OpenIn sheettsxsame section
Basic custom hook
Extract reusable stateful logic into a function.
OpenIn sheettsx3 tag match
Custom hook with options object
Prefer options objects for extensible APIs.
OpenIn sheettsx3 tag match
Return object from a custom hook
Use named returns for richer APIs.
OpenIn sheettsx3 tag match