useMediaQuery
Tracks a CSS media query string as a reactive Observable<boolean>.
Subscribes to MediaQueryList change events and updates automatically.
SSR-safe: accepts an optional ssrWidth to statically evaluate min-width/max-width queries on the server.
isLargeScreenfalse
prefersDarkfalse
import { useMediaQuery } from "@usels/core";
function Component() { const isLarge$ = useMediaQuery("(min-width: 1024px)");
return <p>{isLarge$.get() ? "Large screen" : "Small screen"}</p>;}Multiple queries
Section titled “Multiple queries”const isLarge$ = useMediaQuery("(min-width: 1024px)");const prefersDark$ = useMediaQuery("(prefers-color-scheme: dark)");SSR with ssrWidth
Section titled “SSR with ssrWidth”const isLarge$ = useMediaQuery("(min-width: 1024px)", { ssrWidth: 1280 });ssrWidth is used to statically evaluate the query when window is unavailable,
preventing a layout shift between the server-rendered markup and the first client render.
Type Declarations
Section titled “Type Declarations”export declare function evaluateSSRQuery(query: string, ssrWidth: number): boolean;export interface UseMediaQueryOptions { ssrWidth?: number;}export type UseMediaQueryReturn = Observable<boolean>;export declare function useMediaQuery(query: MaybeObservable<string>, options?: UseMediaQueryOptions): UseMediaQueryReturn;Source
Section titled “Source”Contributors
Section titled “Contributors”- tigerwest
Changelog
Section titled “Changelog”a7392ab2026-03-06 - feat(core,browser): add sync strategy hooks (tigerwest)