finds.dev← search

// the find

bvaughn/react-resizable-panels

★ 5,308 · TypeScript · MIT · updated Jul 2026

A React library for building resizable panel layouts — think VS Code's sidebar, a split editor, or any drag-to-resize pane interface. It handles horizontal and vertical splits, collapsible panels, keyboard navigation, and layout persistence. Maintained by Brian Vaughn, former React core team member, so the internals are carefully done.

The size unit flexibility is genuinely useful — you can mix percentages, pixels, rem, and viewport units per panel, and the library normalizes them internally. The two-callback pattern (onLayoutChange vs onLayoutChanged) correctly separates 'firing on every pointer move' from 'firing when the user is done dragging', which most competing libraries get wrong. Keyboard accessibility is first-class with proper WAI-ARIA separator roles and attributes, not bolted on. The imperative API (panelRef.collapse(), resize(), isCollapsed()) is well-designed for cases where you need to drive layout programmatically rather than through drag interaction.

The Panel constraint that elements must be direct DOM children of their parent Group leaks implementation detail into your markup — you can't wrap panels in portals or conditional fragments without fighting the library. Layout persistence is DIY; the library gives you onLayoutChanged and a default layout prop, but you write all the storage logic yourself, which is fine until you hit SSR hydration mismatches (documented but not solved). No built-in animation — collapsing a panel snaps instantly, so you're on your own with CSS transitions around a library that controls display and flex properties it explicitly blocks you from overriding. At 5k stars for a 3-year-old utility library, adoption is solid but not dominant, which means third-party integrations and ecosystem tooling are thin.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →