React Virtualized is worth considering when you need a particular component, such as MultiGrid for fixed rows and columns or CellMeasurer for unknown cell sizes. For an ordinary list, the project's own README suggests checking react-window as a possible lighter alternative. The adoption question is which component and API generation fit your application.
What happened when we ran it
The source-checkout install at commit c737715 failed in 15 seconds on October 18, 2026. Yarn 1.22.22 reached package fetching and rejected rimraf@6.0.1. The log gives its required Node range as "20 || >=22" and reports Node 18.20.8. This establishes an engine mismatch during that source setup. It does not establish that React Virtualized fails in a supported application environment.
The recorded sandbox configuration was 3 CPUs, 8 GB RAM and image lab-node:22. The log supplies the actual Node version; the image label does not explain why that runtime ran or establish an operating-system version. A useful next check is to repeat the source setup under a Node version satisfying the logged range. That check has not been performed here.
The checkout contained 227 files, about 26,529 source lines and occupied 1.6 MB. The scan found 1 CI workflow file, no Dockerfile and no tests directory. Those directory signals do not establish whether tests exist elsewhere. No build result, test result, dependency footprint or vulnerability count was supplied after installation failed. Browser speed and rendering correctness remain unmeasured.
Choose by the component you need
The current README lists Grid, List, Masonry, MultiGrid and Table. MultiGrid handles fixed rows and columns; CellMeasurer measures cells whose sizes are not known ahead of time. InfiniteLoader and ScrollSync provide additional reasons to inspect the catalog when the interface needs loading coordination or linked scrolling.
The application still supplies row or cell content and the sizing or measurement setup its chosen components require. The README identifies React and React DOM as peer dependencies. Table has optional presentational CSS, while functional positioning styles are applied directly to elements. These are documented integration details, not combinations rendered in our sandbox.
The documented version 10 API needs migration work
The changelog's version 10 section describes a TypeScript conversion and function components with hooks. The documented version 10 migration requires React 18 or newer. Deep imports are replaced by package-root imports, and AutoSizer moves to react-virtualized-auto-sizer 2.x.
Scroll control changes too. Controlled scroll props are replaced by ref methods. The migration guide says these methods perform one-time scrolls: targets are not reapplied when sizes or counts later change. To scroll to a newly added row, call the method after that row renders. Check that sequence in the application rather than assuming a familiar component name preserves the old behavior.
Collection has been removed with no direct replacement. WindowScroller is also removed; the documented replacement is the scrollElement prop on Grid, List, Masonry or Table. CellMeasurer children must expose a DOM element for measurement through a ref or its registerChild render prop. These requirements make the migration more than an import change for applications using those APIs.
The measured checkout and the current source documentation are separate evidence. The README at c737715 includes old deep-import examples and components removed by the version 10 migration. Use instructions matching the artifact you actually install.
Check updates after sorting or editing
The current README warns that collection data can change while the props used for comparison do not. Its example changes array contents without changing array length. It recommends passing a relevant additional prop or using the documented update methods.
A sortable table is a useful application check because rearranging rows can leave their count unchanged. Verify that changed content reaches visible rows, then check measured sizes and scroll targets where your interface depends on them. These are proposed checks, not results from this run.
Documentation earns 4/5 on this review's scale: 1 means unusable instructions, 3 means usable guidance needing reconciliation, and 5 means consistent guidance covering relevant operating limits. The README explains update behavior, and the changelog provides concrete migration steps. The score reflects those written instructions. Matching the measured checkout's older examples to the current API requires care, and the migration was not reproduced.
Compare component APIs before performance claims
React-window documents List and Grid components. React Virtualized suggests react-window as a possible lighter alternative. Compare its API first when it covers the interface you need. This review has no comparative bundle-size, frame-rate or setup measurements.
TanStack Virtual provides headless virtualization with control over markup and styles. Consider it when owning the rendering structure matters more to your application than using React Virtualized's component catalog. Its README's performance claims were not measured in this run.
What the supplied activity records establish
The supplied GitHub repository metadata, observed on October 22, 2026, records a last push at 2026-10-19T01:01:33Z. The supplied latest-release record identifies tag 9.22.6, dated 2025-01-20T21:42:46Z. That release record is metadata supplied with this review; it does not identify or verify an installed package artifact, and the bundle does not provide its release-endpoint URL or retrieval timestamp. It does not establish that the documented version 10 API is distributed.
The issue listing shows compatibility and scrolling reports updated or closed on October 18, 2026. Those records show activity, but neither older reports nor recent closures establish current rendering behavior or support quality.
Choose a component that meets a concrete requirement, confirm the installed API generation, and check its update and scrolling behavior in your application before relying on it.

