# What changed in virtua

> 47 changes in virtua 0.49 to 0.54 from its official release notes, upgrade guides and advisories: 4 breaking, 9 new APIs and options. Each one cited. Sources checked 2026-11-03. HTML: https://unstale.sh/npm/virtua/

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

## virtua 0.54

### New APIs and options

- Adds the ssrCount prop to VGrid and VMasonry. (0.54.0) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.54.0)

### Performance

- Fixes unnecessary rendering of lists outside the viewport. (0.54.1) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.54.1)
- Optimizes wheel event handling. (0.54.1) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.54.1)

### Fixes and other changes

- Fixes a memory leak of the first data in React components. (0.54.1) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.54.1)
- Fixes jumps when items are removed or reordered and broken layout with shift. (0.54.0) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.54.0)
- Suppresses the “ResizeObserver loop completed with undelivered notification…” notification. (0.54.0) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.54.0)
- Fixes base offset calculation for horizontal WindowVirtualizer in RTL. (0.54.0) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.54.0)

## virtua 0.53

### Breaking changes

- The per-axis imperative scrolls of VGrid were merged into one. (0.53.6) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.53.6)
- Horizontal VList now defaults to display: block. (0.53.0) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.53.0)

### New APIs and options

- Adds the onResize prop. (0.53.2) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.53.2)
- Added the keepMounted prop to VMasonry. (0.53.1) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.53.1)
- A VMasonry component is now available. (0.53.0) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.53.0)

### Behavior and default changes

- ViewportComponentAttributes now accepts all attributes. (0.53.0) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.53.0)

### Fixes and other changes

- Fixed a blank viewport when it is scrolled before mount. (0.53.6) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.53.6)
- Virtua now handles the touchcancel event. (0.53.5) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.53.5)
- In Svelte, stale keepMounted indexes are guarded against the store's length. (0.53.4) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.53.4)
- Fixes a bug where relayout called onResize. (0.53.3) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.53.3)

## virtua 0.52

### Breaking changes

- Grid types were renamed, which may require updating type references. (0.52.1) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.52.1)
- Angular component events were renamed to avoid conflicts with browser events. (0.52.0) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.52.0)

### New APIs and options

- VGrid props were refined to support section headers. (0.52.0) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.52.0)

### Performance

- Improves performance of spans. (0.52.6) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.52.6)
- VGrid was optimized with keepMounted, spans and sectionRows. (0.52.3) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.52.3)
- VGrid with pinned rows and columns is optimized, improving performance for developers using pinned rows and columns. (0.52.2) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.52.2)

### Behavior and default changes

- Virtua explicitly opts out of React Compiler. (0.52.9) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.52.9)
- VGrid is no longer experimental and is available across all frameworks. (0.52.0) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.52.0)

### Fixes and other changes

- Fixes a blank viewport after it is hidden or detached. (0.52.10) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.52.10)
- Fixes a regression in jump compensation at the end. (0.52.8) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.52.8)

## virtua 0.51

### Performance

- Re-renders are optimized for Svelte. (0.51.1) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.51.1)
- Re-renders are optimized for Vue. (0.51.1) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.51.1)

### Fixes and other changes

- Fixes viewport measurement when using position: fixed. (0.51.3) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.51.3)
- Adds a guard for the keepMounted prop. (0.51.2) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.51.2)
- Corrects the ref convention in Solid adapters. (0.51.2) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.51.2)
- The index attribute no longer leaks to the DOM in Solid adapters. (0.51.1) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.51.1)
- Fixed a bug where scroll-behavior: smooth could break programmatic scrolling. (0.51.0) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.51.0)
- Fixed a bug where the scroll position could jump back during fast scrolling. (0.51.0) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.51.0)

## virtua 0.50

### New APIs and options

- A Layout interface was created. (0.50.4) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.50.4)
- Support for pretext was added. (0.50.4) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.50.4)
- Virtua now supports Angular, allowing developers to use it with Angular applications. (0.50.0) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.50.0)

### Behavior and default changes

- CacheSnapshot was stabilized. (0.50.3) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.50.3)

### Fixes and other changes

- Fixed a race condition when imperative scroll is called during measurement. (0.50.6) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.50.6)
- Fixes a bug that could make the estimated size 0. (0.50.5) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.50.5)
- Missing ssrCount props were implemented. (0.50.4) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.50.4)
- Fixed the angular handle. (0.50.3) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.50.3)
- Improved SSR support in Svelte. (0.50.2) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.50.2)
- Svelte avoids observing elements when the component is already unmounted. (0.50.1) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.50.1)

## virtua 0.49

### New APIs and options

- Adds the itemProps prop to Svelte VList and Virtualizer. (0.49.3) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.49.3)

### Fixes and other changes

- Keeps the top-anchored item pinned when rows above it grow. (0.49.2) — [release notes](https://github.com/inokawa/virtua/releases/tag/0.49.2)
