v2.5 • UI • 11kb gzipped • MIT
PulseGrid
Headless data table with sorting and virtual scroll that stays smooth at a hundred thousand rows.

// why pulsegrid
A hundred thousand rows
Virtualisation is measured, not guessed. Row heights can vary and the scrollbar still lands exactly where the user expects.
// stack
Bring your own markup
PulseGrid computes what should be visible. Rendering is entirely yours, so the table matches the rest of your product.
PulseGrid started as a single file in a client project and stayed small on purpose. It does one job, it does it in 11kb gzipped, and it has no runtime dependencies.
Getting started
Install it, import it, call it:
npm i pulsegrid-js
Virtualisation is measured, not guessed. Row heights can vary and the scrollbar still lands exactly where the user expects.
What it does not do
It does not manage your state, style your components or ship a plugin system. Those are your decisions, and keeping them out is what keeps the bundle honest.
- Variable row heights
- Full keyboard grid
- MIT licensed, commercially friendly
Features
Variable row heights
Measured on the fly and cached, so mixed content does not break scroll position.
Full keyboard grid
Arrow keys, Home, End, Page Up and Page Down all behave the way a spreadsheet user expects.
Container aware
Adapts to the box it is given rather than the viewport, so it works in a sidebar.
Accessibility audited
Tested against screen readers on three platforms, with the findings published in the repository.
ESM and types
Ships module and CommonJS builds with hand-written type definitions and source maps.
Styling stays yours
PulseGrid sets no colours and no spacing. Every visual decision belongs to your design system.
Get PulseGrid v2.5
10 files • .min.js 11kb • .zip 84kb • sha384 verified
Changelog
- Variable row height measurement
- Keyboard grid navigation complete
- Sort comparators now stable
- Fixed a memory leak on repeated teardown
- Source maps now published with every build
- Type definitions rewritten by hand
- Dropped the last runtime dependency
// related
Related products
ToastKit
Accessible toast notifications in two kilobytes, with a queue that never talks over itself.
View →DialogJS
Focus-trapped dialogs built on the native element, with the edge cases already handled.
View →MenuForge
Keyboard-complete menus and menubars that follow the authoring practices to the letter.
View →Ship the interface today.
MIT licensed. Commercial friendly. Five-minute setup.