A data grid that never slows down. Scroll through millions of rows as smoothly as the first hundred — editing, sorting, and selecting included.
Most grid libraries struggle past 100k rows. rs-grid is designed from the ground up for virtualization, performance, and long-term maintainability.
Only visible cells are rendered. Memory stays constant whether you have 1K or 10M rows.
Double-click to edit cells. Text inputs, dropdowns with icons. Full undo/redo history.
Per-column sorting with visual indicators. Text filtering, combinable across columns.
Cut, copy, paste with Ctrl+C/X/V. TSV format, compatible with Excel and Google Sheets.
Resize by drag, auto-fit on double-click, reorder by drag-and-drop, pin columns to the left.
Number, currency, percentage, boolean, images, image+text combos. Custom formatters for full control.
Arrow keys, Shift+Arrow for selection, Enter to edit, Escape to cancel. All spreadsheet shortcuts built in.
Ctrl+F to search across all cells. Matches highlighted in-place with next/previous navigation.
Style everything via CSS custom properties. Light, dark, or build your own. Hot-swap at runtime.
Async pagination with LRU cache. Sort and filter can be delegated to your backend.
Right-click menu with cut, copy, paste, pin columns. Fully customizable items and actions.
Zero JavaScript runtime. Core logic compiled to WASM. Works with any framework or vanilla JS.
A strict unidirectional dependency graph keeps each crate focused and independently testable.
rs-grid-coreHeadless logic: model, viewport, selection, hit-testing. No WASM dependency.
rs-grid-sceneConverts GridState to renderer-agnostic ScenePrimitive list.
rs-grid-render-canvasCanvas2D backend via wasm-bindgen. Draws primitives to the DOM.
rs-grid-webBrowser glue: events, DPR, rAF loop, CSS theme parsing.
rs-grid-leptosLeptos CSR component wrapping the full pipeline.
This is a real rs-grid instance running in your browser via WebAssembly. Scroll, select cells, resize columns — all at 60 fps.