Skip to content

Changelog

Latest updates and release notes for Niko Table.

  • Row click: event delegation — All table body components (standard, virtualized, and DnD variants) now use a single delegated row-click handler instead of one handler per row or per cell. This reduces allocations and keeps behavior consistent across DataTableBody, DataTableVirtualizedBody, DataTableVirtualizedDndBody, DataTableVirtualizedDndColumnBody, DataTableDndBody, and DataTableDndColumnBody.
  • DataTableRoot — Global filter and default column-pinning handlers are memoized with useCallback so table options stay stable and the table does not re-initialize unnecessarily.
  • TablePagination — Page size, page input, and prev/next button handlers are memoized with useCallback for stable references when pagination state changes.
  • DataTableAside — Trigger toggle and close button handlers are memoized with useCallback.
  • DataTableRoot — Docs now list the required children prop and the optional state prop for controlled mode. The introduction page also documents className.
  • Props tables and examples were reviewed for accuracy against the current implementation.
  • TablePagination — page input draft state — The page number input now uses local draft state so users can type intermediate values (e.g. "1" before completing "12") without the table jumping mid-edit. The page index is only committed on blur or Enter; invalid input resets to the current page.
  • TablePagination — stale page index on page size changeonPageSizeChange now receives the recalculated page index (Math.floor((pageIndex * pageSize) / newPageSize)) instead of the stale pre-change index.
  • Sticky header z-index — Fixed an issue where pinned body cells could overlap the sticky header during scroll. The sticky header container now uses z-30, above header pinned cells (z-20) and body pinned cells (z-10).
  • Pinned header cell top style — Added top: 0 to pinned header cells in getCommonPinningStyles so they stick vertically when the header is sticky.

The first public release of Niko Table — a composable, shadcn-compatible data table component registry built with TanStack Table and React.

  • DataTable - Core data table with sorting, filtering, and pagination
  • DataTableVirtualized - Virtualized rendering for large datasets
  • DataTablePagination - Flexible pagination controls
  • DataTableSearchFilter - Global search across all columns
  • DataTableFacetedFilter - Multi-select faceted filtering with counts
  • DataTableFilterMenu - Advanced filter menu with AND/OR logic
  • DataTableInlineFilter - Inline filter bar with mixed operator support
  • DataTableSliderFilter - Range slider filtering for numeric columns
  • DataTableDateFilter - Date and date range filtering
  • DataTableExportButton - CSV/JSON export
  • DataTableAside - Side panel for row details
  • DataTableSelectionBar - Bulk actions on selected rows
  • DataTableColumnSort - Sort menu and sort icon components
  • DataTableColumnHide - Column visibility toggle
  • DataTableColumnPin - Column pinning (left/right)
  • Row DnD - Drag and drop row reordering via @dnd-kit
  • Column DnD - Drag and drop column reordering
  • Row Selection - Single and multi-row selection with bulk actions
  • Row Expansion - Expandable rows with custom content
  • Tree Table - Hierarchical data with expand/collapse
  • Virtualization - Smooth scrolling for 10k+ rows
  • URL State - Sync filters, sorting, and pagination to URL via nuqs
  • Server-Side - Server-side filtering, sorting, and pagination support
  • 15+ filter operators (contains, equals, greater than, between, etc.)
  • Mixed AND/OR logic with mathematical precedence
  • Per-filter join operator control
  • Regex-cached filter execution for large datasets