Files
Andrew ClarkandGitHub c39c7179a4 Suppress prefetch={true} warning when route opts out via instant = false (#95099)
In dev with Cache Components, navigating via a `<Link prefetch={true}>`
to a route that hasn't opted into Partial Prefetching logs a warning,
since the full prefetch pulls in dynamic data and defeats the
static/dynamic split.

`instant = false` is the explicit API for opting a route out of this
validation, so it should silence the warning. Previously it didn't: an
`instant = false` segment set no prefetch hint at all, so the warning
still fired.

Add a `SubtreeHasInstantFalse` PrefetchHint, set on any segment that
exports `instant = false` and propagated up to the root (mirroring
`SubtreeHasPartialPrefetching`). The dev warning now skips routes where
this bit is present anywhere on the target subtree.

This is warning-only and kept separate from the existing
`PrefetchDisabled` bit, which feeds `StaticPrefetchDisabled` and would
change actual prefetch behavior.
2026-06-24 17:52:22 -04:00

24 lines
679 B
TypeScript

import { Suspense } from 'react'
import { connection } from 'next/server'
// Explicitly opts out of partial prefetching via `instant = false`. This is the
// API for silencing the warning, so navigating here via a `prefetch={true}`
// link should NOT warn even though there's no partial prefetching opt-in.
export const instant = false
export default function Page() {
return (
<main>
<div id="static-content">Instant-false static</div>
<Suspense fallback={<div>Loading dynamic...</div>}>
<Dynamic />
</Suspense>
</main>
)
}
async function Dynamic() {
await connection()
return <div id="dynamic-content">Instant-false dynamic</div>
}