# What changed in react-virtualized

> 48 changes in react-virtualized 10 from its official release notes, upgrade guides and advisories: 19 breaking, 11 new APIs and options. Each one cited. Sources checked 2026-10-25. HTML: https://unstale.sh/npm/react-virtualized/

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

## react-virtualized 10

### Breaking changes

- With auto alignment, an item larger than the viewport is aligned to its start instead of its end. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- List no longer sets aria-label="grid" or aria-readonly by default; pass role="grid" for the previous version 9 roles. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- AutoSizer was removed from react-virtualized; use the react-virtualized-auto-sizer package 2.x, whose renderProp or ChildComponent replaces the children function. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Children must accept a ref or be registered with registerChild; unmeasurable cells retain the cache's default size rather than being cached as 0×0. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Derived column widths and row heights use measured cells only; default sizes apply only when a row or column has no measured cells. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Table treats non-Column child elements as columns with default column props instead of throwing. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Exported default*Props objects replace static defaultProps on components. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- The package now ships one ES module and one CommonJS module with an exports map. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Grid and List/Table offset methods default to the last cell or row and auto alignment rather than using removed scroll target props. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- InfiniteLoader re-renders its registered child using the first supported imperative method; custom function-component children must expose one. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- ListProps no longer includes Grid props that do not apply to a single-column list, including estimatedColumnSize and overscanColumnCount. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- React 18 or newer is required; the react and react-dom peer dependency range is ^18.0.0 || ^19.0.0. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Deep imports and the UMD build are no longer supported; import components from the package root. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Refs now expose imperative handles rather than component instances; type them with the exported *ImperativeAPI types. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- ScrollSync and ArrowKeyStepper now drive children through a registerChild ref callback instead of controlled scroll props. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Grid, List, Masonry, and Table can use the window or a scrollable element as their scrolling container, replacing WindowScroller. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Controlled scroll props were removed. Use imperative ref methods for one-time scrolling; List and Table methods now take an object argument. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Manual position updates are no longer needed because the component remeasures its position on scroll, resize, and render. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- WindowScroller and its associated types and props were removed; use scrollElement on supported components. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)

### New APIs and options

- List and Table getOffsetForRow accept align; alignment is deprecated. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Grid adds getTotalColumnsWidth. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Grid adds getTotalRowsHeight. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Sets an initial horizontal scroll offset, including during server rendering; it is read at mount. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Sets an initial vertical scroll offset, including during server rendering; it is read at mount and is ignored when scrollElement is supplied. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Masonry's imperative handle adds forceUpdate, recomputeGridSize, and invalidateCellSizeAfterRender. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Masonry supports row direction. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Top-right and bottom-left scrollbars can be hidden. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- With a scrollElement, the component renders at full height, virtualizes the scroll element's viewport, and its scroll methods scroll that element; height is optional. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- A ScrollElement type is exported for the scrollElement API. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Imperative handles add scrollToCell for List, Table, and MultiGrid; Grid's method accepts an align parameter. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)

### Performance

- Derived column widths and row heights are updated incrementally instead of checking every cell on each measurement, improving measurement of long lists. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Set sideEffects to false to improve builds. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)

### Tooling

- TypeScript types are provided for component props, imperative handles, and renderer parameters. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)

### Fixes and other changes

- Scroll offsets are scaled only once content exceeds about 16.7 million pixels in every browser, avoiding imprecise scrolling on Firefox and Safari for long lists. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- CellMeasurer handles non-element and missing children without crashing, prioritizes registered elements, and ignores measure calls after unmount. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- The helper no longer mutates defaultSortBy, and creates new sortBy and sortDirection values when criteria change so React state updates re-render Table. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Grid now works with React StrictMode and concurrent rendering; derived state is no longer mutated during render. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- When row or column counts shrink, measurements for removed cells are discarded so totals and scrollable range no longer include them. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Table's headerHeight prop is optional because it defaults to 0. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- InfiniteLoader recomputes Grid and List sizes starting at the newly loaded row rather than row 0. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Masonry no longer renders cells beyond cellCount after it shrinks, or recomputes positions for removed cells. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- MultiGrid recomputeGridSize now updates its own layout, and changes to fixed scrolling, caches, sizes, renderers, and counts are handled correctly. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Components now detect scrollElement changes between null and an element, attaching or removing listeners as needed. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- scrollToColumn is supported for server-side rendering. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Scrolling methods now scroll the window or scroll element for window-scrolled components instead of updating internal state that was overwritten. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- scrollToRow is supported for server-side rendering. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Table keys header and row cells by each Column's key so cells move with columns when reordered. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
- Table no longer sets aria-sort="none" on a column header that is not sortable. (10.0.0) — [release notes](https://github.com/bvaughn/react-virtualized/blob/HEAD/CHANGELOG.md)
