This guide covers changes to the beta DataTable component. These APIs may continue to evolve before the stable release.
Overview
The legacy top-level props for configuring editable cells have been removed fromColumnDef<T>:
editMode— Removed. UseeditConfig.modeinstead.onChange— Removed. UseeditConfig.onChangeinstead.options— Removed. UseeditConfig.optionsinstead.
editConfig and have now been fully removed. All editable cell configuration is done through the editConfig object.
Design Rationale
Why remove instead of deprecate further?
The recent switch toSelectMenuSync and MultiSelectMenuSync for select and multiselect edit cells changed the options shape and onChange signatures. Maintaining backward compatibility with the legacy top-level props for these new internals was cumbersome — each editable cell component needed adapters to translate between the old { value, label } format and the new { id, label } format, and to convert onChange callbacks back and forth.
Since DataTable is a beta component, removing the legacy API now is the cleaner path forward rather than carrying this compatibility layer into the stable release.
Migration Guide
Text editing
Select editing
Theoptions shape changed from { value, label } to { id, label } (matching SelectMenuOption), and onChange now receives a SelectMenuOption | null instead of a raw value.
Multiselect editing
Same option shape change as select.onChange now receives MultiSelectMenuOption[] instead of a raw value array.
Boolean editing
Boolean editing was only available viaeditConfig, so no migration is needed if you were already using editConfig. If you were using legacy editMode with a top-level onChange for boolean columns, move the onChange into editConfig:
Breaking Changes
The following changes are breaking:editModehas been removed fromColumnDef<T>— UseeditConfig.modeinstead- Top-level
onChangehas been removed fromColumnDef<T>— UseeditConfig.onChangeinstead - Top-level
optionshas been removed fromColumnDef<T>— UseeditConfig.optionsinstead - TanStack column
meta.onChangeandmeta.optionshave been removed — Usemeta.editConfiginstead
Why breaking?
The recent select and multiselect cell changes (switching toSelectMenuSync / MultiSelectMenuSync) made the legacy compatibility adapters cumbersome to maintain. Since DataTable is a beta component, we chose to remove the legacy API rather than continue adapting it to each internal change.