Skip to content

Getting Started

Installation

bash
npm install @crimson_dev/use-resize-observer

React 19 Required

This library requires React 19.3.0 or later. It uses React 19's automatic batching and startTransition for optimal performance.

Quick Start

tsx
import { useResizeObserver } from '@crimson_dev/use-resize-observer';

const MyComponent = () => {
  const { ref, width, height } = useResizeObserver<HTMLDivElement>();

  return (
    <div ref={ref}>
      {width !== undefined && height !== undefined
        ? `${Math.round(width)} x ${Math.round(height)}`
        : 'Measuring...'}
    </div>
  );
};

What You Get

FeatureValue
Bundle size1.11 kB min+gzip
Runtime dependencies0
React version>= 19.3.0
Module formatESM only
TypeScript6.0+ strict
Box modelscontent-box, border-box, device-pixel-content-box
Worker modeSharedArrayBuffer + Float16Array
SSR/RSCSafe with server entry

With External Ref

tsx
import { useRef } from 'react';
import { useResizeObserver } from '@crimson_dev/use-resize-observer';

const MyComponent = () => {
  const myRef = useRef<HTMLDivElement>(null);
  const { width, height } = useResizeObserver({ ref: myRef });

  return <div ref={myRef}>{width} x {height}</div>;
};

With Callback

tsx
import { useResizeObserver } from '@crimson_dev/use-resize-observer';

const MyComponent = () => {
  const { ref } = useResizeObserver<HTMLDivElement>({
    onResize: (entry) => {
      console.log('Resized:', entry.contentRect);
    },
  });

  return <div ref={ref}>Resize me</div>;
};

Next Steps

Released under the MIT License.