Skip to content
Elements

useWindowSize

Tracks the browser window dimensions as reactive Observable<number> values for width and height. Supports inner, outer, and visual viewport modes, and updates on resize and orientation change. SSR-safe: returns initialWidth/initialHeight (default 0) when window is not available.

Window Size

Resize the browser window to see the values update.

width
0px
height
0px
import {
const useWindowSize: (options?: DeepMaybeObservable<UseWindowSizeOptions>) => UseWindowSizeReturn
useWindowSize
} from "@usels/web";
function
function Component(): JSX.Element
Component
() {
const
const size$: any
size$
=
function useWindowSize(options?: DeepMaybeObservable<UseWindowSizeOptions>): UseWindowSizeReturn

Framework-agnostic reactive window size tracker.

Tracks the browser window dimensions and updates on resize and orientation change. Supports inner, outer, and visual viewport modes. Must be called inside a useScope factory.

useWindowSize
();
return (
<
JSX.IntrinsicElements.p: DetailedHTMLProps<HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>
p
>
{
const size$: any
size$
.
any
width
.
any
get
()} × {
const size$: any
size$
.
any
height
.
any
get
()}
</
JSX.IntrinsicElements.p: DetailedHTMLProps<HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>
p
>
);
}
const size$ = useWindowSize({ includeScrollbar: false });
const size$ = useWindowSize({ type: "outer" });
const size$ = useWindowSize({ type: "visual" });
const size$ = useWindowSize({ initialWidth: 1280, initialHeight: 800 });
ParameterTypeDescription
optionsUseWindowSizeOptions (optional)-
OptionTypeDefaultDescription
initialWidthnumber--
initialHeightnumber--
listenOrientationboolean--
includeScrollbarboolean--
type"inner" | "outer" | "visual"--
windowWindowSource--

UseWindowSizeReturn

NameTypeDescription
peek{ (): { width: number; height: number; }; (): { width: number; height: number; } & NullablePropsIf<Pick<{ width: number; height: number; }, never>, false>; }-
get(trackingType?: TrackingType | GetOptions) => { width: number; height: number; }-
onChange(cb: ListenerFn<{ width: number; height: number; } & NullablePropsIf<Pick<{ width: number; height: number; }, never>, false>>, options?: { trackingType?: TrackingType; initial?: boolean | undefined; immediate?: boolean | undefined; noArgs?: boolean | undefined; } | undefined) => () => void-
set{ (value: (prev: { width: number; height: number; }) => { width: number; height: number; }): void; (value: Observable<{ width: number; height: number; }>): void; (value: ImmutableObservableBase<{ width: number; height: number; } & NullablePropsIf<...>> | ((key: string) => any) | Promise<...> | ValueOrFunctionKeys<.....-
delete() => void-
assign(value: Partial<{ width: number; height: number; } & NullablePropsIf<Pick<{ width: number; height: number; }, never>, false>>) => Observable<{ width: number; height: number; } & NullablePropsIf<...>>-
widthObservablePrimitive<number>-
heightObservablePrimitive<number>-

View on GitHub