This guide covers changes to the beta DataTable component. These APIs may continue to evolve before the stable release.
Overview
The row activation API has been removed fromDataTable. The following props are no longer available:
isActivatable— Removed.activeRowIds— Removed.defaultActiveRowIds— Removed.onActivateRow— Removed.
isSelectable, selectedRowIds, defaultSelectedRowIds, and onSelectRow props.
onClickRow has been added for consumers who need both.
Design Rationale
Why remove row activation?
Row activation and row selection were two overlapping interaction patterns that served the same purpose—reacting to a user choosing a row. Maintaining two parallel APIs added complexity without a clear UX distinction. SinceDataTable is a beta component, removing the activation API now keeps the surface clean before the stable release.
Row selection with onSelectRow handles the same use cases. If your previous onActivateRow handler opened a drawer or performed a side effect on row click, you can wire that same logic into onSelectRow.
Migration Guide
Simple case: activation only
If you were only usingisActivatable and onActivateRow with no separate selection, swap to isSelectable and onSelectRow:
isSelectable renders a checkbox column for each row. If you previously relied on clicking anywhere on the row to trigger activation, users will now click the checkbox to trigger onSelectRow. Consider whether this UX change is acceptable for your use case.Combined case: activation and selection together
If your table used bothisActivatable (e.g., to open a drawer) and isSelectable (e.g., to populate a selected-IDs set), combine both callbacks into onSelectRow:
Controlled active state
If you were controlling active row state viaactiveRowIds or defaultActiveRowIds, use selectedRowIds or defaultSelectedRowIds instead:
Breaking Changes
The followingDataTableProps have been removed:
isActivatable— UseisSelectableinsteadactiveRowIds— UseselectedRowIdsinsteaddefaultActiveRowIds— UsedefaultSelectedRowIdsinsteadonActivateRow— UseonSelectRowinstead