References — fw-10 A Virtualized List Engine

Primary sources first. Read the real implementation after you have written yours, never before.

The libraries

  • TanStack Virtual — framework-agnostic core; measurement, dynamic sizing, and the scroll-offset maths in one readable file
  • react-window — deliberately minimal; the clearest starting point
  • react-virtualized — the older, larger predecessor; useful for seeing which features turned out to be essential
  • Virtua — a modern take handling dynamic sizes without measurement passes

Platform primitives

  • IntersectionObserver — visibility without scroll handlers
  • ResizeObserver — dynamic item measurement. Note it runs inside "update the rendering" and is specified to drop notifications rather than hang (fe-01 (sibling project)).
  • content-visibilitytry this first. Measured in fe-05 (sibling project): 98% off initial layout for a 261,011-node DOM, one declaration, no JavaScript, and find-in-page still works.
  • overflow-anchor — scroll anchoring, and how to opt out when it fights you

What virtualization costs you

Find-in-page over unrendered rows · sequential focus order · scroll restoration · Ctrl+A and copy · screen-reader row counts (aria-rowcount exists precisely because of this) · print. Every one is a feature the browser was giving you free.

  • fe-05 — CSS containment (sibling project) — the declarative alternative, measured
  • fe-30 — Large-scale UI performance (planned) — where the comparison is made properly
  • fe-06 — Layout (sibling project) — intrinsic sizing and why measurement is expensive

When a claim here proves stale, record it in PROGRESS.md section 7.