Five angles, one axis: what the grid owns versus what you write yourself — and the paywall sits exactly on that line. Not headless-vs-batteries. Not free-vs-paid. Ownership.
Read this matrix top to bottom. Above the dashed line, every grid gives you the same things for free. Below it, the free column becomes dev-days you write yourself and the two commercial columns become invoices. The features do not scatter — they sort. The paywall is not a pricing decision the vendors made; it is the ownership line, priced.
| Capability | HeadlessTanStack Table | CommercialAG Grid | Design-systemMUI X Data Grid |
|---|---|---|---|
| Sorting & filtering | included | Community | MIT |
| Pagination | included | Community | MIT |
| Row virtualization | bring your own | Community | MIT |
| Markup, DOM & CSS | yours entirely | theirs · --ag-* |
theirs · MUI |
|
▲ free above · ▼ paid below — the same line, every vendor
|
|||
| Row grouping | you build it | Enterprise | Pro |
| Pivoting | you build it | Enterprise | Premium |
| Aggregation | you build it | Enterprise | Premium |
| Excel export | you build it | Enterprise | Premium |
| Server-side row model | manual* opt-outs |
Enterprise | Pro · Data Source |
The expedition attacked the question from five directions. None of them contradicted the others; all five resolved to ownership. Open any axis to check the working.
manual* opt-outs and hands you the state machine.The usual reason people buy a grid turns out to be the wrong one. Every virtualized grid renders roughly 40 rows regardless of dataset size [10] — so "millions of rows" is a marketing claim, not an engineering axis. What breaks grids is refresh rate and a ceiling no vendor escapes.
The comfortable assumption that this is a wide field does not survive contact with the registries. Stars are not liveness.
manualPagination plus manualFiltering, pageIndex is not reset when filters change — so a user sitting on page 1000 silently gets an empty result set [21]. Headless isn't free; it's deferred.--ag-* custom properties — while warning that class-level overrides are fragile because its DOM changes each release [19]. MUI X is a design-system adoption, Tailwind v4 cascade-layer fights included [20] ⭐ 96k. The buy decision propagates into your styling layer for years — exactly where it's hardest to reverse.It is where the canvas-rendered options quietly fail — Glide's own repository concedes its a11y story is unverified [22] ⭐ 5.3k. If your table is going anywhere near a procurement checklist or a WCAG audit, that gap is the next thing to close — and it may quietly eliminate an option this framework otherwise keeps on the table.