# What changed in react-window

> 24 changes in react-window 2 from its official release notes, upgrade guides and advisories: 6 new APIs and options. Each one cited. Sources checked 2026-10-17. HTML: https://unstale.sh/npm/react-window/

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

## react-window 2

### New APIs and options

- Accepts an optional ownerDocument parameter and caches the measured size separately for each document. (2.3.4) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.3.4)
- Grid accepts an optional columnKey prop. (2.3.0) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.3.0)
- List accepts an optional rowKey prop. (2.3.0) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.3.0)
- Grid accepts an optional rowKey prop. (2.3.0) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.3.0)
- Use the defaultHeight prop to server render the initial set of rows. (2.2.5) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.2.5)
- Use the defaultWidth prop to server render the initial set of cells. (2.2.5) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.2.5)

### Performance

- Fixes unnecessary size calculations when scrolling beyond cached bounds. (2.3.3) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.3.3)
- Avoids allocating bounds for items preceding fixed-size jumps. (2.3.2) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.3.2)
- Calculates fixed-size visible ranges directly and searches cached variable-size bounds instead of scanning from the beginning. (2.3.2) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.3.2)

### Behavior and default changes

- List, Grid, and useDynamicRowHeight use the ResizeObserver, requestAnimationFrame, and document belonging to the window containing the list, supporting rendering into another window such as an iframe or portal pop-up. (2.3.4) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.3.4)
- Uses fractional percentage sizing. (2.3.2) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.3.2)

### Fixes and other changes

- Rows with an aria-hidden attribute are now measured. (2.3.4) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.3.4)
- Fixes center alignment near list boundaries. (2.3.2) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.3.2)
- Fixes dropped prop updates. (2.3.2) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.3.2)
- Fixes stale row measurements when rows are reordered by key. (2.3.2) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.3.2)
- Fixes scrolling and alignment in RTL layouts. (2.3.2) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.3.2)
- Improves scrollToRow accuracy for rows with dynamic heights. (2.3.2) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.3.2)
- Grid updates its direction when the dir prop changes after mount. (2.3.1) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.3.1)
- useDynamicRowHeight no longer instantiates ResizeObserver when server-rendering. (2.2.6) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.2.6)
- Imperative scroll-to methods throw a RangeError instead of a regular Error when passed an invalid index. (2.2.3) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.2.3)
- Adjust the TypeScript return type to work around a ReactNode versus ReactElement mismatch caused by #875. (2.2.2) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.2.5), [release notes](https://github.com/bvaughn/react-window/releases/tag/2.2.2)
- The return type is explicitly annotated as ReactElement to fix TypeScript warnings for React versions 18.0–18.2. (2.2.2) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.2.2)
- The return type is explicitly annotated as ReactElement to fix TypeScript warnings for React versions 18.0–18.2. (2.2.2) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.2.2)
- Adjust the TypeScript return type to work around a ReactNode versus ReactElement mismatch caused by #875. (2.2.2) — [release notes](https://github.com/bvaughn/react-window/releases/tag/2.2.5), [release notes](https://github.com/bvaughn/react-window/releases/tag/2.2.2)
