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-visibility— try 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.
Related modules
- 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.