docs/01-app/03-api-reference/05-config/01-next-config-js/partialPrefetching.mdx
partialPrefetching enables Partial Prefetching at the app level. The framework prefetches the static parts of each route by default; opt individual routes into runtime prefetching to fetch more.
import type { NextConfig } from 'next'
const nextConfig: NextConfig = {
cacheComponents: true,
partialPrefetching: true,
}
export default nextConfig
module.exports = {
cacheComponents: true,
partialPrefetching: true,
}
partialPrefetching requires cacheComponents. Without it, next dev and next build throw at config validation.
| Value | Description |
|---|---|
true | Enables Partial Prefetching across the app. |
false | Default. No change to prefetch behavior. |
Before Partial Prefetching, Next.js prefetched per visible link: a page with N links to N routes produced ~N route prefetches as those links entered the viewport.
With partialPrefetching: true, Next.js prefetches one reusable App Shell per route instead. The shell carries the route's rendered output minus per-link data; specifics like params and search-bound data fill in after navigation. Shells are cached on the client, so a route is fetched once even if many links on the page point at it.
The pattern is similar to per-route code splitting in single-page apps: one artifact per route, shared by every link that points to it.
Good to know: Routes that read
cookies()orheaders()produce an App Shell that includes session data. The framework auto-detects this and caches the shell per session on the client.
A link can ask for more than the App Shell with <Link prefetch={true}>. The prefetch also resolves per-link runtime data like params, searchParams, and the full URL. See Runtime prefetching.
Good to know: If you use
<Link prefetch={true}>to a route that hasn't opted into Partial Prefetching, a dev console error suggests enablingpartialPrefetchingapp-wide orprefetch = 'partial'on the segment. The dev warning Insight covers each fix in detail.
A segment that exports an explicit prefetch value overrides the app-level default for that route.
| Version | Change |
|---|---|
| 16.3.0 | partialPrefetching introduced. Requires cacheComponents to be enabled. |