File: row-selection.md | Updated: 11/15/2025
Search...
+ K
Auto
Docs Examples GitHub Contributors
Docs Examples GitHub Contributors
Docs Examples GitHub Contributors
Docs Examples Github Contributors
Docs Examples Github Contributors
Docs Examples Github Contributors
Docs Examples Github Contributors
Docs Examples Github Contributors
Maintainers Partners Support Learn StatsBETA Discord Merch Blog GitHub Ethos Brand Guide
Documentation
Framework
React
Version
v8
Search...
+ K
Menu
Getting Started
Core Guides
Feature Guides
Core APIs
Feature APIs
Enterprise
Examples
Framework
React
Version
v8
Menu
Getting Started
Core Guides
Feature Guides
Core APIs
Feature APIs
Enterprise
Examples
On this page
Copy Markdown
Row selection state is stored on the table using the following shape:
tsx
export type RowSelectionState = Record<string, boolean>
export type RowSelectionTableState = {
rowSelection: RowSelectionState
}
export type RowSelectionState = Record<string, boolean>
export type RowSelectionTableState = {
rowSelection: RowSelectionState
}
By default, the row selection state uses the index of each row as the row identifiers. Row selection state can instead be tracked with a custom unique row id by passing in a custom getRowId function to the the table.
Table Options
-------------
### enableRowSelection
tsx
enableRowSelection?: boolean | ((row: Row<TData>) => boolean)
enableRowSelection?: boolean | ((row: Row<TData>) => boolean)
tsx
enableMultiRowSelection?: boolean | ((row: Row<TData>) => boolean)
enableMultiRowSelection?: boolean | ((row: Row<TData>) => boolean)
tsx
enableSubRowSelection?: boolean | ((row: Row<TData>) => boolean)
enableSubRowSelection?: boolean | ((row: Row<TData>) => boolean)
Enables/disables automatic sub-row selection when a parent row is selected, or a function that enables/disables automatic sub-row selection for each row.
(Use in combination with expanding or grouping features)
tsx
onRowSelectionChange?: OnChangeFn<RowSelectionState>
onRowSelectionChange?: OnChangeFn<RowSelectionState>
If provided, this function will be called with an updaterFn when state.rowSelection changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.
Table API
---------
### getToggleAllRowsSelectedHandler
tsx
getToggleAllRowsSelectedHandler: () => (event: unknown) => void
getToggleAllRowsSelectedHandler: () => (event: unknown) => void
Returns a handler that can be used to toggle all rows in the table.
### getToggleAllPageRowsSelectedHandler
tsx
getToggleAllPageRowsSelectedHandler: () => (event: unknown) => void
getToggleAllPageRowsSelectedHandler: () => (event: unknown) => void
Returns a handler that can be used to toggle all rows on the current page.
tsx
setRowSelection: (updater: Updater<RowSelectionState>) => void
setRowSelection: (updater: Updater<RowSelectionState>) => void
Sets or updates the state.rowSelection state.
tsx
resetRowSelection: (defaultState?: boolean) => void
resetRowSelection: (defaultState?: boolean) => void
Resets the rowSelection state to the initialState.rowSelection, or true can be passed to force a default blank state reset to {}.
tsx
getIsAllRowsSelected: () => boolean
getIsAllRowsSelected: () => boolean
Returns whether or not all rows in the table are selected.
tsx
getIsAllPageRowsSelected: () => boolean
getIsAllPageRowsSelected: () => boolean
Returns whether or not all rows on the current page are selected.
tsx
getIsSomeRowsSelected: () => boolean
getIsSomeRowsSelected: () => boolean
Returns whether or not any rows in the table are selected.
tsx
getIsSomePageRowsSelected: () => boolean
getIsSomePageRowsSelected: () => boolean
Returns whether or not any rows on the current page are selected.
tsx
toggleAllRowsSelected: (value: boolean) => void
toggleAllRowsSelected: (value: boolean) => void
Selects/deselects all rows in the table.
tsx
toggleAllPageRowsSelected: (value: boolean) => void
toggleAllPageRowsSelected: (value: boolean) => void
Selects/deselects all rows on the current page.
tsx
getPreSelectedRowModel: () => RowModel<TData>
getPreSelectedRowModel: () => RowModel<TData>
tsx
getSelectedRowModel: () => RowModel<TData>
getSelectedRowModel: () => RowModel<TData>
### getFilteredSelectedRowModel
tsx
getFilteredSelectedRowModel: () => RowModel<TData>
getFilteredSelectedRowModel: () => RowModel<TData>
### getGroupedSelectedRowModel
tsx
getGroupedSelectedRowModel: () => RowModel<TData>
getGroupedSelectedRowModel: () => RowModel<TData>
Row API
-------
### getIsSelected
tsx
getIsSelected: () => boolean
getIsSelected: () => boolean
Returns whether or not the row is selected.
tsx
getIsSomeSelected: () => boolean
getIsSomeSelected: () => boolean
Returns whether or not some of the row's sub rows are selected.
tsx
getIsAllSubRowsSelected: () => boolean
getIsAllSubRowsSelected: () => boolean
Returns whether or not all of the row's sub rows are selected.
tsx
getCanSelect: () => boolean
getCanSelect: () => boolean
Returns whether or not the row can be selected.
tsx
getCanMultiSelect: () => boolean
getCanMultiSelect: () => boolean
Returns whether or not the row can multi-select.
tsx
getCanSelectSubRows: () => boolean
getCanSelectSubRows: () => boolean
Returns whether or not the row can select sub rows automatically when the parent row is selected.
tsx
toggleSelected: (value?: boolean) => void
toggleSelected: (value?: boolean) => void
Selects/deselects the row.
tsx
getToggleSelectedHandler: () => (event: unknown) => void
getToggleSelectedHandler: () => (event: unknown) => void
Returns a handler that can be used to toggle the row.
