Row Selection

Select rows with single-click or checkboxes. Supports single selection, multi-selection, and sub-row selection.

How to Enable

const table = useTable({
  data,
  columns,
  enableRowSelection: true,       // or (row) => boolean for conditional
  enableMultiRowSelection: true,   // Allow selecting multiple rows
  enableSubRowSelection: true,     // Select sub-rows when parent is selected
  onRowSelectionChange: (updater) => { /* handle changes */ },
})

Programmatic Control

// Select a row
table.getRow('0').toggleSelected(true)

// Toggle
table.getRow('0').toggleSelected()

// Select all rows on current page
table.toggleAllPageRowsSelected(true)

// Select all rows (all pages)
table.toggleAllRowsSelected(true)

// Check selection state
table.getRow('0').getIsSelected()         // boolean
table.getIsAllRowsSelected()               // boolean
table.getIsSomeRowsSelected()              // boolean
table.getIsAllPageRowsSelected()           // boolean
table.getSelectedRowModel()                // RowModel of selected rows

// Clear selection
table.resetRowSelection(true)

Selection Column Pattern

Add a checkbox column for row selection:

columnHelper.display({
  id: 'selection',
  header: ({ table }) => (
    <input
      type="checkbox"
      checked={table.getIsAllPageRowsSelected()}
      onChange={table.toggleAllPageRowsSelected}
    />
  ),
  cell: ({ row }) => (
    <input
      type="checkbox"
      checked={row.getIsSelected()}
      onChange={row.getToggleSelectedHandler()}
    />
  ),
})