Open Source Table Engine

Build Powerful Tables.Ship Faster.

A production-ready, type-safe, fully customizable React table engine. Built for developers who demand performance, flexibility, and beautiful UI out of the box.

100K+
Rows Rendered
100%
Type Safe
<8KB
Bundle Size
RTL Ready
Features

Everything You Need in a Table

From simple lists to complex enterprise data grids — one component to rule them all.

Blazing Performance

Virtualized rendering handles 100k+ rows with no lag. Optimized re-renders ensure buttery smooth scrolling.

Full Type Safety

End-to-end TypeScript support. Every column, cell, and filter is fully typed with intelligent autocomplete.

Fully Customizable

Override any cell, header, or row. Bring your own components. Style with Tailwind, CSS modules, or inline styles.

RTL Ready

First-class right-to-left support. Arabic, Hebrew, and Persian layouts work perfectly out of the box.

i18n Built In

Multi-language support baked into the core. Switch languages without losing state or re-mounting.

Pagination & Filtering

Server-side and client-side pagination, multi-column sorting, and advanced filtering — all built in.

Enterprise Ready

Battle-tested architecture for production. Accessibility-first, keyboard navigation, and screen reader support.

API Agnostic

Works with REST, GraphQL, or any data source. Bring your own fetcher — the table adapts to your stack.

Developer Experience

Built for Developers Who Care

We obsess over DX so you can focus on shipping features, not fighting your table component.

TypeScript First

Not an afterthought. The entire API is designed with TypeScript from the ground up. Full inference, no type assertions needed.

Headless Friendly

Use our beautiful defaults or go fully headless. The logic layer is completely decoupled from the UI.

Fully Extensible

Plugin architecture lets you add custom features. Extend sorting, filtering, or add entirely new capabilities.

Works With Any API

REST, GraphQL, tRPC, or local state — the table doesn't care. Bring your data however you want.

columns.tsx
// Define your columns with full type safety
const columns = [
  {
    key: 'name',
    header: 'Full Name',
    sortable: true,
    filterable: true,
  },
  {
    key: 'email',
    header: 'Email Address',
    render: (value) => (
      <a href={`mailto:${value}`}>{value}</a>
    ),
  },
  {
    key: 'status',
    header: 'Status',
    filter: 'select',
    options: ['Active', 'Inactive'],
  },
];
Performance

Speed That Scales

Engineered for datasets of any size. From 10 rows to 100,000+ — no compromises.

Render Time
<16ms
Initial render for 1,000 rows
Bundle Size
<8KB
Gzipped, tree-shakeable
Re-renders
Zero
Unnecessary re-renders eliminated
Memory
Minimal
Virtualized — only visible rows in DOM

Ready to Build Better Tables?

Stop fighting your table component. Start shipping features that matter.

Free & Open Source — MIT Licensed