Early Hints
For a page request the server sends 103 Early Hints before it starts the page: a Link header with the stylesheets, the entry script and the preloads of the matched…
For a page request the server sends 103 Early Hints before it starts the page: a Link header with the stylesheets, the
entry script and the preloads of the matched routes, so the browser fetches them while the loaders run and the page
renders. The links come from the build, never from the request. Only same-origin paths are sent (assets on a CDN keep to
the final Link header), at most 8, and only for a browser navigation (Sec-Fetch-Mode: navigate) to a page whose route
rule does not set csr: false. The browsers that act on a 103 all send that header; a script, a crawler or a load tool
does not, and gets none. The final response always carries the same Link header, so a browser, proxy or platform that
ignores the 103 loses nothing.
serve({ earlyHints }) is true by default; set false when a proxy in front mishandles informational responses. The hint
is written with response.writeEarlyHints for HTTP/1.1 requests only. Which adapters send it is in the
capability table: the Node layout (and Tarout, which runs it) does; Bun, Deno, Vercel, Netlify and
Cloudflare send the final Link header only. Cloudflare's own Early Hints setting can send a 103 from that header; on the other
platforms nothing is configured here. A custom runtime can opt in by giving the handler a host
object with an earlyHints(links) method: the handler calls it once, before the loaders, with the Link values.