simple-table-core vs Tabulator: Vanilla TypeScript Data Grid Comparison

Tabulator has been the workhorse vanilla-JS data grid for a decade. simple-table-core is the modern, TypeScript-first alternative that also powers React, Vue, Angular, Svelte, and Solid adapters.

TypeScript-first1M+ rows virtualizationFree under MITFramework-agnostic core

Tabulator is the most-used framework-agnostic data grid: imperative API, plenty of built-in features, plugin ecosystem, and a long history. The trade-off is that its API and types come from a JavaScript-first world: TypeScript definitions are community-maintained and not always strict, and the imperative wiring shows its age.

simple-table-core is the vanilla-TypeScript core engine that powers all @simple-table/* adapters. It ships virtualization for 1M+ rows, column pinning, row grouping with aggregations, and inline editing—written in TypeScript with strict types from day one.

If you want a vanilla / web-component data grid in 2026 with modern TS ergonomics, this is the side-by-side that helps you choose.

Choose Simple Table for Vanilla JS / TypeScript when…

  • You're shipping vanilla TypeScript / web components and want strict types out of the box.
  • You want one engine that scales: today vanilla, tomorrow you adopt React or Vue with the same data shape.
  • You want a tighter, more predictable bundle and modern ESM-first packaging.
  • You want batteries-included pinning, grouping with aggregations, and editing in one library.

Choose Tabulator when…

  • You have a large existing Tabulator codebase and your team is comfortable with its imperative API.
  • You depend on a Tabulator-specific feature (e.g. interactive charts, Tabulator print API, certain reactive-data patterns).
  • You're comfortable with community-maintained TypeScript definitions and don't need strict types.

Feature comparison

FeatureSimple Table for Vanilla JS / TypeScriptTabulator
TypeScript-first types (strict mode)
Authored in TS.
Community types; some looseness.
Framework adapters (React/Vue/Angular/Svelte/Solid)
Official adapters.
tabulator-tables wrappers exist; quality varies.
Row + column virtualization (1M+ rows)
Built-in.
Virtual DOM rendering.
Column pinning (left / right)
Frozen columns.
Row grouping with aggregations
groupBy + custom calculations.
Inline cell editing
Custom cell / header / footer renderers
ESM-first packaging
ESM available; CommonJS legacy still common.
License
MIT.
MIT.

Migrate to Simple Table on Vanilla JS / TypeScript

Replace your existing Tabulator usage with simple-table-core.

npm install simple-table-core

Tabulator's new Tabulator(el, { columns, data }) maps to simple-table-core's new SimpleTableVanilla(el, { defaultHeaders, rows }). The data shape is similar; cell formatters become functions returning DOM nodes or framework components.

FAQ

Can simple-table-core run in any browser environment?
Yes. simple-table-core has no peer dependencies and works with any modern bundler (Vite, esbuild, Rollup, Webpack) as well as a plain <script type='module'>.
Why publish a vanilla core if there are framework adapters?
Because the engine is genuinely framework-agnostic. Web-component / vanilla apps use simple-table-core directly; framework apps use the @simple-table/* wrappers, which all share the same core data shape and feature flags.
Is Tabulator going away?
Not at all. Tabulator is well-maintained and a perfectly valid choice. simple-table-core is the answer for teams that want strict TypeScript types, modern ESM packaging, and a single engine that also covers their React/Vue/Angular/Svelte/Solid surfaces.

Bottom line

If you have an existing Tabulator codebase with a happy team and you don't need framework adapters, stay on Tabulator. If you're starting fresh and want strict TypeScript types, ESM-first packaging, and a single engine across stacks, simple-table-core is the modern MIT alternative.

Related comparisons & guides