import * as React from "react"; const MOBILE_BREAKPOINT = 768; export function useIsMobile() { // Initialize with the actual value (not undefined) to avoid hydration mismatch // where !isMobile briefly evaluates to true on mobile before useEffect fires. const [isMobile, setIsMobile] = React.useState(() => { if (typeof window === "undefined") return false; return window.innerWidth < MOBILE_BREAKPOINT; }); React.useEffect(() => { const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`); const onChange = () => { setIsMobile(window.innerWidth < MOBILE_BREAKPOINT); }; mql.addEventListener("change", onChange); setIsMobile(window.innerWidth < MOBILE_BREAKPOINT); return () => mql.removeEventListener("change", onChange); }, []); return isMobile; }