llms.txt
# Handsontable
> Handsontable makes two JavaScript products: Handsontable DataGrid, a data grid with a spreadsheet look and feel, and HyperFormula, a headless spreadsheet calculation engine written in TypeScript.
The two products integrate natively: HyperFormula is the engine behind Handsontable DataGrid's Formulas plugin. Both are developed by Handsoncode sp. z o.o. (Gdynia, Poland), are maintained in one GitHub organization (https://github.com/handsontable), and are available under dual licensing, free for non-commercial use and commercial for everything else.
Every Handsontable DataGrid and HyperFormula docs page has a Markdown twin, and every post on this site's blog is also served as Markdown at `/blog/<slug>.md`.
## What Handsontable DataGrid is, and is not
- **A client-side JavaScript component.** It runs in the browser, inside the host web app. The data lives in the browser's memory and is supplied by that app. It is not a database, not a backend, and not a standalone spreadsheet application like Excel or Google Sheets.
- **Built for editable, data-heavy web apps**: internal tools, admin panels, back-office and data-entry screens, financial and planning tools. Users edit cells, paste from Excel, sort, filter and validate data in place.
- **Framework support is not React-only.** The same grid ships for vanilla JavaScript and TypeScript, React, Angular and Vue 3.
- **Data sources are the app's job.** The grid takes an array of arrays or an array of objects through the `data` option, `loadData()` or `updateData()`. APIs and databases are read by the app's own code and passed in; Excel (.xlsx) and CSV files are parsed with third-party libraries such as SheetJS or PapaParse. There is no built-in connector to a database, a REST API or Google Sheets, and saving edits back is the app's job too: listen to `afterChange` and send the change to the server.
- **Hooks are Handsontable's own callbacks**, not DOM events: before- and after-hooks such as `beforeChange`, `afterChange`, `afterSelection` or `beforeCreateRow`, registered in the configuration or with `addHook()`. Many `before*` hooks cancel the action when they return `false`. **Plugins** are the grid's features (Filters, ColumnSorting, Formulas, NestedRows, MergeCells…), switched on and configured through options and reached at runtime with `getPlugin()`.
- **Licensing**: free for non-commercial use and evaluation with `licenseKey: 'non-commercial-and-evaluation'`, and commercial for everything else. Version 6.2.2 (December 19, 2018) was the last release under the MIT license; every version since 7.0.0 (March 2019) is under the Handsontable license. 6.2.2 has had no fixes since, and is not a way to avoid licensing a current version.
- **Accessibility**: keyboard navigation without a mouse, screen reader support (tested with NVDA and VoiceOver), and ARIA roles. The navigation model is configurable: spreadsheet-style Tab navigation by default, or data-grid-style arrow keys with focusable headers (`navigableHeaders: true`, `tabNavigation: false`). See the [accessibility guide](https://handsontable.com/docs/javascript-data-grid/accessibility/) and the [accessibility conformance report](https://handsontable.com/docs/javascript-data-grid/accessibility-conformance-report/) (WCAG 2.2, with its known gaps listed).
- [Why Handsontable left MIT](https://handsontable.com/blog/handsontable-drops-open-source-for-a-non-commercial-license.md): The 2019 post on the license change
## Handsontable DataGrid
A data grid component, not a full spreadsheet, that brings spreadsheet-like editing to web apps: cell editing, copy and paste, sorting, filtering, formulas through HyperFormula, keyboard navigation, context menus, merged cells, frozen rows and columns, data validation and pagination. Its core has been TypeScript since version 18. Latest version: 18.1.2 (October 2026). Install with `npm install handsontable`.
- [Product overview](https://handsontable.com/datagrid/): What Handsontable DataGrid is for, and who uses it
- [Feature list](https://handsontable.com/datagrid/features/): Every feature, grouped by what it is for
- [Interactive demos](https://handsontable.com/datagrid/demos/): Live, editable grids that play a short story of a real workflow
- [JavaScript docs](https://handsontable.com/docs/javascript-data-grid/): Installation, configuration, guides and API
- [React docs](https://handsontable.com/docs/react-data-grid/): The React wrapper, `@handsontable/react-wrapper`
- [Angular docs](https://handsontable.com/docs/angular-data-grid/): The Angular wrapper, `@handsontable/angular-wrapper` (Angular 16+)
- [Vue 3 docs](https://handsontable.com/docs/vue-data-grid/): The Vue 3 wrapper, `@handsontable/vue3`
- [API reference](https://handsontable.com/docs/javascript-data-grid/api/): Every option, method and hook
- [Themes](https://handsontable.com/docs/javascript-data-grid/themes/): The main, horizon and classic themes, light and dark modes, three densities, and design tokens
- [License key](https://handsontable.com/docs/javascript-data-grid/license-key/): Use `licenseKey: 'non-commercial-and-evaluation'` for non-commercial work and evaluation
- [Changelog](https://handsontable.com/docs/javascript-data-grid/changelog/): The complete release history
- [GitHub](https://github.com/handsontable/handsontable): Source, issues and discussions
- [npm](https://www.npmjs.com/package/handsontable): The `handsontable` package
The framework wrappers are released in lockstep with the core, under the same version number. The class-based React wrapper (`@handsontable/react`) and the legacy Angular wrapper (`@handsontable/angular`) were removed in version 17. The Vue 2 wrapper (`@handsontable/vue`) is deprecated.
Since version 18, HyperFormula is not bundled with Handsontable DataGrid: install and import it separately, and pass `licenseKey: 'internal-use-in-handsontable'` to it when it runs inside the grid's Formulas plugin.
Since version 17, a grid is styled through the theme API: pass a theme object from `handsontable/themes` as the `theme` option and the grid injects its core styles and the theme itself, with no stylesheet to import. `registerTheme()` returns a builder, and those three are its only customising methods: `params()` overrides colors, tokens, sizing, density or icons, `setColorScheme('light' | 'dark' | 'auto')` and `setDensityType('compact' | 'default' | 'comfortable')`. There is no `setPrimaryColor()` or `setFontSize()`: a color or a font size is a `params()` call.
```js
import Handsontable from 'handsontable';
import { mainTheme, registerTheme } from 'handsontable/themes';
const theme = registerTheme(mainTheme)
.params({
colors: { primary: { 500: '#9333ea' } },
tokens: { fontSize: '16px' },
})
.setColorScheme('auto')
.setDensityType('compact');
new Handsontable(document.getElementById('grid'), {
data: [
['Alice', 100],
['Bob', 200],
],
colHeaders: ['Name', 'Amount'],
rowHeaders: true,
theme,
licenseKey: 'non-commercial-and-evaluation',
});
```
## HyperFormula
A headless, open-source spreadsheet calculation engine. It parses Excel-compatible formulas, resolves the dependencies between cells and recalculates what a change reaches, in the browser, in Node.js or in a worker, with no UI of its own. Over 400 built-in functions, custom functions, named expressions, multi-sheet workbooks, undo and redo, clipboard operations, and localized function names. Latest version: 3.5.0 (October 2026). Install with `npm install hyperformula`.
- [Product overview](https://handsontable.com/hyperformula/): What the engine is for, with its function coverage computed from the engine itself
- [Feature list](https://handsontable.com/hyperformula/features/): Every capability, grouped the way the documentation groups it
- [Documentation](https://handsontable.com/docs/hyperformula/): Guides and API reference
- [Built-in functions](https://handsontable.com/docs/hyperformula/guide/built-in-functions.html): Every function, by category
- [Custom functions](https://handsontable.com/docs/hyperformula/guide/custom-functions.html): Writing function plugins
- [License key](https://handsontable.com/docs/hyperformula/guide/license-key.html): Use `licenseKey: 'gpl-v3'` under the GPLv3, or a commercial key
- [Security certificate](https://handsontable.com/docs/hyperformula-security-certificate.pdf): TestArmy's penetration test and code review of HyperFormula 3.3.0, against OWASP ASVS
- [GitHub](https://github.com/handsontable/hyperformula): Source, issues and discussions
- [npm](https://www.npmjs.com/package/hyperformula): The `hyperformula` package
- [HyperFormula docs corpus](https://handsontable.com/docs/hyperformula/llms-full.txt): Every guide and API reference page as one Markdown file; append `.md` to any docs page URL for that page alone
```js
import { HyperFormula } from 'hyperformula';
const hf = HyperFormula.buildFromArray([[10, 20, '=SUM(A1:B1)']], {
licenseKey: 'gpl-v3',
});
console.log(hf.getCellValue({ sheet: 0, col: 2, row: 0 })); // 30
```
## Licensing, support and contact
- [Pricing](https://handsontable.com/pricing/): Plans for Handsontable DataGrid, HyperFormula and the two together, including the free non-commercial tier and a 45-day trial
- [Evaluation](https://handsontable.com/evaluation/): Start a 45-day trial of the commercial license
- [Support](https://handsontable.com/support/): Where to ask: the docs, the forum, GitHub issues, and the support team for license holders
- [Maintenance and support policy](https://handsontable.com/docs/handsontable-maintenance-and-support-policy-v1.pdf): The policy the commercial license incorporates
- [Developer forum](https://forum.handsontable.com/): Questions, troubleshooting and feature requests
- [Contact](https://handsontable.com/contact/): Sales at sales@handsontable.com, support for license holders at support@handsontable.com
- [Book a support call](https://handsontable.com/support-call/): A call with the technical support team
## AI and agent resources
- [Agent skills](https://github.com/handsontable/handsontable-skills): Official skills for Claude Code, Codex and other coding agents, covering both products. In Claude Code: `/plugin marketplace add handsontable/handsontable-skills`
- [Docs MCP server](https://handsontable.com/docs/javascript-data-grid/docs-mcp-server/): Semantic search over both products' guides, API reference, recipes, release notes, blog posts and GitHub issues (streamable HTTP at https://docs-assistant.handsontable.com/mcp)
- [AI docs assistant](https://handsontable.com/docs/javascript-data-grid/ai-docs-assistant/): Cited answers from the live docs, in the documentation header
- [Docs llms.txt](https://handsontable.com/docs/llms.txt): The documentation's own index, with the [full corpus](https://handsontable.com/docs/llms-full.txt)
## Latest release notes
- [Handsontable 18.1.0: Shadow DOM Support for Salesforce and Web Components, a Faster Grid, and a New Demo Playground](https://handsontable.com/blog/handsontable-18-1-0-shadow-dom-support-for-salesforce-and-web-components-a-faster-grid-and-a-new-demo-playground.md): 2026-09-01
- [HyperFormula 3.4.0: Official Coding Agent Skill, Agent-Ready Docs, and Five New Functions](https://handsontable.com/blog/hyperformula-3-4-0-official-coding-agent-skill-agent-ready-docs-and-five-new-functions.md): 2026-08-11
- [Handsontable 18.0.0: A TypeScript Core, a New Layout System, and a Faster, Lighter Grid](https://handsontable.com/blog/handsontable-18-0-0-a-typescript-core-a-new-layout-system-and-a-faster-lighter-grid.md): 2026-06-30
- [HyperFormula 3.3.0: 20 New Functions, Memory Stability Improvements & New AI Integrations](https://handsontable.com/blog/hyperformula-3-3-0-20-new-functions-memory-stability-improvements-new-ai-integrations.md): 2026-05-21
- [Handsontable 17.1.0: Export to Excel, Server-Side Row Model, and Built-in Toasts](https://handsontable.com/blog/handsontable-17-1-0-export-to-excel-server-side-row-model-and-built-in-toasts.md): 2026-05-19
- [Handsontable 17.0.0: MultiSelect Cell Type, Simpler Custom Cells, and a New Themes API](https://handsontable.com/blog/handsontable-17-0-0-multiselect-cell-type-simpler-custom-cells-and-a-new-themes-api.md): 2026-03-09
## Optional
- [Blog](https://handsontable.com/blog/): Articles, tutorials and release notes
- [Customers](https://handsontable.com/customers/): Case studies
- [About](https://handsontable.com/about/): The company
- [Contributing to Handsontable DataGrid](https://github.com/handsontable/handsontable/blob/develop/CONTRIBUTING.md): How to contribute to the grid
- [Contributing to HyperFormula](https://github.com/handsontable/hyperformula/blob/master/CONTRIBUTING.md): How to contribute to the engine