Skip to content

useResizeObserver

Observes one or more elements for size changes using the ResizeObserver API. Targets can be Ref$, MaybeElement, or a plain Element.

width: 0pxheight: 0px
import { useCallback } from "react";
import { useRef$, useResizeObserver } from "@usels/core";
function Component() {
const el$ = useRef$<HTMLDivElement>();
const handleResize = useCallback<ResizeObserverCallback>((entries) => {
const { width, height } = entries[0].contentRect;
console.log(width, height);
}, []);
useResizeObserver(el$, handleResize);
return <div ref={el$} />;
}
useResizeObserver(el$, handleResize, { box: "border-box" });
const { stop } = useResizeObserver(el$, handleResize);
stop();
const { isSupported$ } = useResizeObserver(el$, handleResize);
console.log(isSupported$.get()); // Observable<boolean>
export { normalizeTargets } from "@usels/core/shared/normalizeTargets/index";
export interface UseResizeObserverOptions {
box?: "content-box" | "border-box" | "device-pixel-content-box";
}
export interface UseResizeObserverReturn {
isSupported$: Observable<boolean>;
stop: () => void;
}
export declare function useResizeObserver(target: MaybeElement | MaybeElement[], callback: ResizeObserverCallback, options?: UseResizeObserverOptions): UseResizeObserverReturn;

View on GitHub

  • tigerwest
  • a7392ab 2026-03-06 - feat(core,browser): add sync strategy hooks (tigerwest)