◆ High-performance React data components. Sort, filter, group and scroll a million rows without freezing the UI — the heavy work runs in a Web Worker. Community tier is free on npm with no licence key. Try it in the browser, no signup.
Hi Product Hunt 👋
◆ KanuniLabs started with a problem every frontend developer eventually hits:
the grid is fine at 10,000 rows, sluggish at 100,000, and unusable past that.
The usual answer is "paginate it" — which is a workaround, not a solution,
and the people who actually need to see a million rows know it.
So the work went into the engine rather than the API surface:
• **Web Worker pipeline.** Sorting, filtering, grouping and aggregation run
off the main thread, so typing in a filter box never blocks the UI.
• **Zero configuration.** The worker is compiled into the package and started
from a Blob URL — no bundler recipe, no file to copy, no `workerUrl` prop.
`npm install` is the entire setup on Vite, webpack, Next.js and Parcel.
• **Two components, one engine.** A DataGrid and a PivotGrid, and a single
licence key covers both.
The **Community tier is free on npm and production-ready** — virtual
scrolling, filtering, grouping with summaries, pinning, keyboard navigation,
CSV export, saved views, 6 themes, 12 locales with RTL. No key required, no
watermark.
**Enterprise** adds what teams ask for once the grid is load-bearing: inline
editing with validation and undo/redo, range selection with a fill handle,
multi-level grouping, master-detail, tree data, charts, and styled Excel/PDF
export.
Don't take the performance claim on faith — the playground runs a million
rows in your own browser with no signup:
👉 kanunilabs.com/playground
Happy to answer anything about the architecture, the trade-offs we made, or
where it still falls short. Honest questions welcome.