WEB Signal 344
Nuxt 4.5 adds experimental SSR streaming, moves to Vite 8, and ships Rspack 2 builder
Nuxt 4.5 ships experimental SSR streaming that flushes the HTML shell immediately, upgrades to Vite 8, and introduces a Rspack 2 builder rebuilt on Rsbuild, alongside a stable error code system and new composables.
The SSR streaming feature improves Time to First Byte but introduces correctness constraints around middleware, since late status, header, or cookie mutations cannot reach the client after the shell is flushed. Upgrading requires a lockfile refresh due to major bumps to unhead v3 and unctx v3, and the unhead v3 upgrade can be a breaking type change for useHead. Nuxt 3 reaches end-of-life on July 31, 2026, adding pressure to move forward.
Written by elseif from the cluster below · every claim links back to a sourceThe three things worth knowing
Experimental SSR streaming flushes the HTML shell immediately but automatically falls back to buffered rendering for bots and routes using redirect, cache, isr, or swr rules.
The stable error code system built on nostics assigns greppable codes like NUXT_E1001 with explanations and concrete fixes.
Upgrading requires nuxt upgrade --dedupe due to major bumps to unhead v3 and unctx v3, with unhead v3 introducing a potentially breaking type change for useHead.
THE READ
What the cluster adds up to.
Nuxt 4.5 represents a build-layer and runtime shift for the Vue-based full-stack framework. The release moves to Vite 8 and replaces the previous Rspack builder with one rebuilt on top of Rsbuild, targeting Rspack 2. These are foundational changes that affect plugin compatibility and build configuration, and the Vite migration guide is recommended reading for anyone with custom plugins.
The headline runtime feature is experimental SSR streaming, enabled with a single config flag. It flushes the HTML shell immediately and streams the body as Vue renders it, improving Time to First Byte. However, streaming does not reduce server-side render time; it only changes what the browser can paint while that work continues. Once the shell is flushed, late status code, header, or cookie mutations cannot reach the client, turning middleware assumptions into correctness issues rather than purely performance concerns.
Streaming is automatically disabled for bots and crawlers so search engines still receive fully rendered HTML. Routes using redirect, cache, isr, or swr rules also fall back to the buffered renderer. This means teams adopting streaming need to audit their middleware and route rules to understand where the buffered path will be used instead, rather than assuming streaming applies uniformly.
Beyond streaming, the release ships a stable error code system built on nostics, where warnings carry greppable codes such as NUXT_E1001 alongside a short explanation and a concrete fix. New composables include useLayout, which returns a read-only computed ref of the resolved layout for the current route, and named views that let a page mount multiple NuxtPage outlets using a [email protected] filename convention. useFetch and useAsyncData also gain a reactive enabled option for gating conditional fetches. A reported collision between the built-in useLayout and Vuetify's composable of the same name surfaced a NUXT_B6002 warning, indicating that ecosystem compatibility testing remains ongoing.
Upgrading carries real costs. The release pulls in major bumps to unhead v3 and unctx v3, and developers are advised to refresh their lockfile with nuxt upgrade --dedupe. The unhead v3 upgrade introduces type-narrowing for useHead that can be a breaking type change. With Nuxt 3 reaching end-of-life on July 31, 2026, teams still on the older major version face a narrowing window to upgrade, and the breaking type changes in this release mean that migration is not a drop-in replacement.
Written by elseif from the cluster below · checked for specifics the sources never containedTHE CLUSTER
↗