Components

Resizable

Accessible, draggable panel groups for building split layouts — sidebars, editors, and dashboards — that the user can resize horizontally or vertically.

Basic usage

Wrap panels in a ResizablePanelGroup with a fixed height, and drag the divider to resize.

Sidebar
Content

Vertical

Set direction="vertical" to stack panels and resize along the y-axis.

Header
Body

With handle

Pass withHandle to render a visible grip affordance that makes the divider easier to find and grab.

One
Two

Nested groups

Nest a vertical group inside a horizontal panel to compose full IDE-style layouts.

Nav
Editor
Terminal

Props

ResizablePanelGroup

PropTypeDefaultDescription
directionrequired'horizontal' | 'vertical'Axis the panels are laid out and resized along.
autoSaveIdstringPersists panel sizes to localStorage under this id across reloads.
onLayout(sizes: number[]) => voidFires with the new percentage sizes whenever the layout changes.
classNamestringAdditional Tailwind classes — set a fixed height here.
...restPanelGroupPropsAll react-resizable-panels PanelGroup props are forwarded.

ResizablePanel

PropTypeDefaultDescription
defaultSizenumberInitial size as a percentage (0–100) of the group.
minSizenumber10Smallest size the panel can be dragged to, as a percentage.
maxSizenumber100Largest size the panel can be dragged to, as a percentage.
collapsiblebooleanfalseAllows the panel to collapse below minSize to a collapsedSize.
collapsedSizenumber0Size the panel snaps to when collapsed.
ordernumberExplicit order when panels are conditionally rendered.
...restPanelPropsAll react-resizable-panels Panel props are forwarded.

ResizableHandle

PropTypeDefaultDescription
withHandlebooleanfalseRenders a visible grip handle in the center of the divider.
disabledbooleanfalsePrevents the handle from being dragged or focused.
classNamestringAdditional Tailwind classes to merge onto the divider.
...restPanelResizeHandlePropsAll react-resizable-panels PanelResizeHandle props are forwarded.

Accessibility

  • Each handle is a focusable role="separator" exposing aria-valuenow, aria-valuemin, and aria-valuemax so assistive tech announces panel sizing.
  • Handles are keyboard-operable — focus with Tab and resize with the arrow keys; Home / End jump to the min and max sizes.
  • A focus-visible ring using the brand gold ring token appears on keyboard focus so the active divider is always visible.
  • The visible grip rendered by withHandle is decorative; the larger invisible hit area keeps the pointer target comfortable without enlarging the visual divider.