# What changed in @glideapps/glide-data-grid

> 102 changes in @glideapps/glide-data-grid 4 to 6 from its official release notes, upgrade guides and advisories: 20 breaking, 40 new APIs and options. Each one cited. Sources checked 2026-10-25. HTML: https://unstale.sh/npm/@glideapps/glide-data-grid/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @glideapps/glide-data-grid 6

### Breaking changes

- CRA 4 is no longer officially supported and may require extra work; CRA 5 works fine. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Most CSS classes used by GDG are now prefixed to avoid conflicts with commonly used names. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- The callback receives a draw callback for painting the standard cell, enabling custom under- and overdrawing; drawCell is now a void method. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- The existing line graphKind is renamed to area; the new line chart renders a simple line chart. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- The minimap has been removed to reduce package size and maintain the public surface area. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)

### New APIs and options

- The data grid's copy and paste functionality is exposed for direct developer use. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Dropdown cells can specify label and value independently. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- DataEditor can freeze a specified number of trailing rows. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Sparkline charts can hide the x-axis with hideAxis. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- UriCell can draw an underscore when hovering over a URI value. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Keybindings can now be remapped rather than only turned off and on. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- GridColumn can configure the header menu icon with triangle, dots, or a key from headerIcons. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Allows control over proposed column destinations to prevent reordering into disallowed locations. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- UriCell supports click events, for example to open a URL. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Configures the color of the new column resize indicator. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- An optional theme property configures rounding radii for checkboxes, bubbles, skeletons, images, buttons, and other rounded elements. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Configures the height of LoadingCell skeletons. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- LoadingCell displays skeletons when skeletonWidth is set to a value greater than zero. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Applies randomized variability to LoadingCell skeleton width. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Prevents focus from leaving the grid during caret browsing or when pressing tab. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- A new cell provides a basic building block for collapsible and groupable rows. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)

### Performance

- Damage rendering is 2x faster than the 5.0 series when updating lots of data at once. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Large highlight regions no longer cause excessively slow drawing performance. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Enables an experimental iOS kinetic-scroll framerate boost to maintain a smooth experience. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Mouse hovering no longer causes excessive React rendering. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Safari renders around 2 to 5 times faster on mobile devices. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Search no longer renders eagerly, avoiding the cost when unused. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)

### Behavior and default changes

- Exports now use a more standard ESM-compliant manner, enabling better tree shaking. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Fill handle behavior and appearance are improved, including controllable selection behavior, FillPattern support, and a larger click region. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Calling getBounds with col and row undefined returns the bounding box of the entire data grid scroll area. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Hover interactions can distinguish blank spots inside the grid from areas outside the grid. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Page up and page down keybindings are now enabled by default. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- UriCell uses displayData within cell rendering. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)

### Fixes and other changes

- The bubble cell editor is horizontally centered to align with cell rendering. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Number, row-id, dropdown, and date-picker cells now use configured padding for measurement. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Copy escaping is fixed for array values. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Fixed a bug that caused getBounds to compute bounds for the wrong cell. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Fixed jittering when using grow columns. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- onDelete is now properly called when performing a cut operation. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Issues with paste logic are fixed. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- ImageCell and cells package cells now use the standard readonly flag. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Selection and highlight rings at the grid's right or bottom edge are no longer clipped. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Fixed a sparkline chart error for arrays with fewer than three values. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)
- Fixed the text cell editor color in Safari. (6.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v6.0.0)

## @glideapps/glide-data-grid 5

### Breaking changes

- BooleanCell.allowEdit is removed and replaced by BooleanCell.readonly. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- The deprecated BooleanCell.showUnchecked API is removed with no replacement. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- The deprecated drawCustomCell API is removed and replaced by drawCell. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- Consumers must import the grid CSS because the grid no longer uses CSS-in-JS. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- The deprecated onColumnResized API is removed and replaced by onColumnResize. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- The rightElementSticky prop is replaced by rightElementProps. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- The row marker header column now draws a checkbox rather than silently accepting inputs. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- The grid theme is no longer provided via ThemeProvider; pass the theme to DataEditor instead. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)

