Files
thrilltrack-explorer/src/hooks/use-mobile.tsx
pac7 852adc51d6 Improve mobile detection hook for better cross-device compatibility
Update useIsMobile hook to use MediaQueryList.matches for detecting mobile devices, addressing SSR compatibility and improving initial value setting and event listening.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: fe5b902e-beda-40fc-bf87-a3c4ab300e3a
Replit-Commit-Checkpoint-Type: intermediate_checkpoint
2025-10-08 12:54:03 +00:00

31 lines
823 B
TypeScript

import * as React from "react";
const MOBILE_BREAKPOINT = 768;
export function useIsMobile(): boolean | undefined {
const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined);
React.useEffect(() => {
// Guard against server-side rendering
if (typeof window === 'undefined') return;
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
// Use MediaQueryList.matches instead of window.innerWidth for consistency
const onChange = () => {
setIsMobile(mql.matches);
};
// Set initial value
setIsMobile(mql.matches);
// Listen for changes
mql.addEventListener("change", onChange);
// Cleanup listener on unmount
return () => mql.removeEventListener("change", onChange);
}, []);
return isMobile;
}