Skip to content

Shadcn-Compatible React Data Table

Build production-ready data tables with sorting, filtering, pagination, virtualization, and more.

Nobody’s table, everyone’s solution.

Niko Table is not an opaque npm package — you copy the source into your project and own it. Built with TanStack Table and shadcn/ui.

Add the registry once under registries in components.json, then install:

components.json
{
"registries": {
"@niko-table": "https://niko-table.com/r/{name}.json"
}
}
pnpm dlx shadcn@latest add @niko-table/data-table

Works with both shadcn generations — the classic Radix style (new-york) and the newer Base UI style (base-nova). See Installation for merging into an existing components.json and every available block.

Open in
Product Name
Category
Brand
Price
Stock
Rating
In Stock
Release Date
Actions
iPhone 15 Pro
Electronicsapple
$999.00
45
5
Yes7/10/2026
Galaxy S24 Ultra
Electronicssamsung
$1199.00
32
5
Yes7/5/2026
Air Jordan 1
Sportsnike
$170.00
8
4
Yes6/20/2026
Ultraboost 23
Sportsadidas
$190.00
15
4
Yes5/26/2026
PlayStation 5
Electronicssony
$499.00
0
5
No7/15/2025
OLED C3 TV
Electronicslg
$1499.00
12
5
Yes4/16/2026
XPS 15 Laptop
Electronicsdell
$1899.00
20
4
Yes3/17/2026
Spectre x360
Electronicshp
$1599.00
18
4
Yes6/30/2026
MacBook Pro 16
Electronicsapple
$2499.00
25
5
Yes6/15/2026
Galaxy Book3
Electronicssamsung
$1399.00
14
4
Yes1/16/2026
Current Table State
Live view of all table state for demonstration
Search Query:None
Total Items:15
Selected Rows:0
Expanded Rows:0
Active Filters:0
Enhanced Filters:0
Active Enhanced:0
Join Logic:and
Sorting:None
Page:1 (Size: 10)
Hidden Columns:0
Pinned Columns:0 Left, 0 Right
View Full State Object
Enhanced Filters:
No enhanced filters
Column Pinning:
{
  "left": [],
  "right": []
}
Filter Stats:
{
  "totalFilters": 0,
  "hasAndFilters": false,
  "hasOrFilters": false,
  "effectiveJoinOperator": "and",
  "activeFilters": 0
}
Filter Mode: AND
All conditions must match (stored in columnFilters)
Sorting:
[]
Column Filters State (AND logic):
[]
Global Filter State (OR logic):
""
Column Visibility:
{}
Row Selection:
{}
Expanded Rows:
{}

Selection, expansion, filters, sort, pagination, column visibility, export, and asides — composed from registry pieces. Browse more in Examples.

  • Introduction - The composable, editable spreadsheet grid
  • Cell Types - Text, number, currency, checkbox, date, and select editors
  • Validation - Inline per-cell errors with Zod (or any resolve)
  • Dynamic Columns - Add, rename, move, delete, and retype at runtime
  • Persistence - Create / update / delete change-sets with useGridChanges
  • API Reference - Every hook, component, and type
  • Type-safe - Full TypeScript support
  • Accessible - shadcn/ui primitives (Radix or Base UI), ARIA labels in filters/menus, keyboard shortcuts; linted with jsx-a11y
  • Responsive - Full-width scroll container (overflow-auto); touch-friendly controls; stack toolbars as needed on small screens
  • Customizable - Full source code access
  • Composable - Mix and match components (install only the registry pieces you need)
  • Performance - Virtual scrolling for 10,000+ client-side rows (fixed-height scroll container)
  • State Management - Context-based useDataTable() with controlled state and optional URL sync (nuqs)

Have questions or want to contribute?

MIT License - feel free to use this in your projects!