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