Handsontable DataGrid ships what engineers reach for first: virtualization, formulas, keyboard editing and theming. The list below is all of it, grouped by what each feature is for.
- GitHub stars
- —
- Plugins
- 42
- Rows benchmarked
- 1M
- Long-term support
- 24 months
A detailed feature list
v18.1.2
Data
Bind an array of arrays or an array of objects, map a column to any property, and reach nested ones by path.
Server-side data
Load rows from your server as they are needed, with your own create, update and delete callbacks — sorting, filtering and pagination then run server-side too.
Order rows by a column, ascending or descending, from its header.
Order by several columns at once, each with its own direction.
Narrow the rows in view by value, by condition, or by searching inside the column.
Find matching cells across the grid and hand them to a renderer to mark.
Split a long dataset into pages, with a footer that walks them.
Sum, average, minimum, maximum, count or your own function under a column, recalculated as the data changes.
Write the current data out as a CSV file, or as XLSX when your app supplies ExcelJS.
Collaborative editing
Patterns and hooks for several people editing one grid at once, without the edits overwriting each other.
Over two hundred hooks around every change the grid makes, so your app can see it, block it or act on it.
Editing
The default: a plain string, edited in place.
Numbers formatted and aligned as numbers, and sorted as numbers rather than as text.
A date with a calendar picker in the editor.
A time of day, validated against its own format.
A date and a time in one cell, formatted for the reader’s locale.
A boolean as a checkbox, toggled by click or by the space bar.
A short, fixed list of values in a native select.
A longer list in the grid’s own dropdown, restricted to the values you allow.
A dropdown that filters as you type, and can accept a value that is not on the list.
Several values from one list, held in a single cell.
A value that is stored as typed and displayed masked.
A whole grid as the editor of one cell, for picking a row out of a reference table.
Compose your own type out of a renderer, an editor and a validator, and register it by name.
Constrain what a cell accepts, with your own check — synchronous or asynchronous — and say what happens when it fails.
Lock a cell, column or range against editing while it stays selectable and copyable.
Drag the fill handle to repeat a selection across a range, vertically, horizontally or both.
Move ranges between the grid, Excel and Google Sheets — with control over paste mode, range limits and whether headers travel.
Select cells, rows, columns or several ranges at once, and resize a selection by its handles.
Drag a selected range and drop it somewhere else.
Row pre-populating
Keep spare rows at the end of the grid, shaped by a schema, so a new entry never waits for a button.
Adding and removing rows and columns
Insert and delete rows and columns, from the menu or from your own code.
Layout
Pin edges in place so headers and keys stay put while the rest scrolls — set in config, or frozen by the reader from the menu.
Take rows or columns out of view without taking them out of the data.
Row trimming
Remove rows from the set the grid works on, so nothing downstream counts them.
Drag a row or a column to a new position and keep the order.
Drag a column or row edge to resize it, and keep the size that was chosen.
Automatic sizing
Measure the content and size columns and rows to fit what is actually in them.
Spread spare width across the columns so the grid fills its container.
Group columns under shared headers, several levels deep, with headers that can span rows as well as columns.
Collapse a header group down to one column and open it again.
Join a range into one cell that spans the rows and columns it covers.
Parent and child rows as a tree that collapses and expands, with the children moving with the parent.
A header column down the left, which can stay bound to its row through sorting, hiding and moving.
Scrolling
Scroll to any cell from code, snap the viewport to it, and drag past the edge to keep going.
Formatting
Decide where content sits inside a cell or a range of cells, horizontally and vertically.
Style a cell from its own value, through a function that runs per cell rather than a fixed rule list.
Draw a border around any cell or range, on any side, in any weight and color.
Render a cell as your own markup — a badge, a sparkline, a link, an icon.
Three shipped themes, each with a light and a dark variant that can follow the system setting.
Theme customization
Restyle everything from CSS custom properties — around 250 tokens, from cell padding to selection color.
Formulas
Over 400 Excel-compatible functions, evaluated by the HyperFormula engine.
Named expressions
Name a formula once on the HyperFormula engine you pass the plugin, and reference it anywhere.
Multi-sheet formulas
Point a formula at a cell in another grid, where both grids share one HyperFormula engine.
Interface & controls
Right-click actions for rows, columns and selections, and your own entries beside them.
The same actions from a button in the column header, for a grid without right-click.
Step back and forward through edits — and through inserts, deletes, moves, merges and sorts, not only cell values.
Attach a note to a cell and show it when the cell is reached.
Dialogs
Put a modal over the grid — your own content, or a ready confirm — without reaching for a second UI library.
Toasts the grid owns, with a variant, a position, a lifetime and buttons of your own.
The grid’s own overlay while rows are still on their way, with its title and icon under your control.
Say something useful when there are no rows, instead of showing an empty frame.
Icon pack
The grid’s own icon set, usable in its chrome and inside your cells.
Layout slots
Put your own toolbar or footer into the grid’s frame rather than around it.
Accessibility & internationalization
Accessibility
Managed ARIA roles and state across the grid, its headers and its cells — row and column counts, sort state, selection, validity, expansion.
Accessibility conformance report (VPAT)
A published VPAT, so a procurement review has a document to read rather than a claim to take on trust.
The shortcuts a spreadsheet user already knows, working out of the box.
Custom shortcuts
Register your own key combinations, scoped to a context, through the shortcut manager.
Navigable headers
Let the keyboard reach the headers themselves, not just the cells under them.
Focus scopes
Decide whether the grid holds focus or hands it back to the page around it.
The grid’s own interface — menus, filters, validation — in 21 shipped languages.
Dates, times and numbers entered and displayed the way the reader’s locale writes them.
Lay the whole grid out right-to-left for Arabic, Hebrew and Farsi — headers, selection and scrollbar included.
IME support
Input-method editors for Chinese, Japanese and Korean, so composing text in a cell behaves.
Performance & scale
Virtualization
Render only what is on screen, on both axes, so row count stops deciding how the page performs.
Batch operations
Wrap a run of changes so the grid renders once at the end instead of after each one.
Performance tuning
The settings that decide how much work a render does — and which ones to reach for first when it is too slow.
Platform & integration
React, Angular and Vue wrappers
First-party wrappers for all three, each with its own documentation, over the same API as vanilla JavaScript.
TypeScript types
Types shipped with the package, covering settings, hooks and the plugin APIs.
Modules and bundle size
Import only the plugins, cell types and translations you use, and leave the rest out of the bundle.
Custom builds
Build the library yourself when the packaged bundles are not the shape your pipeline wants.
Custom plugins
Extend the grid itself with a plugin of your own, on the same base class the shipped ones use.
Shadow DOM
Runs inside a shadow root, for web components and hosts like Salesforce Lightning.
Touch devices
Finger-tracked selection handles and drag-to-scroll on phones and tablets.
Security
How the grid handles untrusted content, and what to configure when your page runs under a strict policy.
Supported browsers
A stated support matrix, so nobody has to find the boundary by shipping.
Testing
Guidance for driving the grid from your own test suite, whatever runner you use.
AI tooling
Skills for Claude Code
A packaged skill that teaches a coding agent this grid’s API, so what it writes compiles against the version you run.
Docs MCP server
The documentation as an MCP server, so an agent can look an answer up instead of guessing one.
AI docs assistant
Ask the documentation a question in the documentation, and get the passage it came from.
AI theme builder
Describe the look you want and get a theme built from the grid’s own tokens.
Make every data point count. Turn millions of them into actionable wisdom.
Let’s make it easier.
Smoother. Faster. All Handsontable.