Splitter is a React component that allows you to split views into resizable panels. Similar to tabs in Visual Studio Code, for example.
Here's a gif of what you can build with Splitter:

Splitter is inspired by Split.js and written as 100% functional component:
- All size calculation is done through CSS using calc with minimal JS. This makes it much faster
- Fully responsive
- No dependencies beside React
- Minimal assumptions about your styling and views
npm install @devbookhq/splitter
# or
yarn add @devbookhq/splitter
import Splitter, { SplitDirection } from '@devbookhq/splitter'
function MyComponent() {
return (
<Splitter>
Tile 1
Tile 2
</Splitter>
);
}
import Splitter, { SplitDirection } from '@devbookhq/splitter'
function MyComponent() {
return (
<Splitter direction={SplitDirection.Vertical}>
Tile 1
Tile 2
</Splitter>
);
}
import Splitter, { SplitDirection } from '@devbookhq/splitter'
function MyComponent() {
return (
<Splitter direction={SplitDirection.Vertical}>
Tile 1
<Splitter direction={SplitDirection.Horizontal}>
Tile 2
<Splitter direction={SplitDirection.Vertical}>
Tile 3
Tile 4
</Splitter>
</Splitter>
</Splitter>
);
}
import Splitter, { SplitDirection } from '@devbookhq/splitter'
function MyComponent() {
function handleResizeStarted(gutterIdx: number) {
console.log('Resize started!', gutterIdx);
}
function handleResizeFinished(gutterIdx: number, newSizes: number[]) {
console.log('Resize finished!', gutterIdx, newSizes);
}
return (
<Splitter
direction={SplitDirection.Vertical}
onResizeStarted={handleResizeStarted}
onResizeFinished={handleResizeFinished}
>
Tile 1
Tile 2
</Splitter>
);
}
To see more examples check out the examples section.
Check the example folder or the CodeSandbox project.
- Horizontal
- Vertical
- Nested
- Styled gutter
- Minimal tile size
- Initial tile sizes
- Scrollable tiles
- Get sizes of tiles
$ claude mcp add splitter \
-- python -m otcore.mcp_server <graph>