Bound view-holder (visible) Buffered holder (off-screen) Naive mode: unrecycled row
⚠ Couldn't load the 3D engineThree.js failed to load from the CDN. Check your connection and reload.

List Virtualization & View-Holder Recycling

Every fast-scrolling mobile feed — a photo grid, a chat history, a card list — relies on the same trick: it never builds one view per data row. This simulator renders a 3D model of a 10,000-row list and its recycler pool exactly as a mobile framework implements it. Drag the scroll slider (or use the fling button) and watch the sim compute the first visible row from the scroll offset, walk a small window of view-holders sized to the viewport plus your buffer setting, and rebind — not recreate — any holder whose row scrolled out of range. Live counters track how many holders are alive, how many rebind ("recycle") events have fired, and how the node count and memory footprint compare against flipping virtualization off, where the sim allocates one block per row instead and both numbers spike.