v8.0.0
This is a major release with significant breaking changes. It modernizes the library's internals, drops styled-components, and requires React 18+.
Breaking Changes
- React 18 minimum —
useId()anduseTransition()are now required styled-componentsremoved — replaced with plain CSS (DataTable.css) usingrdt_class namespace- CSS custom properties — theming now uses
--rdt-*CSS variables via thethemeprop;ThemeProvideris replaced byStylesContext clearSelectedRowsprop removed — replaced with an imperative ref API:useRef<DataTableHandle>→ref.current.clearSelectedRows()TablePropssplit — broken intoSelectionProps,PaginationProps,ExpandableProps, andSortPropsfilterValues/onFilterChange— now accept a structuredFilterStateobject instead of a plain stringdeepmergedependency removed — replaced with inlinemergeDeep<T>- Build output changed — rollup replaced with tsup; ships ESM + CJS + DTS; CSS is inlined into JS by default (no separate CSS import needed unless using the
./cssexport)
New Features
- Column visibility —
useColumnVisibilityhook with show/hide support - Column filter redesign —
FilterStatesupports multiple operators, conditions, and AND/OR logic toggles;filterTypeprop specifies input type per column - Column resize — extracted into
useColumnResizehook - Skeleton loading — built-in skeleton load state
- Middle-click row interactions — support for opening rows in a new tab
- Row selection —
keyFieldsupport withselectedIdSetfor improved performance HeadContext/RowContext— eliminates prop drilling inDataTableHeadaria-sort— added to sortable column headers for improved accessibilityTablePaginationFooterandColumnFiltercomponents addedDataTableHandletype exposes imperativeclearSelectedRows()API
Internal / DX
- Jest +
jest-styled-componentsreplaced with Vitest - Storybook replaced with Astro docs site
- Build migrated from rollup + yarn to tsup + npm
src/DataTable/restructured into flatsrc/components/layoutAction<T>discriminated union now includesColumnsAction<T>with exhaustiveness check