# What changed in @tanstack/react-virtual

> 8 changes in @tanstack/react-virtual 3 from its official release notes, upgrade guides and advisories: 2 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/npm/@tanstack/react-virtual/

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

## @tanstack/react-virtual 3

### New APIs and options

- Adds opt-in direct DOM updates for scroll positioning, with directDomUpdatesMode and containerRef. (3.14.0) — [release notes](https://github.com/TanStack/virtual/releases/tag/%40tanstack/react-virtual%403.14.0)
- Adds a React-specific option to control whether flushSync is used for synchronous scroll correction during measurement. It defaults to true; disabling it avoids the React 19 warning but may increase visible whitespace during fast scrolling with dynamically sized items. (3.13.15) — [release notes](https://github.com/TanStack/virtual/releases/tag/%40tanstack/react-virtual%403.13.15)

### Performance

- Uses an incrementing number counter instead of allocating an object on each dispatch, eliminating a steady-state GC source in scroll-heavy apps. (3.13.25) — [release notes](https://github.com/TanStack/virtual/releases/tag/%40tanstack/react-virtual%403.13.25)

### Behavior and default changes

- When containerRef is omitted, directDomUpdates skips all direct DOM writes while continuing to skip re-renders, allowing consumers to own DOM updates. (3.14.3) — [release notes](https://github.com/TanStack/virtual/releases/tag/%40tanstack/react-virtual%403.14.3)

### Fixes and other changes

- Rows that mount without the owner re-rendering are now positioned as they register through measureElement, or when they mount with the container. (3.14.14) — [release notes](https://github.com/TanStack/virtual/releases/tag/%40tanstack/react-virtual%403.14.14)
- The synchronous notify raised from measureElement no longer uses flushSync, avoiding a development warning when React calls it from a ref callback during commit. (3.14.13) — [release notes](https://github.com/TanStack/virtual/releases/tag/%40tanstack/react-virtual%403.14.13)
- Fixes a gap at the top of the list after an end-anchored prepend by growing the size container before syncing the scroll position. (3.14.8) — [release notes](https://github.com/TanStack/virtual/releases/tag/%40tanstack/react-virtual%403.14.8)
- When measurement-affecting options such as count change, the virtualizer now notifies the framework so getTotalSize() updates without manual useMemo workarounds. (3.13.13) — [release notes](https://github.com/TanStack/virtual/releases/tag/%40tanstack/react-virtual%403.13.13)
