Enterprise & licensing
The Community package is a complete, fast grid: a million rows, sorting, filtering, selection, pagination, themes, twelve languages and CSV export.
@kanunilabs/datagrid-react-enterprise starts where you change the data and
where you take it out: the four editing modes, range selection and the fill
handle, server-side data, Excel and PDF export, the chart panel, the nested
filter builder, and the docked side and status bars.
EnterpriseDataGrid is a drop-in replacement for DataGrid — same props, plus
these.
One key opens both products. A KanuniLabs license unlocks the Enterprise edition of DataGrid and PivotGrid. If you already bought for one, you do not buy again for the other.
1. Install from the private registry
The Enterprise package is not on public npm. It comes from our private registry
with credentials issued per license — you receive a ready-to-paste .npmrc by
email, and can always fetch it again from your
dashboard.
@kanunilabs:registry=https://registry.kanunilabs.com/
//registry.kanunilabs.com/:_auth=<value from your email or dashboard>
//registry.kanunilabs.com/:always-auth=true
npm i @kanunilabs/datagrid-react-enterprise
CI usage, keeping the token out of git and rotating a leaked password are all covered in the Private registry access guide.
2. Set the license key
Set it once, at startup, before the first grid renders:
import {
EnterpriseDataGrid,
LicenseManager,
} from '@kanunilabs/datagrid-react-enterprise';
LicenseManager.setLicenseKey('KLAB1....');
export function OrdersGrid({ rows }) {
return (
<EnterpriseDataGrid
dataSource={rows}
rowKey="id"
columns={[
{ field: 'id', headerName: 'ID', dataType: 'number' },
{ field: 'customer', headerName: 'Customer' },
{ field: 'total', headerName: 'Total', dataType: 'number' },
]}
editing={{ mode: 'cell' }}
/>
);
}
Both stylesheets are needed — the Enterprise one only adds what it introduces:
import '@kanunilabs/datagrid-react/styles.css';
import '@kanunilabs/datagrid-react-enterprise/styles.css';
Without a valid key
The grid keeps working. It is watermarked, not crippled: an "Unlicensed" badge appears and a notice is logged. This is deliberate — an evaluation, a staging box with a stale key or an expired card should never take your application down.
Keys are verified offline (they are signed), and can optionally be checked online for revocation:
<EnterpriseDataGrid
licenseKey="KLAB1...."
licenseOptions={{ validateUrl: 'https://www.kanunilabs.com/api/license/validate' }}
/>
On localhost the key is still required — what local development skips is
the domain check, so one key works from localhost, 127.0.0.1 and *.local
without listing them as domains. The signature is verified everywhere; a grid
with no key is watermarked on your machine exactly as it would be in
production, which is deliberate: you should see what your users would.
What Enterprise unlocks
Each entry links to the guide that shows it working. Everything not in this list is in Community and needs no license.
Data & performance
- Server-side dataFiltering, sorting, paging, distinct values and totals run on your server.
Columns
- Cell span / mergeMerge repeating cells down a column.
Filtering
- Filter builderNested AND/OR conditions, built visually.
Grouping & hierarchy
- Multi-level groupingNest groups as deep as the data goes.
- Group summariesPer-group totals in the group footer.
- Master-detailExpand a row into your own detail panel.
- Tree dataSelf-referencing hierarchies with expand/collapse.
Totals
- Footer column totalsColumn-aligned totals over the whole filtered result.
- Totals row placementPin the totals row to the top or the bottom.
- Custom aggregationYour own reducer beside sum/avg/min/max/count.
- Selection statisticsSum, average, min, max and count of the selected range.
Selection & keyboard
- Range selectionDrag a rectangle across cells.
- Fill handleDrag the corner to fill a range, spreadsheet-style.
- Cut & pastePaste a block from Excel straight into a range.
Editing
- Cell editingEdit one cell at a time, committed on blur or Enter.
- Batch editingCollect changes and save them together.
- Row editingEdit a whole row with save/cancel controls.
- Form & popup editingEdit in a form rendered in the row flow or a dialog.
- ValidationPer-column rules with inline error reporting.
- CRUD handlersOne call per row — the shape REST and SQL want.
- PermissionsAllow add, update and delete per row, enforced in the engine.
- Custom editors & lookupsYour own editor component, or a lookup bound to another source.
- Undo / redoFull history with a public API and events.
Export & import
- Excel exportReal .xlsx, with the grid’s formatting carried over.
- PDF exportPaginated, with repeated headers; streams for large results.
- Styled exportNumber formats, banded rows, outline levels, totals.
- Import wizardFile → column mapping → commit.
Presentation
- SparklinesA small chart inside a cell.
- Cell notesA corner marker with text on hover, editable from the menu.
- Status barDocked counters and range statistics.
- Side bar & tool panelsDocked Columns and Filters panels.
Charts
- Chart panelDocked charts driven by the grid’s own columns.
- Cross-filter & zoomClick a bar to filter the grid; wheel to zoom the axis.
- Chart exportSave a chart as PNG or SVG.
What happens if you use one without the license
The boundary is enforced in two places, and both explain themselves rather than failing silently:
- Configuration (grouping depth, group summaries, master-detail, tree data,
footer totals, cell span, notes) is dropped, and the reason is logged when you
render with
debugMode. - Calls (
exportToExcel,exportToPdf) throw an error naming the feature. - A server-side
DataSourcethrows immediately, because silently dropping it would leave a grid with no data and send you looking in your backend.
Community keeps single-level grouping and CSV export, so a Community grid is never a demo — it is a grid.