Headless, recursive, drag-and-drop workspace layout engine for React. A modern successor to react-mosaic and golden-layout. Build bento cockpits, multi-tab IDEs, and custom split views without grid constraints.
Test Zeugma right here. Drag tabs to rearrange, grab resizer handles between panels, or configure split limits using the top toolbar.
Searching for a modern alternative to react-mosaic, react-grid-layout, or golden-layout? Here is how react-zeugma redefines spatial workspace engineering for React 18 & 19.
react-mosaic proved that binary tree partitioning is superior to flat grids. react-zeugma takes that proven mathematical model and strips away legacy CSS wrappers, adds native multi-tab docking, and brings full React 18 & 19 concurrent reactivity.
Flat 12-column grids break down when users need recursive side-by-side viewports, diff inspectors, or nested bento layouts. With Zeugma, splitting a pane is local to its parent divider — with zero cascading reflows across distant siblings.
golden-layout and early window managers rely on imperative DOM manipulation that fights against React state synchronization. react-zeugma is built from the ground up as a pure React library weighing just ~4.8 kB gzipped.
| Capability | react-zeugma | react-mosaic | react-grid-layout | golden-layout |
|---|---|---|---|---|
| Layout Topology | Recursive Binary Tree (Arbitrary split depth) | Binary Tree (Arbitrary split depth) | Flat 12-Column Grid (Row/col locked) | Multi-root Tree (Stack/row/col) |
| Headless / Styling | 100% Headless & Style-Agnostic | Opinionated CSS / Blueprint theme | Inline transforms / CSS styles | Heavy bundled CSS/LESS themes |
| React 18 & 19 Support | Full Concurrent Mode & useSyncExternalStore | Legacy lifecycle hooks (React 16-17 era) | React 18 compatible | Imperative DOM wrapper layer |
| Multi-Tab Pane Docking | Native multi-tab stacks & tab drag-transfer | Single widget per node (No tab stacks) | No native tabs (Requires manual nesting) | Built-in tab headers |
| Native Multi-Window Popouts | Native popout window with synced state & CSS | No native popout support | No native popout support | Popout window support (complex bridge) |
| Re-render Isolation | 0 layout reflows (Decoupled widget metadata) | Parent re-renders on node state change | Cascading recalculation on sibling change | DOM mutations bypass React tree |
| Bundle Footprint | ~4.8 kB gzipped (Zero CSS bloat) | ~30 kB (Excluding Blueprint CSS) | ~45 kB | ~60+ kB (Excluding theme assets) |
Create recursive split views by passing your layout tree and render functions. No complex configuration files or CSS overrides.