Documentation

FAQ

Is the Community edition really free?

Yes. @kanunilabs/datagrid-react and @kanunilabs/datagrid-core are free to use, including commercially, under the KanuniLabs Community License. They are proprietary — the compiled packages are distributed, the source is not.

Why is rowKey required?

Selection, focus and future live updates are keyed by row identity. Using array position instead would break the moment rows sort or filter — a selected row would appear to jump to a different record. Requiring rowKey makes that class of bug impossible.

Do I need the Web Worker?

No. Below ~20,000 rows the grid stays on the main thread because that is genuinely faster. Above it, the offload happens automatically when a Worker global is available; if not, the grid falls back to the synchronous path.

My grid renders but feels slow on a big dataset

Most likely the worker did not start, so filtering and sorting are running on the main thread. The worker ships inside the package and starts from a Blob URL, so the usual cause is a Content-Security-Policy that forbids blob: workers — see Installation → The Web Worker. In development the grid warns once in the console with the exact cause.

Does it work with Next.js / SSR?

Yes, with no extra setup. The grid renders on the server without a worker or DOM measurement and hydrates normally; popups are created on mount, so nothing is portaled during SSR. The worker is embedded in the package, so Next.js needs no file copied into public/ — see SSR.

Why does my CSV open with broken characters in Excel?

It shouldn't — exports are written with a UTF-8 BOM precisely because Excel otherwise reads the file as ANSI. If you disabled it with bom: false, that's the cause.

Can I export to Excel?

Yes, with the optional exceljs peer installed (npm i exceljs). It is loaded lazily, so apps that only use CSV don't pay for it.

Does export include everything or just the visible page?

Everything in the current result — all filtered and sorted rows, not just the page on screen. What it does respect is what you see per row: formatted values and visible columns only.

Can I edit cells?

Not in the Community edition. Editing is the anchor feature of Enterprise: cell, batch, row, form and popup modes, validation, per-row CRUD handlers, undo/redo, range selection, the fill handle and paste. See Editing.

Does it support multi-level grouping?

Community ships single-level grouping. Multi-level grouping and per-group aggregates are Enterprise.

Is it accessible?

Yes — a full WAI-ARIA grid implementation: role="grid" with row/column indices, virtual focus via aria-activedescendant, live-region announcements, and a roving tabindex so the header is one tab stop instead of one per column.

Which frameworks are supported?

React today. The engine (@kanunilabs/datagrid-core) is deliberately framework-agnostic — no DOM, no framework imports — so other adapters can be built on the same controller contract.

How do I request a feature or report a bug?

Contact us. Feature requests and bug reports go to the same place and are read by the people who write the code.