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.
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.
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.
// 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'],
},
];Speed That Scales
Engineered for datasets of any size. From 10 rows to 100,000+ — no compromises.
Ready to Build Better Tables?
Stop fighting your table component. Start shipping features that matter.
Free & Open Source — MIT Licensed