Migration and compatibility
This section helps you move between versions, keep contracts stable, and avoid regressions.
1) Row identity contract
- Each row must have a stable
rowId(orid/key). - If row shape is unstable, provide
features.selection.resolveRowKey(row, index).
2) Data updates
- When replacing data, use
api.refreshRows("manual"). - When changing columns, use
api.refreshColumns("manual").
3) Sort/filter stability
- Keep column
keystable between versions. - Avoid renaming
keywithout migrating state.
4) UI back‑compat
If you change the UI adapter:
- keep bindings
grid.ui.bindHeaderCell,grid.ui.bindDataCell, - keep a11y roles and roving tabindex,
- do not break
actionButtonand context‑menu contracts.
5) When things diverge
- Capture
api.getRowSnapshot()before/after the change. - Compare
sort/filter/groupmodels. - Use runtime events for diagnostics.