Releases: jbetancur/react-data-table-component
Release list
v8.8.0
New features
filterType: 'datetime'— filter to a specific date and time via adatetime-localinput;Equalsmatches the exact instant. → Filtering (#1362)filterType: 'time'— filter by time of day across all dates; supports seconds andBetweenwindows that wrap past midnight. → Filtering
Bug fixes
- Client-side filtering now runs before pagination, so filters match across all pages instead of just the current one. → Filtering (#1364)
- A
filterablecolumn with no explicitidnow filters instead of silently doing nothing. → Filtering (#1363) - A custom
filterFunctionnow runs for value-less operators, not only when a value is entered. → Filtering (#1366) - The
datefilter'sEqualsno longer skips by a day for timestamped cells in non-UTC timezones. → Filtering animateRows: fixed sort animation breaking across a sort cycle, not animating underfixedHeader, entrance animations being skipped with a numerickeyField, stale styles from an interrupted animation, and the expander close animation being cut short or leaking a timer. Sort movement is also smoother. → Animations (#1368)- The loading skeleton shimmer and the default spinner now stop under
prefers-reduced-motion: reduce.
Full changelog: https://reactdatatable.com/docs/changelog
v8.7.1
Bug fixes
- Faster cell rendering on large tables: non-editable cells now skip editing state entirely and share hoisted style objects, and rows inside a fixed-header scroll container use
content-visibility: autoso off-screen rows skip layout and paint. → Performance (#1360) - Applying a column filter that matched no rows hid the table head along with the rows, leaving no way to clear the filter. The head now stays visible while any column filter is active. → Filtering (#1359)
- A column filter with only its second condition filled was silently ignored; it now applies on its own, and an empty first condition no longer force-matches every row under OR logic. → Filtering
- A
betweenfilter with one empty bound filtered out every row; the empty side is now unbounded (lower-only acts as ≥, upper-only as ≤) for both number and date columns. → Filtering - Hiding a column via the context menu now clears that column's active filter, which otherwise kept filtering rows with no visible way to clear it. → Context menu
- Pressing Escape while typing in a filter input now closes the filter panel, and closing via Escape, Apply, or Clear returns focus to the filter icon. → Filtering
Full changelog: https://reactdatatable.com/docs/changelog
v8.7.0
New features
ctx.errorfor custom editors — the custom editor render context now includes the current validation error (string | null), so custom editors can style their own invalid state whenvalidaterejects a commit. → Inline editing (#1355)ctx.inputReffor custom editors — attach it as therefof your focusable element to get auto-focus when the editor opens and refocus after a rejected commit, matching the built-in editors. → Inline editing (#1355)
Full changelog: https://reactdatatable.com/docs/changelog
v8.6.2
Bug fixes
- A numeric pixel value for
TableColumn.hide(e.g.hide: 480) was a no-op — the column stayed visible at every width. Numeric breakpoints stopped working in the v8 refactor; the type now accepts onlyMedia('sm' | 'md' | 'lg') to match. For a custom breakpoint, track viewport width yourself and toggle the column'somitprop instead. → Mobile (#1346) - Fixed
highlightOnHovernot showing when a row's background color was set viacustomStyles.rows.style, since the inline style was winning over the hover class. → Styling (#1351)
Full changelog: https://reactdatatable.com/docs/changelog
v8.6.1
Bug fixes
- A custom
progressComponentcould not be shown on the initial load — the skeleton rows always won. NewprogressSkeletonprop (defaulttrue) lets you set it tofalseto show yourprogressComponenton initial load instead. → Loading state
Full changelog: https://reactdatatable.com/docs/changelog
v8.6.0
New features
- Context menu — new
contextMenuprop adds a menu to header cells and rows, opened by right-click, a kebab (⋮) button, or both. The header menu ships built-in actions (sort ascending/descending, clear sort, pin left/right, unpin, hide column, reset); row menus render consumer-supplied actions viacontextMenuActions.row, and every selection firesonContextMenuAction. Fully keyboard-accessible (role="menu", arrow keys, Escape with focus return), RTL-aware, and localizable vialocalization.contextMenu(all bundled locales translated). → Context menu (#1342) - bigint and Date selectors —
Primitivenow includesbigintandDate, so selectors can return them directly for display and built-in sorting.bigintrenders as its decimal string andDateas a locale string. → Columns
Bug fixes
- Selectors that return
nullorundefined(e.g. a missing field) now sort to the end in both directions instead of landing in an arbitrary position. → Sorting - Pagination now sizes its layout from its own container instead of the window, fixing squeezed/overlapping controls in narrow containers and mobile viewports. → Pagination
- Fixed a pagination SSR hydration mismatch that made React re-render the table client-side on wide viewports.
- Skeleton loading rows now stretch to the full table width instead of fixed cell widths. → Loading state
- Widened the column resize handle and fixed the neighboring header cell stealing half its grab area; the hover indicator is now centered on the column separator, including under RTL. → Resizable columns
Full changelog: https://reactdatatable.com/docs/changelog
v8.5.2
Bug fixes
-
Column resize and reorder (including column groups) now work on touch devices. Resize handles respond to touch drags; reorder uses a short press-and-hold to grab a header so a normal swipe still scrolls the table. → Column reordering
-
Fixed the native sort icon animating (fading and spinning) as it disappeared when a column returned to the unsorted state; it now clears immediately. → Sorting
-
Fixed column filter menus on touch devices: the menu no longer flickers open/closed when tapping the filter icon, and filter icons on the leftmost/rightmost columns now open reliably with the panel clamped on-screen. → Filtering
Full changelog: https://reactdatatable.com/docs/changelog
v8.5.1
Bug fixes
- Fixed RTL support across resizing, pinning, and separators: resize handles sit on the correct edge and widen as in LTR, pinned columns stick to logical edges with mirrored shadows, the pinned horizontal scrollbar accounts for RTL scroll coordinates, and column/group-header separators plus small chrome (filter dot, select arrows, pagination chevron) mirror correctly. Applies to
direction={Direction.RTL}and inheriteddir="rtl". → RTL support - Fixed row and table backgrounds cutting off at the initial container width when the table scrolls horizontally, leaving scrolled-into columns unpainted. → Theming
- Fixed
fixedHeaderwithresponsive={false}not creating a scroll container, letting rows spill over content below the table.fixedHeadernow always creates one. - Fixed the pinned-columns scrollbar failing to appear or going stale when content width changed without a container resize (async rows, resizing or toggling columns), and when columns were pinned with
responsive={false}. → Column pinning - Fixed resize handles being clipped for right-pinned columns and the last column, which cut their hit areas down to a sliver. → Resizable columns
- Fixed pin-band separators: replaced the blurred edge shadow with a crisp boundary line (
--rdt-color-pin-border, replacing--rdt-color-pin-shadow), and closed missing separators and broken row dividers around the right pin band. → Column pinning - Fixed open column-filter panels floating detached from their column on scroll; they now close on scroll and window resize.
Full changelog: https://reactdatatable.com/docs/changelog
v8.5.0
New features
- Keyboard cell navigation — new
cellNavigationprop turns the table into a WAI-ARIA grid (role="grid"/"gridcell", single Tab stop, roving tabindex). Arrow keys move between cells, including the header row, selection checkboxes, and expander buttons;Home/EndandCtrl+Home/Ctrl+Endjump to row and grid edges;Enter/F2open a cell's editor andEscapecancels it;Enter/Spacesort from a header. → Keyboard navigation (#1332) - More headless hooks —
useCellNavigation(the same logic behindcellNavigation, usable on your own markup) anduseColumnResize(drag-to-resize) are now exported. Column pinning gets three new pure-function exports —getPinnedOffsets,getPinnedTotalWidths,getPinnedCellMeta— since pinning has no state to own beyondcolumn.pinnedon your own columns. → Headless hooks
Bug fixes
- Fixed inline-edit refocus resolving by DOM id, which could steal focus into a different
DataTableinstance on the same page when two tables shared column ids and row keys.
Full changelog: https://reactdatatable.com/docs/changelog
v8.4.3
Bug fixes
- Fixed a table-level
sortFunctionnot being called when a column's sort was cycled to the "not sorted" state, which broke patterns like pinning rows to the top regardless of sort. → Row pinning
Full changelog: https://reactdatatable.com/docs/changelog