unstale

npm / react-virtualized

react-virtualized

What changed in react-virtualized 10, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-25.

19 breaking11 new APIs and options2 performance1 tooling15 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.2.6 on npm

react-virtualized 1048 changes

Breaking changes 19

  • With auto alignment, an item larger than the viewport is aligned to its start instead of its end.

    10.0.0release notes

  • List no longer sets aria-label="grid" or aria-readonly by default; pass role="grid" for the previous version 9 roles.

    10.0.0release notes

  • 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.0release notes

  • 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.0release notes

  • 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.0release notes

  • Table treats non-Column child elements as columns with default column props instead of throwing.

    10.0.0release notes

  • Exported default*Props objects replace static defaultProps on components.

    10.0.0release notes

  • The package now ships one ES module and one CommonJS module with an exports map.

    10.0.0release notes

  • 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.0release notes

  • InfiniteLoader re-renders its registered child using the first supported imperative method; custom function-component children must expose one.

    10.0.0release notes

  • ListProps no longer includes Grid props that do not apply to a single-column list, including estimatedColumnSize and overscanColumnCount.

    10.0.0release notes

  • React 18 or newer is required; the react and react-dom peer dependency range is ^18.0.0 || ^19.0.0.

    10.0.0release notes

  • Deep imports and the UMD build are no longer supported; import components from the package root.

    10.0.0release notes

  • Refs now expose imperative handles rather than component instances; type them with the exported *ImperativeAPI types.

    10.0.0release notes

  • ScrollSync and ArrowKeyStepper now drive children through a registerChild ref callback instead of controlled scroll props.

    10.0.0release notes

  • Grid, List, Masonry, and Table can use the window or a scrollable element as their scrolling container, replacing WindowScroller.

    10.0.0release notes

  • Controlled scroll props were removed. Use imperative ref methods for one-time scrolling; List and Table methods now take an object argument.

    10.0.0release notes

  • Manual position updates are no longer needed because the component remeasures its position on scroll, resize, and render.

    10.0.0release notes

  • WindowScroller and its associated types and props were removed; use scrollElement on supported components.

    10.0.0release notes

New APIs and options 11

  • List and Table getOffsetForRow accept align; alignment is deprecated.

    10.0.0release notes

  • Grid adds getTotalColumnsWidth.

    10.0.0release notes

  • Grid adds getTotalRowsHeight.

    10.0.0release notes

  • Sets an initial horizontal scroll offset, including during server rendering; it is read at mount.

    10.0.0release notes

  • Sets an initial vertical scroll offset, including during server rendering; it is read at mount and is ignored when scrollElement is supplied.

    10.0.0release notes

  • Masonry's imperative handle adds forceUpdate, recomputeGridSize, and invalidateCellSizeAfterRender.

    10.0.0release notes

  • Masonry supports row direction.

    10.0.0release notes

  • Top-right and bottom-left scrollbars can be hidden.

    10.0.0release notes

  • 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.0release notes

  • A ScrollElement type is exported for the scrollElement API.

    10.0.0release notes

  • Imperative handles add scrollToCell for List, Table, and MultiGrid; Grid's method accepts an align parameter.

    10.0.0release notes

Performance 2

  • Derived column widths and row heights are updated incrementally instead of checking every cell on each measurement, improving measurement of long lists.

    10.0.0release notes

  • Set sideEffects to false to improve builds.

    10.0.0release notes

Tooling 1

  • TypeScript types are provided for component props, imperative handles, and renderer parameters.

    10.0.0release notes

Fixes and other changes 15

  • 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.0release notes

  • CellMeasurer handles non-element and missing children without crashing, prioritizes registered elements, and ignores measure calls after unmount.

    10.0.0release notes

  • 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.0release notes

  • Grid now works with React StrictMode and concurrent rendering; derived state is no longer mutated during render.

    10.0.0release notes

  • When row or column counts shrink, measurements for removed cells are discarded so totals and scrollable range no longer include them.

    10.0.0release notes

  • Table's headerHeight prop is optional because it defaults to 0.

    10.0.0release notes

  • InfiniteLoader recomputes Grid and List sizes starting at the newly loaded row rather than row 0.

    10.0.0release notes

  • Masonry no longer renders cells beyond cellCount after it shrinks, or recomputes positions for removed cells.

    10.0.0release notes

  • MultiGrid recomputeGridSize now updates its own layout, and changes to fixed scrolling, caches, sizes, renderers, and counts are handled correctly.

    10.0.0release notes

  • Components now detect scrollElement changes between null and an element, attaching or removing listeners as needed.

    10.0.0release notes

  • scrollToColumn is supported for server-side rendering.

    10.0.0release notes

  • Scrolling methods now scroll the window or scroll element for window-scrolled components instead of updating internal state that was overwritten.

    10.0.0release notes

  • scrollToRow is supported for server-side rendering.

    10.0.0release notes

  • Table keys header and row cells by each Column's key so cells move with columns when reordered.

    10.0.0release notes

  • Table no longer sets aria-sort="none" on a column header that is not sortable.

    10.0.0release notes