What problem does it solve? When a cached or prerendered React Server Components shell contains dynamic holes (like live prices on a prerendered product list), the live data layer cannot know what the shell actually rendered. Per-component fetching causes N+1 queries, and re-querying the list in a loader risks drifting from a stale shell. ## Core Features & Use Cases - Replayed handle manifests: Handlers push IDs or keys to a handle at render time; the data is stored with the Flight payload and replayed into the handle store on every cache or prerender hit. - Batched live loading: A DSL loader awaits ctx.rendered(), reads the collected handle data via ctx.get(), and issues one batched query for exactly the items the shell rendered. - Works with Prerender and runtime cache(): The same replay mechanism applies to build-time Prerender shells and runtime segment caches with TTLs and tags. - Use Case: A prerendered product list page where prices must stay live — the shell records rendered product IDs, and a loader fetches prices for exactly those IDs in one query on every request. ## Quick Start Show me how to keep prices live on a prerendered Rango product list page using a handle and a loader that reads the rendered product IDs.