diff --git a/app/hooks/useMediaQuery.ts b/app/hooks/useMediaQuery.ts index adf0f65..e184f1e 100644 --- a/app/hooks/useMediaQuery.ts +++ b/app/hooks/useMediaQuery.ts @@ -1,15 +1,13 @@ -import { useState, useEffect } from "react"; +import { useSyncExternalStore } from "react"; export function useMediaQuery(query: string): boolean { - const [matches, setMatches] = useState(false); - - useEffect(() => { - const mq = window.matchMedia(query); - setMatches(mq.matches); - const handler = (e: MediaQueryListEvent) => setMatches(e.matches); - mq.addEventListener("change", handler); - return () => mq.removeEventListener("change", handler); - }, [query]); - - return matches; + return useSyncExternalStore( + (callback) => { + const mq = window.matchMedia(query); + mq.addEventListener("change", callback); + return () => mq.removeEventListener("change", callback); + }, + () => window.matchMedia(query).matches, + () => false + ); }