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.