Prefetch Stages
Partial Prefetching loads a route in three stages. Open a message with Warm prefetch vs Shell only and watch which panels resolve before the click.
Subject + meta — always in the default Link prefetch
static / no deferralBody preview — included when Link uses prefetch={true}
await prefetch()Full thread — only runs after the user clicks
await navigation()Inbox
Each row links to the same detail route twice. Prefer next start — prefetch timing in next dev can differ.
- Production deploy succeeded9:14 AM
Deploy Bot·Build #482 finished in 41s. Cache Components shell hit rate is up; no regressions on the marketing routes.
- Prefetch budget for the inboxYesterday
Alex Rivera·Can we defer the full thread until click? Warming every message body on hover is too chatty for mobile.
- cacheLife on message previewsMon
Jordan Lee·Minutes feels right for preview text. Thread replies can stay minutes too so back/forward stays snappy.
- Shell still works offlineSun
Priya Nair·With Partial Prefetching the subject line shows even when the network drops. Dynamic holes just wait.
Try this
- Stay on this inbox ~1s, then open a message with Warm prefetch. The preview panel should appear near-instantly; the thread still streams after the click.
- Open another via Shell only. Subject is instant; both preview and thread show Suspense fallbacks until the navigation fetch finishes.
- Optional: DevTools → Network → filter
?_rscto compare prefetch vs navigation payloads.
Detail route shape
<ShellHeader /> // App Shell
<Suspense fallback={…}>
<PrefetchPreview /> // await prefetch()
</Suspense>
<Suspense fallback={…}>
<NavigationThread /> // await navigation()
</Suspense>