### New APIs and options

- The cursor can now be set per cell. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- The callback now receives the index of the drawn header. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- isDraggable can be set to cell or header to allow dragging on just one or the other. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- This API configures the right element, including whether it is sticky and whether it grows to consume leftover space. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- Vertical and horizontal scroll shadows are available and configurable. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- Theme variables are available as CSS variables for custom editors, except for lineHeight. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- A new hook provides access to the grid theme in JavaScript. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- The validation callback now receives the previous cell to make validation easier. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)

### Performance

- Drag scrolling is significantly smoother. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)

### Behavior and default changes

- onCellsEdited is always called before onCellEdited, enabling a single edit callback; it also correctly prevents onCellEdited when requested. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)

### Fixes and other changes

- Auto-sizing columns no longer causes their headers to be truncated. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- Context menus can now be correctly cancelled on all operating systems, not just Windows. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- Calling getBounds with a cell outside the current range no longer crashes and returns undefined instead. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- Setting gridSelection externally now keeps the newly selected selection in view. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- Headers no longer emit spurious click events when completing drag operations. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- Headers now properly select with touch events. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- Copying in Safari no longer beeps the browser. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- Trailing row options theme now applies to the trailing row even when it is not sticky. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)
- Value coercion can now return the desired selected range after coercion. (5.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v5.0.0)

## @glideapps/glide-data-grid 4

### Breaking changes

- The wrapper is gone; DataEditor now has optional width and height properties and attempts to self-size when they are unset. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- The callback now receives a Rectangle instead of GridSelection, and passing true makes the grid use getCellContent as its default implementation. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- Search now requires a getCellsForSelection implementation, including the default true option. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- DataEditor accepts an optional height property that acts like the former container sizing behavior. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- onDeleteRows is gone and is replaced by onDelete, which receives the current GridSelection and returns a boolean or a new selection. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- Selection state is unified into one object; selectedColumns and selectedRows are now part of selection, and current includes cell, range, and rangeStack. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- DataEditor accepts an optional width property that acts like the former container sizing behavior. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)

### New APIs and options

- Column selection can be configured as none, single, or multi; its default is multi. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- Controls whether column selections are exclusive or can be mixed with range and row selections. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- Custom editors can receive the initial input value when typing begins on a cell. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- A className can be passed to directly control the container sizing. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- Custom editors can define a deletedValue callback to empty the CustomCell on delete. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- Setting fillHandle to true activates a mouse-interactive downfill handle. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- Accepts highlight regions to emphasize specific ranges and provide users contextual cell information. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- A new property takes flags that enable or disable supported key combinations. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- A callback fires whenever a cell is activated, even when that cell does not allow overlays. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- The callback receives the current GridSelection and returns whether deletion continues or a replacement selection to delete. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- When true, locks the grid to a single scroll axis, which can help on mobile and touch devices. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- The glide-data-grid-cells package now includes a range cell. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- Range selection can be configured as none, cell, rect, multi-cell, or multi-rect; its default is rect. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- Controls whether range selections are exclusive or can be mixed with row and column selections. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- Row selection can be configured as none, single, or multi; its default is multi. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- Controls whether row selections are exclusive or can be mixed with range and column selections. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)

### Performance

- Rendering lots of empty text cells receives minor performance improvements. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- Image downloads are cancelled more aggressively during rapid scrolling, shortening the delay between stopping and images loading. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- The package is now lazy loaded to improve initial load times. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)

### Behavior and default changes

- The grid improves keybindings, screen reader support, focus behavior, and accessibility-tree output, with no configuration required and no option to disable support. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)

### Fixes and other changes

- Overlay editors attempt to move back onscreen when forced out; this requires IntersectionObserver. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- Fixes an off-by-one error with screen-reader columns. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- Shift+enter now correctly moves focus to the cell above. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
- Prevents an issue with vertical underscroll on mobile devices. (4.0.0) — [release notes](https://github.com/glideapps/glide-data-grid/releases/tag/v4.0.0)
