The 4.5 line is best described as plumbing: it moved the build onto newer foundations and shipped the groundwork that makes the Nuxt 5 migration boring. For an application developer most of it is invisible. For someone shipping layers and modules, three of the items are directly actionable.
enforce: 'pre' | 'post'), assumptions about Rollup-specific plugin APIs, and optimizeDeps behaviour are the things to re-test. If your module registers a Vite plugin, this is the release to run your fixtures against.builder: '@nuxt/rspack-builder'). Relevant if you write build plugins: addBuildPlugin with unplugin means one implementation serves Vite, webpack and Rspack, and a consumer switching builders should not break your module. Worth an entry in your CI matrix if you claim support.Auditing a module's Vite plugin against the Environment API direction, which starts in 4.5's Vite version and becomes the default in Nuxt 5:
import { addVitePlugin, defineNuxtModule } from '@nuxt/kit'
export default defineNuxtModule({
setup() {
addVitePlugin({
name: 'toolkit-transform',
enforce: 'pre',
// ✗ Historically: rely on addVitePlugin's `client` / `server` options.
// ✓ Now: let the plugin decide per environment, which survives the Environment API.
applyToEnvironment: environment => environment.name === 'client',
transform(code, id) {
if (!id.endsWith('.vue')) return
return code.replace('__TOOLKIT_VERSION__', JSON.stringify('2.3.0'))
},
})
},
})
Trying the alternative builder in CI, so "we support Rspack" is a tested claim rather than a hope:
strategy:
matrix:
builder: ['vite', 'rspack']
steps:
- run: pnpm add -D @nuxt/rspack-builder
if: matrix.builder == 'rspack'
- run: pnpm nuxt build test/fixtures/basic
env:
NUXT_BUILDER: ${{ matrix.builder }}
Transform plugins that worked by accident because of ordering are exactly what a bundler swap exposes. If your module transforms source, assert the output in a build-level test rather than trusting that it ran.
The current 4.x patch version, the exact contents of the 4.5 line, and which releases were security releases. Read the release notes rather than quoting this page; the list moves.
docs ↗curl -w, and note what breaks."It was a plumbing release: Vite 8 on Rolldown, Rspack 2 as an alternative builder, experimental SSR streaming, plus security releases on the 4.4 and 4.5 lines. Deliberately unexciting, because its job was to make the Nuxt 5 step small. What it changed for me as a tooling author: a bundler swap is a plugin-ordering test, so I ran our build plugins against it and asserted the transformed output rather than assuming; I added the alternative builder to the CI matrix so our support claim is tested; and the security releases reinforced the upgrade cadence, including purging caches afterwards because stale HTML references the old chunks."