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.

1App Shell

Subject + meta — always in the default Link prefetch

static / no deferral
2Per-link prefetch

Body preview — included when Link uses prefetch={true}

await prefetch()
3Navigation

Full thread — only runs after the user clicks

await navigation()
01

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.

02

Try this

  1. 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.
  2. Open another via Shell only. Subject is instant; both preview and thread show Suspense fallbacks until the navigation fetch finishes.
  3. Optional: DevTools → Network → filter ?_rsc to compare prefetch vs navigation payloads.

Detail route shape

<ShellHeader />                    // App Shell
<Suspense fallback={…}>
  <PrefetchPreview />             // await prefetch()
</Suspense>
<Suspense fallback={…}>
  <NavigationThread />            // await navigation()
</Suspense>