A lightweight, zero-dependency data table with plugin architecture. Sorting, filtering, editing, and more â all in ~32KB.
Built-in features that cover 90% of use cases, with plugins for the rest.
Click column headers to sort. Multi-column sorting with shift+click.
Global search across all columns with instant filtering.
Double-click any cell to edit. Supports text, number, boolean, select.
Single or multi-select with checkboxes. Select all with header checkbox.
Built-in pagination with configurable page sizes.
Full keyboard navigation with arrow keys, Enter to edit, Escape to cancel.
Interactive demo with all features enabled. Edit cells, sort columns, search.
Install only what you need. Each plugin is a separate package.
Undo/Redo with Ctrl+Z, Ctrl+Y
import { HistoryPlugin } from '@bw-ui/datatable-history'; table.use(HistoryPlugin); table.undo(); table.redo();
Download as JSON, CSV, or copy
import { ExportPlugin } from '@bw-ui/datatable-export'; table.use(ExportPlugin); table.exportCSV(); table.exportJSON();
Shareable links with sort, filter, page
import { UrlStatePlugin } from '@bw-ui/datatable-url-state'; table.use(UrlStatePlugin); // URL: ?page=2&sort=name:asc
Copy/Paste with Excel compatibility
import { ClipboardPlugin } from '@bw-ui/datatable-clipboard'; table.use(ClipboardPlugin); // Ctrl+C to copy, Ctrl+V to paste
Cmd+K for quick actions
import { CommandPlugin } from '@bw-ui/datatable-command'; table.use(CommandPlugin); // Cmd+K opens command palette
Handle 100k+ rows smoothly
import { VirtualPlugin } from '@bw-ui/datatable-virtual'; table.use(VirtualPlugin, { rowHeight: 40 });
Get started in under a minute with our clean, chainable API.
import { BWDataTable } from '@bw-ui/datatable'; import { HistoryPlugin } from '@bw-ui/datatable-history'; import { ExportPlugin } from '@bw-ui/datatable-export'; import '@bw-ui/datatable/dist/bw-datatable.min.css'; // Create table with plugins const table = new BWDataTable('#my-table', { data: employees, editable: true, selectable: true, pageSize: 10, }) .use(HistoryPlugin) .use(ExportPlugin); // That's it! Full featured table ready.
Install via npm or use the CDN for quick prototyping.
npm install @bw-ui/datatable