npm / @glideapps/glide-data-grid
@glideapps/glide-data-grid
What changed in @glideapps/glide-data-grid 4 to 6, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-25.
20 breaking40 new APIs and options10 performance8 behavior and defaults24 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@glideapps/glide-data-grid 644 changes
Breaking changes 5
CRA 4 is no longer officially supported and may require extra work; CRA 5 works fine.
Most CSS classes used by GDG are now prefixed to avoid conflicts with commonly used names.
The callback receives a draw callback for painting the standard cell, enabling custom under- and overdrawing; drawCell is now a void method.
The existing line graphKind is renamed to area; the new line chart renders a simple line chart.
The minimap has been removed to reduce package size and maintain the public surface area.
New APIs and options 16
The data grid's copy and paste functionality is exposed for direct developer use.
Dropdown cells can specify label and value independently.
DataEditor can freeze a specified number of trailing rows.
Sparkline charts can hide the x-axis with hideAxis.
UriCell can draw an underscore when hovering over a URI value.
Keybindings can now be remapped rather than only turned off and on.
GridColumn can configure the header menu icon with triangle, dots, or a key from headerIcons.
Allows control over proposed column destinations to prevent reordering into disallowed locations.
UriCell supports click events, for example to open a URL.
Configures the color of the new column resize indicator.
An optional theme property configures rounding radii for checkboxes, bubbles, skeletons, images, buttons, and other rounded elements.
Configures the height of LoadingCell skeletons.
LoadingCell displays skeletons when skeletonWidth is set to a value greater than zero.
Applies randomized variability to LoadingCell skeleton width.
Prevents focus from leaving the grid during caret browsing or when pressing tab.
A new cell provides a basic building block for collapsible and groupable rows.
Performance 6
Damage rendering is 2x faster than the 5.0 series when updating lots of data at once.
Large highlight regions no longer cause excessively slow drawing performance.
Enables an experimental iOS kinetic-scroll framerate boost to maintain a smooth experience.
Mouse hovering no longer causes excessive React rendering.
Safari renders around 2 to 5 times faster on mobile devices.
Search no longer renders eagerly, avoiding the cost when unused.
Behavior and default changes 6
Exports now use a more standard ESM-compliant manner, enabling better tree shaking.
Fill handle behavior and appearance are improved, including controllable selection behavior, FillPattern support, and a larger click region.
Calling getBounds with col and row undefined returns the bounding box of the entire data grid scroll area.
Hover interactions can distinguish blank spots inside the grid from areas outside the grid.
Page up and page down keybindings are now enabled by default.
UriCell uses displayData within cell rendering.
Fixes and other changes 11
The bubble cell editor is horizontally centered to align with cell rendering.
Number, row-id, dropdown, and date-picker cells now use configured padding for measurement.
Copy escaping is fixed for array values.
Fixed a bug that caused getBounds to compute bounds for the wrong cell.
Fixed jittering when using grow columns.
onDelete is now properly called when performing a cut operation.
Issues with paste logic are fixed.
ImageCell and cells package cells now use the standard readonly flag.
Selection and highlight rings at the grid's right or bottom edge are no longer clipped.
Fixed a sparkline chart error for arrays with fewer than three values.
Fixed the text cell editor color in Safari.
@glideapps/glide-data-grid 527 changes
Breaking changes 8
BooleanCell.allowEdit is removed and replaced by BooleanCell.readonly.
The deprecated BooleanCell.showUnchecked API is removed with no replacement.
The deprecated drawCustomCell API is removed and replaced by drawCell.
Consumers must import the grid CSS because the grid no longer uses CSS-in-JS.
The deprecated onColumnResized API is removed and replaced by onColumnResize.
The rightElementSticky prop is replaced by rightElementProps.
The row marker header column now draws a checkbox rather than silently accepting inputs.
The grid theme is no longer provided via ThemeProvider; pass the theme to DataEditor instead.
New APIs and options 8
The cursor can now be set per cell.
The callback now receives the index of the drawn header.
isDraggable can be set to cell or header to allow dragging on just one or the other.
This API configures the right element, including whether it is sticky and whether it grows to consume leftover space.
Vertical and horizontal scroll shadows are available and configurable.
Theme variables are available as CSS variables for custom editors, except for lineHeight.
A new hook provides access to the grid theme in JavaScript.
The validation callback now receives the previous cell to make validation easier.
Performance 1
Drag scrolling is significantly smoother.
Behavior and default changes 1
onCellsEdited is always called before onCellEdited, enabling a single edit callback; it also correctly prevents onCellEdited when requested.
Fixes and other changes 9
Auto-sizing columns no longer causes their headers to be truncated.
Context menus can now be correctly cancelled on all operating systems, not just Windows.
Calling getBounds with a cell outside the current range no longer crashes and returns undefined instead.
Setting gridSelection externally now keeps the newly selected selection in view.
Headers no longer emit spurious click events when completing drag operations.
Headers now properly select with touch events.
Copying in Safari no longer beeps the browser.
Trailing row options theme now applies to the trailing row even when it is not sticky.
Value coercion can now return the desired selected range after coercion.
@glideapps/glide-data-grid 431 changes
Breaking changes 7
The wrapper is gone; DataEditor now has optional width and height properties and attempts to self-size when they are unset.
The callback now receives a Rectangle instead of GridSelection, and passing true makes the grid use getCellContent as its default implementation.
Search now requires a getCellsForSelection implementation, including the default true option.
DataEditor accepts an optional height property that acts like the former container sizing behavior.
onDeleteRows is gone and is replaced by onDelete, which receives the current GridSelection and returns a boolean or a new selection.
Selection state is unified into one object; selectedColumns and selectedRows are now part of selection, and current includes cell, range, and rangeStack.
DataEditor accepts an optional width property that acts like the former container sizing behavior.
New APIs and options 16
Column selection can be configured as none, single, or multi; its default is multi.
Controls whether column selections are exclusive or can be mixed with range and row selections.
Custom editors can receive the initial input value when typing begins on a cell.
A className can be passed to directly control the container sizing.
Custom editors can define a deletedValue callback to empty the CustomCell on delete.
Setting fillHandle to true activates a mouse-interactive downfill handle.
Accepts highlight regions to emphasize specific ranges and provide users contextual cell information.
A new property takes flags that enable or disable supported key combinations.
A callback fires whenever a cell is activated, even when that cell does not allow overlays.
The callback receives the current GridSelection and returns whether deletion continues or a replacement selection to delete.
When true, locks the grid to a single scroll axis, which can help on mobile and touch devices.
The glide-data-grid-cells package now includes a range cell.
Range selection can be configured as none, cell, rect, multi-cell, or multi-rect; its default is rect.
Controls whether range selections are exclusive or can be mixed with row and column selections.
Row selection can be configured as none, single, or multi; its default is multi.
Controls whether row selections are exclusive or can be mixed with range and column selections.
Performance 3
Rendering lots of empty text cells receives minor performance improvements.
Image downloads are cancelled more aggressively during rapid scrolling, shortening the delay between stopping and images loading.
The package is now lazy loaded to improve initial load times.
Behavior and default changes 1
The grid improves keybindings, screen reader support, focus behavior, and accessibility-tree output, with no configuration required and no option to disable support.
Fixes and other changes 4
Overlay editors attempt to move back onscreen when forced out; this requires IntersectionObserver.
Fixes an off-by-one error with screen-reader columns.
Shift+enter now correctly moves focus to the cell above.
Prevents an issue with vertical underscroll on mobile devices.