SvGrid vs svelte-headless-table
svelte-headless-table is the Svelte-native headless table library by Bryan Lee, one of the earliest Svelte-specific table options, now deprecated on Svelte 4.
Project site · svelte-headless-table
Verdict
svelte-headless-table popularised headless tables in Svelte and still works on Svelte 4. Its author states there are no plans for a Svelte 5 port, so a Svelte 5 upgrade forces the question. SvGrid keeps the headless approach on Svelte 5 runes, adds virtualization and a rendered grid, and the @humanspeak fork is the option if you want to stay headless with the same API.
Migration guide: moving from svelte-headless-table to SvGrid
At a glance
| Fact | SvGrid | svelte-headless-table | Checked |
|---|---|---|---|
| Latest version | 3.0.3 | 0.18.3 | 12 Sep 2026 |
| Licence field on npm | MIT | MIT | 12 Sep 2026 |
| Last published | 11 Sep 2026 | 28 Oct 2024 | 12 Sep 2026 |
| Svelte 5 support | Native (Svelte 5 runes) | Svelte 4 range (peer svelte ^4.0.0) | 12 Sep 2026 |
| npm downloads, 30 days to 10 Sep 2026 | 16,900 | 90,100 | 12 Sep 2026 |
| Bundle, minified + gzip | 84.5 KB JS + 9.5 KB CSS | 5.7 KB JS, no separate stylesheet, svelte external | 12 Sep 2026 |
| Frameworks | Svelte 5 | Svelte | 12 Sep 2026 |
| Pricing | MIT core; @svgrid/enterprise from $599 per developer per year | svelte-headless-table is MIT and free; no paid licence or support is offered, and the author states there are no plans for a Svelte 5 port | 12 Sep 2026 |
Bundle sizes: each package built alone with Vite in library mode, minified, gzip level 9, Svelte kept external where a package uses it (it is a peer dependency). SvGrid 3.0.3 measured 12 Sep 2026 with packages/grid/scripts/measure-size.mjs; svelte-headless-table 0.18.3 entry `whole package` measured 12 Sep 2026 with packages/grid/scripts/measure-competitor-bundles.mjs.
Overview
svelte-headless-table exposes a createTable function with composable plugins for sorting, filtering, column ordering and hiding, pagination, row selection, expansion, grouping with aggregation and column resizing, and leaves the markup to you. The npm package's peer range is Svelte 4, and the repository README states there are no current plans for a Svelte 5 port. A community fork, @humanspeak/svelte-headless-table, carries the same API on Svelte 5 runes; the At a glance table shows the original's registry facts, and the migration guide has the fork's.
SvGrid takes the same headless approach but is written in Svelte 5 runes, adds a production render component, and covers virtualization, Excel-style filters, cell-range selection with a fill handle, inline editing, master/detail, a server-side row model and integrated charts natively.
Looking for a svelte-headless-table alternative for Svelte?
This is the clearest migration case on the list: the original package's peer range is Svelte 4, its last release was in 2024 and the README says there are no plans for a Svelte 5 port nor a maintenance schedule for Svelte 3 and 4. SvGrid keeps the headless approach you already chose and adds runes, virtualization and a render component if you want one. If you would rather keep the plugin API, the maintained community fork @humanspeak/svelte-headless-table targets Svelte 5, and its facts are in the guide.
What they have in common
- Svelte-specific, not a port from another framework.
- Headless-first composition: plugins in svelte-headless-table, a features object in SvGrid.
- Sorting, filtering, pagination, row selection, expansion and grouping with aggregation in the engine.
- MIT-licensed with a strong TypeScript story.
Where SvGrid is stronger
- Built on Svelte 5 runes and released continuously; the original package is Svelte 4 only and its author has stopped.
- A bundled <SvGrid /> component, so nobody assembles headers, body and virtualization by hand.
- Virtualization on rows and columns built in; svelte-headless-table leaves it to a virtual-list library.
- Excel-style filter menu, cell-range selection with a fill handle, inline editing, master/detail, a server-side row model and charts in the MIT package.
- In-grid AI helpers free in @svgrid/grid and @svgrid/mcp for assistants, plus a paid support tier.
Where svelte-headless-table is stronger
- A smaller bundle if all you want is the engine; the At a glance table has both measured sizes.
- A plugin API many Svelte 4 codebases already know, and a documentation site that still reads well.
- The @humanspeak fork keeps that API on Svelte 5 without a rewrite.
Feature by feature
Yes: shipped in the package. Partial: needs extra work or a companion package. Paid tier: only in a paid edition. No: not available. n/a: does not apply.
| Feature | SvGrid | svelte-headless-table |
|---|---|---|
| Svelte 5 runes | Yes - native | No - Svelte 4 stores; no Svelte 5 port planned by the author |
| Maintained release line | Yes | Partial - original deprecated; the @humanspeak fork is maintained on Svelte 5 |
| Render component | Yes - <SvGrid /> | No - bring your own markup |
| Headless engine | Yes - createSvGrid and a features object | Yes - createTable and plugins |
| Sorting and column filtering | Yes | Yes - engine only |
| Excel-style filter menu | Yes - built in | No - bring your own UI |
| Cell-range selection and clipboard | Yes - built in, with a fill handle | No - row selection only |
| Inline editing | Yes - built in | No - not a plugin |
| Virtualization | Yes - rows and columns, built in | Partial - pair with a virtual-list library |
| Pagination | Yes | Yes |
| Row grouping with aggregation | Yes - engine and rendered group rows | Yes - engine only |
| Row expansion and tree | Yes | Yes - expansion plugin |
| Column ordering, hiding, resizing | Yes | Yes |
| Master/detail | Yes | No - not a plugin |
| Server-side row model | Yes | No - not a plugin |
| Integrated charts | Yes - SvGridChart | No - not part of a headless engine |
| In-grid AI helpers and MCP server | Yes - helpers free in @svgrid/grid; @svgrid/mcp, MIT | No - not in the docs |
| Paid support | Yes - with @svgrid/enterprise, per developer per year | No - none offered |
When to choose SvGrid
- You are moving to Svelte 5 and want a maintained grid that keeps the headless approach.
- You want virtualization, an Excel-style filter menu, editing and cell selection without building them.
- You want a rendered component for the common case and a headless core for the rest.
- You want a support tier behind the library.
When to choose svelte-headless-table
- You are staying on Svelte 4 for now and the plugin set already covers you.
- You want the smallest possible engine and will keep writing the markup yourself.
- You want the same plugin API on Svelte 5 and are happy to move to the @humanspeak fork.
Migration effort
Estimated effort: 1-3 hours per grid.
What you give up:
- The plugin API and its documentation site, if your team knows it well.
- The smallest engine-only bundle; the At a glance table has both measured sizes.
- Nothing in maintenance terms on the original package, which is where most migrations start.
Migration guide: moving from svelte-headless-table to SvGrid
Live example
Headless -> your own table: open it in the gallery for the source and the full-size version.
The bottom line
For a Svelte 4 codebase that is not moving, svelte-headless-table still works. For a Svelte 5 codebase, the original package is not an option and its author says so; the choice is between the @humanspeak fork, which keeps the plugin API, and SvGrid, which keeps the headless approach and adds virtualization, filters, editing, selection and a rendered grid in the same MIT package.
Frequently asked questions
Does svelte-headless-table work with Svelte 5?
The original package's peer range is Svelte 4 and its README states there are no current plans for a Svelte 5 port nor a maintenance schedule for Svelte 3 and 4. The community fork @humanspeak/svelte-headless-table targets Svelte 5 with runes; SvGrid is written in Svelte 5 from the first line.
Can I keep a headless table with SvGrid?
Yes. createSvGrid plus the row-model factories is a headless engine; you can drive your own markup as before and adopt the SvGrid component only where you want it. The headless demos on this page show a plain table and a virtualized one.
Is SvGrid heavier than svelte-headless-table?
Yes, by the measurements in the At a glance table, because it ships a rendered grid, a virtualizer, filter menus and editors that a headless engine leaves to you. If you only need the engine and will write the rest, the difference is what you would otherwise write.
How long does a migration take?
The migration guide budgets one to three hours per grid; most of the time goes into deleting the markup and plugins the rendered grid replaces. Column definitions and the plugin concepts (sort, filter, page, select, expand, group) map one to one onto SvGrid's features.
Should I move to the @humanspeak fork instead?
If you want the same plugin API on Svelte 5 and are happy to keep writing the markup, yes, and its registry facts are in the migration guide. If the upgrade is also a chance to stop maintaining a table layer, SvGrid gives you the rendered grid and keeps the headless core for the cases that need it.
Is SvGrid a good svelte-headless-table alternative for Svelte?
This is the clearest migration case on the list: the original package's peer range is Svelte 4, its last release was in 2024 and the README says there are no plans for a Svelte 5 port nor a maintenance schedule for Svelte 3 and 4. SvGrid keeps the headless approach you already chose and adds runes, virtualization and a render component if you want one. If you would rather keep the plugin API, the maintained community fork @humanspeak/svelte-headless-table targets Svelte 5, and its facts are in the guide.
Related comparisons and docs
Sources and last verified
Every claim on this page was last checked on 12 Sep 2026. Versions, licences and download counts come from the npm registry; feature and pricing statements from the pages listed below.
- sht-github: README: there are no current plans to work on a Svelte 5 port of this project nor is there a maintenance schedule for Svelte 3/4; the project is flagged as deprecated and users are encouraged to seek alternatives or fork (checked 12 Sep 2026)
- sht-docs: Advertised plugins: multi-sorting, column filtering, global filtering, column reordering, hiding columns, pagination, row grouping and aggregation, row expansion, row selection, column resizing; headless, you write the markup (checked 12 Sep 2026)
- sht-fork: MIT; part of the Humanspeak family of runes-native Svelte 5 packages; the npm package declares a Svelte 5 peer range (checked 12 Sep 2026)