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

FactSvGridsvelte-headless-tableChecked
Latest version3.0.30.18.312 Sep 2026
Licence field on npmMITMIT12 Sep 2026
Last published11 Sep 202628 Oct 202412 Sep 2026
Svelte 5 supportNative (Svelte 5 runes)Svelte 4 range (peer svelte ^4.0.0)12 Sep 2026
npm downloads, 30 days to 10 Sep 202616,90090,10012 Sep 2026
Bundle, minified + gzip84.5 KB JS + 9.5 KB CSS5.7 KB JS, no separate stylesheet, svelte external12 Sep 2026
FrameworksSvelte 5Svelte12 Sep 2026
PricingMIT core; @svgrid/enterprise from $599 per developer per yearsvelte-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 port12 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.

FeatureSvGridsvelte-headless-table
Svelte 5 runesYes - nativeNo - Svelte 4 stores; no Svelte 5 port planned by the author
Maintained release lineYesPartial - original deprecated; the @humanspeak fork is maintained on Svelte 5
Render componentYes - <SvGrid />No - bring your own markup
Headless engineYes - createSvGrid and a features objectYes - createTable and plugins
Sorting and column filteringYesYes - engine only
Excel-style filter menuYes - built inNo - bring your own UI
Cell-range selection and clipboardYes - built in, with a fill handleNo - row selection only
Inline editingYes - built inNo - not a plugin
VirtualizationYes - rows and columns, built inPartial - pair with a virtual-list library
PaginationYesYes
Row grouping with aggregationYes - engine and rendered group rowsYes - engine only
Row expansion and treeYesYes - expansion plugin
Column ordering, hiding, resizingYesYes
Master/detailYesNo - not a plugin
Server-side row modelYesNo - not a plugin
Integrated chartsYes - SvGridChartNo - not part of a headless engine
In-grid AI helpers and MCP serverYes - helpers free in @svgrid/grid; @svgrid/mcp, MITNo - not in the docs
Paid supportYes - with @svgrid/enterprise, per developer per yearNo - 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.

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)