TanStack Virtual

TanStack

1 min read Original article ↗

Dynamic measurement

The hard part starts when rows are not the same height.

An estimate makes the full scroll range available immediately. Real measurements refine that model as content enters the window—without turning every offscreen item into a DOM node.

End-anchored lists

Chat turns scrolling into a contract.

A chat viewport follows new messages only when the reader is already at the end. Loading older history must preserve the current message. Streaming content changes height without stealing the anchor.

Scroll surfaces

One virtualizer idea. Many kinds of viewport.

Virtualization is a coordinate system, not a list component. Use it with the page, an element, rows and columns, sticky regions, or lanes—and snapshot that coordinate system when navigation needs an exact return.

Element list

Logs, search results, menus

Window feed

Documents and full-page feeds

Grid + lanes

Galleries, calendars, boards

Two-axis grid

Tables and spreadsheet surfaces