# What changed in nuxt

> 503 changes in nuxt 3 to 4 from its official release notes, upgrade guides and advisories: 34 breaking, 11 deprecations, 27 security, 150 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/npm/nuxt/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## nuxt 4

### Breaking changes

- Routing is case-sensitive by default in compatibility version 5. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Under the Nuxt 5 compatibility defaults, clearNuxtState resets state to defaults. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Typed route data now checks validated body, query and headers more tightly, including whether a request body is required. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- The internal error route is served only during an error render and can no longer be reached from outside. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Nuxt CLI v4 requires Node.js v22.21+, v24.11+ or v26+. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- This release requires Node.js ^22.22.3 || ^24.15.0 || >=26.0.0. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- The Nuxt CLI v4 drops nuxt init; project creation is supported through npm create nuxt@latest. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- The nuxt/server sendRedirect helper returns the response rather than sending it. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Server-only head composables are no longer auto-imported under the Nuxt 5 compatibility defaults. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Removed setResponseHeader from nuxt/server; developers using this export must use an alternative. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Removed setResponseHeaders from nuxt/server; developers using this export must use an alternative. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- A template that never finishes compiling now fails the build instead of exiting successfully. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Removed toNuxtRequestEvent from nuxt/server; developers using this export must use an alternative. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Non-object island props are rejected. (3.21.11, 4.5.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.2), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.11)
- Rejects a top-level as prop for islands. (3.21.10, 4.5.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.10)
- With compatibilityVersion 5, keyed function source is required. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- For custom slots, Nuxt no longer attaches prefetch handlers automatically; the slot exposes prefetch, prefetched, and shouldPrefetch so applications can wire them up. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- Nuxt upgrades to Rspack 2 and uses Rsbuild-based internals, so custom Rspack configuration may need review. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- Nuxt upgrades to unhead v3; useHead has tighter types, and promise input, deprecated in v2, is no longer supported. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- Nuxt migrates to unhead v3, which may introduce breaking type changes from stricter useHead typing. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- Nuxt migrates to Vite 8; custom Vite plugins and configuration may need review against the Vite migration guide. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- Rejects script-capable protocols in href values. (3.21.7, 4.4.7) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.7), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.7)
- Validates protocols before reload and rejects cross-origin paths. (3.21.7, 4.4.7) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.7), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.7)
- Requires a loopback host when same-origin signals are missing. (4.4.7) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.7)
- Middleware now runs for page islands. (4.4.6) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.6)
- Nuxt upgrades to vue-router v5 and removes its dependency on unplugin-vue-router; apps using unplugin-vue-router directly can remove it. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- Query strings are no longer decoded in the SSR context URL. (3.21.1, 4.3.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.1)
- noUncheckedIndexedAccess is enabled in the Nitro server TypeScript config, improving type safety but potentially surfacing new server-code type errors. (3.21.0, 4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- mergeModels is no longer auto-imported. (3.20.0, 4.2.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.0)

### Security

- Payload URLs are parsed as origin-relative paths, preventing paths such as //x/_payload.json from serving the wrong payload. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Nuxt dev server discloses project root and workspace UUID via the Chrome DevTools workspace endpoint (3.21.10, 4.5.1) — [security advisory](https://github.com/advisories/GHSA-7C4V-FWGW-9RF7)
- Nuxt route rules silently dropped for mixed-case paths, bypassing appMiddleware auth gates (incomplete fix for CVE-2026-53721) (3.21.10, 4.5.1) — [security advisory](https://github.com/advisories/GHSA-HXVH-4H3W-PRP9)
- Nuxt runtime payload cache discloses another user's SSR data across users and to unauthenticated clients (4.5.1) — [security advisory](https://github.com/advisories/GHSA-WM8W-6QJM-CV43), [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.1)
- Nuxt: Server-Side Remote Code Execution via Runtime Template Injection in Nuxt Server Island Props (3.21.10, 4.5.1) — [security advisory](https://github.com/advisories/GHSA-9473-5F9J-94WQ)
- Nuxt: Unauthenticated CPU exhaustion parsing and hashing the Nuxt island endpoint body before hash validation (3.21.10, 4.5.1) — [security advisory](https://github.com/advisories/GHSA-9PGF-384G-P7MV)
- Nuxt: Unauthenticated out-of-memory crash via unbounded v-for expansion in island rendering (3.21.10, 4.5.1) — [security advisory](https://github.com/advisories/GHSA-HXCR-HM88-MPQ6)
- Nuxt: Unauthorized Component Instantiation via Server Island Props (3.21.10, 4.5.1) — [security advisory](https://github.com/advisories/GHSA-48HR-524C-V5W3), [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.10)
- Restricts the workspace endpoint to local requests. (4.4.7) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.7)
- Cross-site scripting via <NoScript> slot content in Nuxt's head components (3.21.7, 4.4.7) — [security advisory](https://github.com/advisories/GHSA-M3Q2-P4FW-W38M), [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.7), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.7)
- Rejects prototype-chain keys in the island registry. (4.4.7) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.7)
- Applies an isScriptProtocol guard to the open option. (4.4.7) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.7)
- Blocks open redirects caused by path normalization. (4.4.7) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.7)
- Nuxt: Dev server discloses project absolute path and persistent workspace UUID via `/.well-known/appspecific/com.chrome.devtools.json` (4.4.7) — [security advisory](https://github.com/advisories/GHSA-RQ7W-G337-39QQ)
- Nuxt dev server vite-node IPC socket is world-connectable on Linux (3.21.7, 4.4.7) — [security advisory](https://github.com/advisories/GHSA-534H-C3CW-V3H9)
- Nuxt: Reflected XSS in `<NuxtLink>` via unsanitised `javascript:` or `data:` URL (3.21.7, 4.4.7) — [security advisory](https://github.com/advisories/GHSA-934W-87QH-QR26)
- Nuxt: Route-rule middleware bypass via case-sensitivity mismatch between vue-router and the routeRules matcher (3.21.7, 4.4.7) — [security advisory](https://github.com/advisories/GHSA-MM7M-92G8-7M47), [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.10), [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.7)
- Nuxt: URL-handling weaknesses in `navigateTo` and `reloadNuxtApp`: SSR open redirect, client-side script execution via the `open` option, and protocol-relative bypass in `reloadNuxtApp` (3.21.7, 4.4.7) — [security advisory](https://github.com/advisories/GHSA-C9CV-MQ2M-PPP3)
- Escapes props in server-rendered output. (3.21.7, 4.4.7) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.7), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.7)
- Island request hashes are validated against props. (3.21.6, 4.4.6) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.6), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.6)
- Nuxt: `__nuxt_island` endpoint does not bind responses to request props, enabling shared-cache poisoning (3.21.6, 4.4.6) — [security advisory](https://github.com/advisories/GHSA-G8WJ-3CR3-6W7V)
- Nuxt: Reflected XSS in `navigateTo()` external redirect (3.21.6, 4.4.6) — [security advisory](https://github.com/advisories/GHSA-FX6J-W5W5-H468), [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.6), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.6)
- Nuxt's route middleware is not enforced when rendering `.server.vue` pages via `/__nuxt_island/page_*` (3.21.6, 4.4.6) — [security advisory](https://github.com/advisories/GHSA-HG3F-28RG-4JXJ)
- Cookie decoding now handles unsafe number parsing. (4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0)
- HTML is escaped in the development error page stack trace. (3.20.2, 4.2.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.2), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.2)

### Deprecations

- Top-level options duplicated by `nitro.*` are deprecated. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Nuxt warns when a public/ file shadows an application route. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Nuxt warns when a parent page lacks NuxtPage. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- statusCode remains supported but is deprecated in favor of status ahead of v5. (3.21.0, 4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- statusMessage remains supported but is deprecated in favor of statusText ahead of v5. (3.21.0, 4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- Deprecates ImportPresetWithDeprecation. (3.20.1, 4.2.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.1)
- The schema configResolved hook is deprecated. (4.2.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.0)
- The schema extend hook is deprecated. (4.2.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.0)
- The extendConfig hook is deprecated. (3.20.0, 4.2.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.0)

### New APIs and options

- Accepts a map of handler variants per server API, allowing one module to support Nuxt 4 and Nuxt 5. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Accepts a map of plugin variants per server API, allowing one module to support Nuxt 4 and Nuxt 5. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- The createUseFetch and createUseAsyncData factories accept addons that can declare call-site options, adjust merged options, wrap handlers with middleware, and extend composable return values. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Accepts a map of handler variants per server API, allowing one module to support Nuxt 4 and Nuxt 5. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `addServerImports` gains server variant support. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Types in `app/types` are auto-imported. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adds Nuxt-owned augmentable server types that modules can extend through @nuxt/schema. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Nuxt adds the `appSecret` configuration option. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Case-sensitive routing is available behind the Nuxt 5 compatibility flag, matching Nitro. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `createUseAsyncData` now supports addons. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `createUseFetch` now supports addons. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adds an API for comparing two Nuxt config loads. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adds an API to check for and offer to install optional dependencies with the user's package manager. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- An experimental option enables early return after `navigateTo`. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Modules can now set experimental.asyncContext. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Modules can now set `experimental.asyncContext`. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Enables build-time static page-route matching so unmatched requests can return 404 without creating the Vue app or running plugins and middleware. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- An experimental early 404 behavior is added for unmatched page routes. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Enables serializable definePageMeta keys to be extracted at build time. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Renders error.vue in the same request after a server render fails, preserving already-set headers and cookies and avoiding a second Nitro middleware and route-rules pass. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Makes navigateTo in script setup short-circuit the rest of setup, so redirects and 404s do not throw on missing data. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Client-side payload extraction is newly available behind the Nuxt 5 compatibility flag. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Prerenders error pages as real HTML, such as 404.html or pages for specified status codes, instead of an empty SPA shell. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- An experimental pure Vite server mode is added. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Enables the rebuilt typed fetch behavior in Nuxt 4; it is opt-in because of small type-inference changes and a rewrite needed for hand-written ServerRoutes augmentations. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Typed $fetch is newly available behind the Nuxt 5 compatibility flag. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Rejects typed fetch calls to paths that do not exist instead of typing their return values as unknown. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Automatically excludes data fetched within hydrate-never component trees from the payload. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Typed pages are newly available behind the Nuxt 5 compatibility flag. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Exports $Fetch from nuxt/app. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Nuxt exports the `$Fetch` type. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `nuxt/server` adds helpers for forwarded URLs, cookies, and route rules. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Setting compatibilityVersion to 5 enables the Nuxt 5 defaults together; each default can also be enabled or disabled individually. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adds an API to obtain an install command using the user's package manager. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adds an API for module logic that explicitly needs to know the installed Nitro version. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `getRequestIP` is now available from `nuxt/server`. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `getRouterParam` is now available from `nuxt/server`. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `getRouterParams` is now available from `nuxt/server`. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `getValidatedQuery` is now available from `nuxt/server`. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `handleCors` is now available from `nuxt/server`. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adds an API for module logic that explicitly needs to check the installed Nitro version. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- An isomorphic typed-fetch mode types pages as GET routes, allowing type-safe $fetch calls from the Vue renderer. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Lets module authors declare server API compatibility when Nuxt cannot infer it from a file's imports. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adds a hook used by Nuxt CLI v4 to show per-module setup time as it happens. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Nuxt Kit adds the `module:before` hook. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adds a hook used by Nuxt CLI v4 to show per-module setup time as it happens. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Nuxt Kit adds the `module:done` hook. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- A new command talks to the running server using the Nuxt CLI lock file. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adds documentation search from the CLI using a query. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adds a takeover option that lets a preview server replace a running preview server. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- A new server-only import source provides portable, web-standard server utilities typed against Nuxt’s RequestEvent, so server code need not import h3 or nitropack. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Response headers are set through event.res.headers when using the new server runtime. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- A new `nuxt/server` entry point provides portable server code and server helpers. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- A new command talks to the running server using the Nuxt CLI lock file. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adds an augmentable NuxtPageMeta type for typing NuxtPage.meta. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- An augmentable `NuxtPageMeta` interface is provided for `NuxtPage.meta`. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adds Nuxt-owned augmentable server types that modules can extend through @nuxt/schema. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adds an API for observing changes between two config loads. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adds a top-level alias for nitro.prerender. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- A top-level `prerender` alias is added for `nitro.prerender`. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `readValidatedBody` is now available from `nuxt/server`. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Nuxt Kit adds `resolveServerVariant` for resolving server variants. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Nuxt adds a root application secret, configured through NUXT_APP_SECRET, from which modules and server features can derive purpose-specific secrets. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Async data gains a `serialize` option to keep it out of the payload. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adds @nuxt/vite-server as an experimental server builder selectable with the vite shorthand; Nitro remains the default. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `nuxt/server` adds `serverFetch` for server-side fetching. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adds Nuxt-owned augmentable server types that modules can extend through @nuxt/schema. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adds Nuxt-owned augmentable server types that modules can extend through @nuxt/schema. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Session utilities are now available from `nuxt/server`. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adds ShallowRef to the Vue auto-import preset. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- The Vue preset adds the `ShallowRef` type. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Templates can declare what changes invalidate them, avoiding unnecessary regeneration. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adds per-context overrides for the app tsconfig. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adds per-context overrides for the server tsconfig. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `useAppConfig` is now available from `nuxt/server`. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `useAppConfig` is now available from `nuxt/server`. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- The serialize option accepts false to keep data out of the __NUXT_DATA__ payload. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- The serialize option accepts false to keep data out of the __NUXT_DATA__ payload. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `useLayout` is exported. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `useLoadingIndicator` is exported. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `useRequestHeader` is exported. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `nuxt/server` adds `useServerHooks`. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Session helpers in nuxt/server seal sessions into a cookie, avoiding the need to configure server-side storage. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adds host-aware prompts, status messages, and in-progress tasks, rendered by the CLI dev panel when available. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Adding the vapor attribute to script setup opts an individual component or page into Vapor mode. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Nuxt adds support for Vue Vapor. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Server code now has import.meta.test defined. (4.5.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.2)
- Adds vue.optionsApi and disables it for Nuxt v5 and later. (4.5.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.1)
- Nuxt Kit supports the allowImportingTsExtensions option. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- AsyncData gains an enabled option. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- Setting the watcher to builder lets Nuxt reuse Vite's watcher, reducing memory use and file handles; it becomes the default with compatibilityVersion 5. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- getIslandHash is now exposed alongside improved island and key hashing. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- getIslandHash is exposed, alongside hashKey, with improved hashing for keys. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- hashKey is now exposed alongside improved island and key hashing. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- hashKey is exposed, alongside getIslandHash, with improved hashing for keys. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- head.push is added for client-side use. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- The environment name is exposed on import.meta. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- Sibling page files can use the name@view.vue convention to render into named NuxtPage outlets. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- Named views are supported through a filename convention. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- A new CLI command uninstalls a module and cleans up its configuration. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- The --checker option lets developers force vue-tsc or Golar for type-checking. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- NuxtLink prefetch props are exposed in its custom slot. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- Routes can opt out of SSR streaming with streaming: false. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- Tracing channels are supported for SSR events. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- Experimental SSR streaming is available. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- Nuxt Kit adds updateAppConfig, a utility for module authors. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- useFetch gains support for the enabled option. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- A composable is added for accessing the resolved route layout. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- Adds the PackagePreset type to addImportsSources. (4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3)
- Page composables are now exported from this import path. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- Create custom useAsyncData instances with default options, using the same pattern as createUseFetch. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- Create custom useFetch instances with default options; object defaults are overridden by usage options, while a function gives full control over merging. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- Pass props to layouts through the layout property in definePageMeta; layout props are typed for autocomplete and type-checking. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- Enable this experimental option to normalize page component names to match route names. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- The 'client' mode inlines the full payload in the initial HTML while still generating _payload.json for client-side navigation. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- Profile build phases, modules, and bundler plugins, with timing, RSS, and heap data written to trace, JSON, and CPU profile reports. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- Print timing breakdowns to the console for more detailed build profiling. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- Add the NuxtAnnouncer component to the app for accessibility announcements. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- NuxtLink.useLink now accepts refs as inputs. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- Announce dynamic in-page changes to assistive technology with polite and assertive messages. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- Set refresh to extend a cookie's expiration when its value is assigned again, even if the value has not changed. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- Define view transition types in Nuxt's experimental view transitions support to use different styles for different navigation patterns. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- Allows specifying moduleDependencies by meta.name. (3.21.1, 4.3.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.1)
- Adds status and statusText getters to NuxtError. (4.3.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.1)
- Module authors can pass async functions that construct Vite plugins, enabling lazy loading when plugins are needed. (3.21.0, 4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- Module authors can pass async functions that construct webpack plugins, enabling lazy loading when plugins are needed. (3.21.0, 4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- Route rules can set layouts directly with appLayout, allowing centralized layout management without scattering definePageMeta calls across pages. (3.21.0, 4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- A module inherited from a Nuxt layer can be disabled by setting its options to false. (3.21.0, 4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- The Nuxt kit exports a type representing the Nuxt major version. (4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0)
- A new import alias targets the server directory and prevents server code from being imported in client or shared contexts. (3.21.0, 4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- setPageLayout accepts a second parameter for passing props to the selected layout. (3.21.0, 4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- The status property is introduced as the Web API naming-convention replacement for statusCode. (4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0)
- The statusText property is introduced as the Web API naming-convention replacement for statusMessage. (4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0)
- Components can specify a declarationPath. (3.20.0, 4.2.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.0)
- Extracts useAsyncData and useLazyAsyncData handlers into separate chunks; for prerendered sites, handlers can be tree-shaken from the client bundle. (4.2.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.0)
- Enables experimental TypeScript plugin support through the @dxup/nuxt module for navigation and other Nuxt-specific editor features. (4.2.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.0)
- Enables opt-in use of the Vite Environment API, which can improve development performance and eliminate edge case bugs. (4.2.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.0)
- Setting this option to 5 opts into breaking changes planned for Nuxt v5; the notes recommend using it only for testing. (4.2.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.0)
- NuxtLink accepts object-format href values. (3.20.0, 4.2.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.0)
- Adds a numeric prop for relative time. (3.20.0, 4.2.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.0)
- Adds a relativeStyle prop for relative time. (3.20.0, 4.2.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.0)
- resolveModule accepts an extensions option. (3.20.0, 4.2.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.0)
- Adds the setGlobalHead utility. (3.20.0, 4.2.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.0)
- Handlers receive an AbortController signal, and refresh or execute accept a signal to cancel pending requests. (4.2.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.0)

### Performance

- The portable event's web view is built on first access, improving performance when it is not needed. (4.6.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.1)
- Typed fetch is rebuilt using a route tree, reducing TypeScript resolution cost and avoiding instantiation-limit errors as route counts grow. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Internal links render as plain <a> elements without useLink, computed values, or reactive state, making server rendering faster. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Parses the cookie header once per request, or once per client microtask, rather than on every call; SSR cookie values set in a plugin can be read later in a page. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Scans are reused for unchanged structures to improve performance. (4.5.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.2)
- Unchanged generated files are no longer rewritten, reducing unnecessary file-system work. (4.5.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.2)
- Prefetch hints are omitted for chunks that are never hydrated. (4.5.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.2)
- Island renders are deduplicated during prerendering. (3.21.11, 4.5.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.2), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.11)
- Unneeded plugin handling is tree-shaken from production builds. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- Concurrent callers sharing a key now deduplicate `getCachedData` calls. (4.4.5) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.5)
- Skips the key watcher when the key is static. (4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3)
- Route generation now uses unrouting; dev server changes are up to 28x faster when pages are not added or removed, and generation is no longer sensitive to page file ordering. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- An in-memory LRU payload cache can serve _payload.json requests without triggering a full re-render. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- The nuxt:ssr-styles plugin is significantly faster. (4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0)
- Route rules are compiled into a client chunk using rou3, removing radix3 from the client bundle and eliminating app manifest fetches. (3.21.0, 4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- Renderer dependencies are precomputed at build time. (3.20.0, 4.2.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.0)

### Behavior and default changes

- A default value is now provided for this experimental option. (4.6.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.2)
- Component directories support grouping folders. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Can now be used at the top level of setup(). (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Scopes dev error reports for remote peers and keeps the dev error channel out of production builds. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Error rendering keeps headers and cookies set by the failed render and avoids a second pass through Nitro middleware and route rules. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- The builder watcher mode is among the Nuxt 5 defaults available through the compatibility flag. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Generated tsconfigs no longer include baseUrl under the Nuxt 5 compatibility defaults. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- A (group)/ folder in components/ is excluded from the generated component name. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- The modulepreload polyfill is no longer inlined in UI templates. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Normalized page names are among the Nuxt 5 defaults available through the compatibility flag. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Now has an explicit public API. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Prefetches server-page islands; prefetch hints are throttled and prioritized, with scheduled work deduplicated, concurrency-limited, and cancelled when navigating away. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- When the router has no route for a target such as a public/ PDF, the link falls through to a full-page load, so external is no longer required. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Readonly cookies are no longer written on the client. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Redirect route rules return a meta-refresh body. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `nuxt/server` handlers receive a portable event. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Types in `server/types` are auto-imported. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `typedPages` is enabled when `compatibilityVersion` is 5. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Becomes the shared baseline for all four generated tsconfigs. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- The expires option now accepts a function for dynamic expiration values. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `useCookie` supports a dynamic `expires` value. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Links inside islands now use client-side navigation. (3.21.11, 4.5.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.2), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.11)
- The islands transform now supports the Options API in v-for. (4.5.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.2)
- Revalidates cached route payloads instead of using force-cache. (3.21.10, 4.5.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.10)
- Converts inline route rules exactly or drops them with a warning. (4.5.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.1)
- Client components now render inside nested server components. (3.21.10, 4.5.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.10)
- Nuxt now honors the system HTTP_PROXY environment variable in the builder environment. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- Nuxt now honors the system HTTPS_PROXY environment variable in the builder environment. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- Build and runtime warnings and errors now carry stable codes, explanations, and suggested fixes; production output retains the code while omitting verbose guidance. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- The nitro-server package statically re-exports h3 named symbols. (4.4.6) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.6)
- Inlines CSS for non-island children of server components. (3.21.5, 4.4.5) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.5), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.5)
- Nuxt reads `.env` before resolving the Nuxt schema. (3.21.5, 4.4.5) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.5), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.5)
- Head DOM updates are deferred until the page transition finishes. (3.21.5, 4.4.5) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.5), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.5)
- Allows passing arrays of objects as props. (4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3)
- Allows passing arrays of objects as props. (4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3)
- Rspack and webpack emit styles.mjs when inline styles are off. (3.21.3, 4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.3)
- Reset state to its initial value instead of clearing it to undefined. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- Visibility prefetching is disabled in development to prevent Vite from unnecessarily discovering dependencies and reloading. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- Payloads are no longer extracted when ssr is false. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- The default ignore list now includes direnv and vendor. (4.3.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.1)
- Changes in server/ are watched for the builder:watch hook. (3.21.1, 4.3.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.1)
- allowArbitraryExtensions is enabled by default in the TypeScript configuration. (3.21.0, 4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- The development error overlay can be dragged and minimized; its position and minimized state persist across page reloads. (3.21.0, 4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- Payload extraction works in development mode with nitro.static enabled or for pages with isr, swr, prerender or cache route rules. (3.21.0, 4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- The inlineStyles feature now works with webpack and rspack builders as well as Vite, enabling critical CSS inlining across these bundlers. (3.21.0, 4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- Payload extraction now works with ISR, SWR and cache routeRules, allowing client navigation to use cached payloads and reducing API calls. (3.21.0, 4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- Module dependencies can now be specified as an async function. (3.21.0, 4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- Starts the error overlay minimized based on the status code. (3.20.1, 4.2.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.1)
- Uses directory paths in moduleEntryPaths. (4.2.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.1)
- Uses rolldown replace only during builds. (4.2.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.1)
- During development, Nuxt displays both the custom error page and a toggleable technical error overlay. (4.2.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.0)
- Component auto-imports are supported as arguments of h(). (3.20.0, 4.2.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.0)

### Tooling

- The `nuxt` dev server handler variant is now typed. (4.6.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.1)
- `$fetch` and `useFetch` are typed from generated server routes. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Development now warns when a route rendered with noScripts relies on client-side JavaScript. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- The recommended upgrade command is `npx nuxt upgrade --dedupe`, which refreshes the lockfile and pulls in the latest Nuxt dependencies, including Nuxt CLI v4. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Nuxt CLI v4 adds an interactive terminal UI, richer startup and reload diagnostics, and a CLI-level error channel that also streams build progress and app logs. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Development now warns when a page's payload exceeds 100 kB. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Development SSR errors now show mapped stack traces and source code frames in an overlay or standalone error page, with the same report printed in the terminal. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `$fetch` and `useFetch` are typed from generated server routes. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Route params defined with definePageMeta now have generated types. (4.5.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.2)
- Requires a loopback peer for the chrome devtools workspace endpoint. (3.21.10, 4.5.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.10)
- Watches external component directories during development. (3.21.10, 4.5.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.10)
- Types auto-imported $fetch with Nitro's $Fetch type. (4.5.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.1)
- Nuxt and Vite reuse the Vite watcher via experimental.watcher. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- The dev server now reloads when local layer nuxt.config files change. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- A nuxt/* build output contract is introduced across the listed build and schema packages. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- This package is now an optional peer dependency, so it is not required in every installation. (4.4.6) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.6)
- Import protection errors now include suggestions and a trace showing where a problematic import originated. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- When Vite discovers dependencies at runtime, Nuxt provides a copy-pasteable config snippet for pre-bundling them and warns about unresolvable entries at startup. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- Layer server directories are now included in tsconfig.server.json. (3.20.2, 4.2.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.2), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.2)
- Test files now support TypeScript path aliases. (4.2.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.2)

### Fixes and other changes

- AnyFetchPath is re-exported for emitted server route types. (4.6.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.2)
- Module directories with a dot in their name are no longer excluded from the app tsconfig. (4.6.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.2)
- String and array values for appMiddleware are normalized. (4.6.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.2)
- Restoring a deferred prerendered route now preserves its middleware layout. (4.6.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.2)
- The dev SSR entry is warmed up from a Nitro plugin. (4.6.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.2)
- Module dependencies are resolved from the module that declares them. (4.6.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.2)
- Error state is preserved on aborted or cancelled navigation. (4.6.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.2)
- H3 and Nitro presets are disabled only when nitroAutoImports is off. (4.6.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.2)
- nuxt/app now resolves to the app's runtime. (4.6.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.2)
- Response headers are now passed to render:response listeners. (4.6.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.2)
- Rooted paths are resolved through the URL parser. (4.6.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.2)
- Router parameters are read from the path matched by h3. (4.6.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.2)
- Scroll offset is fixed for IDs starting with numbers. (4.6.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.2)
- Server route rules match case-insensitively unless routing is sensitive. (4.6.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.2)
- The configured SPA loading template location is respected. (4.6.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.2)
- Dependencies under absolute transpile directories are no longer inlined. (4.6.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.2)
- Server island head now follows useHeadSafe rules. (4.6.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.2)
- Types reachable from async data composables are now exported. (4.6.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.1)
- Accepts any `baseURL` when the fetch response type is named. (4.6.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.1)
- Nuxt dev server handlers receive a `RequestEvent`. (4.6.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.1)
- Handler paths match across both Nitro majors. (4.6.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.1)
- Each development server handler is registered once. (4.6.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.1)
- The global `$fetch` is typed with Nuxt's `TypedFetch`. (4.6.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.1)
- Vite detects the enclosing string delimiter when processing inline style URLs. (4.6.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.1)
- The configured `outDir` is used as the public directory for non-SSR environments. (4.6.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.1)
- Object types now align with JSON, improving type compatibility for serialized data. (4.6.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.1)
- Its types now allow `false` as an accepted value. (4.6.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.1)
- Dependency scanning no longer aborts on virtual imports in installed packages. (4.6.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.1)
- Vite now matches optimizer messages from Vite 8.1 and later for dependency hints. (4.6.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.1)
- The schema ignores the `.wrangler` directory. (4.6.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.1)
- Works consistently across Nitro versions; a server tsconfig and versioned route config types are generated automatically. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Works consistently across Nitro versions; a server tsconfig and versioned route config types are generated automatically. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Works consistently across Nitro versions; a server tsconfig and versioned route config types are generated automatically. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Types and augmentations placed in app/types/ are included in the appropriate generated tsconfig. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `CookieOptions` remains compatible with cookie serialize options. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Early 404 handling is disabled for page paths that cannot be decoded. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Error causes are preserved in development. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- No longer produces blank remounts. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Matches vue-router path encoding, preserves percent-encoding in server redirects, and applies baseURL with open. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `navigateTo` applies `baseURL` when called with `open`. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `target` is optional when calling `navigateTo` with `open`. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `navigateTo` now matches vue-router path encoding and preserves percent-encoding in server redirects. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Pages rendered with noScripts retain non-script resource hints and have their styles attached correctly. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Hydrated nuxt-client markup is stripped from cached island HTML. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- The nuxt/server createError helper takes status and statusText. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- A page transition no longer starts when there is no page to leave. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.2), [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Unmatched public asset paths are served during client-side navigation. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Scoped styles now apply to server component slots. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Types and augmentations placed in server/types/ are included in the appropriate generated tsconfig. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- No longer warns when called before Nitro exists. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Fixes awaited hydration resolving with unfetched data, makes awaited lazy async data resolve immediately, and fixes generic type parameter resolution. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Forwards request headers. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- `useRequestFetch` forwards request headers. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- Handle interrupted and skipped navigations. (4.6.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.6.0)
- The asyncData status is settled when execution bails. (3.21.11, 4.5.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.2), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.11)
- Payloads for components with underscores in their keys are now serialized correctly. (3.21.11, 4.5.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.2), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.11)
- Preview mode is checked again after a prerendered page hydrates. (3.21.11, 4.5.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.2), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.11)
- Route rules are matched against decoded paths. (3.21.11, 4.5.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.2), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.11)
- Adds the .mts file extension to the resolver. (4.5.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.1)
- Preserves a trailing slash in the href when unset. (3.21.10, 4.5.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.10)
- Ignores custom name or path when reusing an existing page. (3.21.10, 4.5.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.10)
- Rejects the reserved template island prop when the runtime compiler is enabled. (3.21.10, 4.5.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.10)
- Prevents cache cross-pollution when a reactive key changes. (3.21.10, 4.5.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.10)
- Preserves method inference when an explicit method is provided. (3.21.10, 4.5.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.10)
- Returns the global route when called in a detached effect scope. (3.21.10, 4.5.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.10)
- Per-page keepalive set through definePageMeta is now respected. (3.21.9, 4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.9)
- $fetch is now auto-imported in user code, fixing edge cases with top-level $fetch.create under Rolldown's output format. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- The builder environment now honors HTTP proxy environment variables. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- Destination preload hints are forwarded when links are prefetched. (4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0)
- Getter values for body are now unwrapped in useFetch. (3.21.9, 4.5.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.5.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.9)
- Uses a shorter socket name on macOS, with a temporary-directory fallback, to address an issue running the dev server. (3.21.8, 4.4.8) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.8), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.8)
- The findPath function now respects its type option. (3.21.8, 4.4.8) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.8), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.8)
- Avoids filtering out directories whose names share a prefix with an allowed directory. (4.4.7) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.7)
- Handles a missing payload in the chunkError listener. (4.4.7) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.7)
- Runs getCachedData again after the initial fetch. (4.4.7) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.7)
- Assigns noSSR before deciding whether to extract the payload. (4.4.7) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.7)
- Prevents a server-only page island from recursing through <NuxtPage>. (4.4.7) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.7)
- Propagates factory types for useFetch and useAsyncData. (4.4.7) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.7)
- Closes the Vite dev server when Nuxt closes. (4.4.7) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.7)
- Errors that occur while fetching the app manifest are now handled. (3.21.6, 4.4.6) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.6), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.6)
- Component-less parent routes are rendered during client-side navigation. (3.21.6, 4.4.6) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.6), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.6)
- Deduplicated calls in JSX blocks are matched correctly. (4.4.6) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.6)
- Props are preserved when navigating to a different page with the same path. (4.4.6) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.6)
- The SSR module cache is invalidated when modules are invalidated through plugin hooks. (4.4.6) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.6)
- The legacy `tsconfig.json` now respects `tsConfig.exclude`. (4.4.6) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.6)
- The key is updated even when watch is false, so callers receive the current key without enabling watching. (4.4.6) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.6)
- Properties are now marked readonly, preventing mutation through the returned type. (3.21.6, 4.4.6) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.6), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.6)
- Auto-import handling now supports string presets. (3.21.5, 4.4.5) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.5), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.5)
- Vite clientServer resolution is fixed when ssr is false. (4.4.5) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.5)
- Avoids redundant CSS links when entry styles are inlined and only treats CSS as inlined when styles are emitted. (3.21.5, 4.4.5) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.5), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.5)
- Inlines CSS imported from non-Vue JavaScript modules. (3.21.5, 4.4.5) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.5), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.5)
- Corrects island transforms for server pages and deep mode. (3.21.5, 4.4.5) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.5), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.5)
- Prevents recursive rendering deadlocks during prerender. (3.21.5, 4.4.5) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.5), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.5)
- The `serverHandlers` array is preserved after `nitro:config`. (3.21.5, 4.4.5) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.5), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.5)
- Corrects the payload route rule for `/` when `ssr: true` overrides it. (4.4.5) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.5)
- Suspense is only force-remounted after its first resolve. (3.21.5, 4.4.5) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.5), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.5)
- Server-side `useFetch` now respects factory `fetch` and `baseURL` options. (4.4.5) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.5)
- Avoids an any return type in vue:setup. (4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3)
- Clears a cached rejected promise. (4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3)
- Fixes alternating execution in navigation mode. (4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3)
- Filters key enumeration by the useState prefix. (3.21.3, 4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.3)
- Components with attributes are stripped in production builds. (3.21.3, 4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.3)
- Handles TypeScript type assertions on member-expression callees in the parser. (4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3)
- Resolves layer aliases in CSS files. (3.21.3, 4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.3)
- Bridges @nuxt/schema augmentations into nuxt/schema. (4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3)
- Skips a cached vnode when its suspense is unmounted. (3.21.3, 4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.3)
- Preserves falsy prop values when serializing the data attribute. (3.21.3, 4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.3)
- Invokes the user-supplied error handler when suppressing render errors. (3.21.3, 4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.3)
- Keeps _route in sync when navigating up the route tree. (3.21.3, 4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.3)
- Re-encodes the URL to match vue-router. (4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3)
- Corrects the key type. (4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3)
- Prevents in-flight requests from overwriting async data after it has been cleared. (3.21.3, 4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.3)
- Corrects the type of the cache option. (3.21.3, 4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.3)
- Fixes FormData body hashing in the deduplication key. (3.21.3, 4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.3)
- Uses factory-resolved options consistently. (4.4.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.3)
- Cookie expiration timeouts now work correctly for long-lived cookies. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- Navigation from an error page to external protocols is now allowed. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- Explicit prerender routes are now always injected into the prerender queue. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- State reset functionality now restores the initial value instead of clearing it to undefined. (4.4.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.4.0)
- Vite and webpack dev servers use node.res to send 403 and 404 responses. (4.3.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.1)
- Preserves middleware error status in the 404 fallback. (3.21.1, 4.3.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.1)
- Restores backwards compatibility for the #app barrel export in keyed functions. (3.21.1, 4.3.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.1)
- Manifest files are cached to preserve buildId. (3.21.1, 4.3.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.1)
- Resolves import mapping conflicts for packages outside rootDir. (3.21.1, 4.3.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.1)
- Prevents CSS flickering in dev mode after configuration changes. (3.21.1, 4.3.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.1)
- Custom routes are tracked and re-added during HMR. (3.21.1, 4.3.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.1)
- Fatal errors preserve error.message. (3.21.1, 4.3.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.1)
- Hash links are focused after navigation. (3.21.1, 4.3.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.1)
- Keeps the vnode when leaving a deeper nested route. (3.21.1, 4.3.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.1)
- NuxtError now extends the Error type. (4.3.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.1)
- Calls deferHydration done when NuxtPage unmounts. (3.21.1, 4.3.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.1)
- Handles invalid datetime values. (3.21.1, 4.3.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.1)
- Nitro path encoding is aligned with vue-router. (3.21.1, 4.3.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.1)
- A view transition is not started when there is no route. (3.21.1, 4.3.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.1)
- Async data properties are now reactive when used with the Options API. (3.21.0, 4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- Head component tag deduplication now uses the key attribute for proper deduplication. (3.21.0, 4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- Client-side pathname decoding now handles non-ASCII route aliases. (3.21.0, 4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- NuxtPage now re-renders when a nested NuxtLayout has layouts explicitly disabled. (3.21.0, 4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- Suspense is force-remounted when navigating after a pending state. (3.21.0, 4.3.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.3.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- callOnce is re-executed during HMR. (3.20.2, 4.2.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.2), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.2)
- Module dependencies are typed and respected by metadata name, and are handled by installModule. (4.2.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.2)
- Nuxt syncs the internal route before calling the page:finish hook. (3.20.2, 4.2.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.2), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.2)
- The pretty error handler is no longer shown when testing. (3.20.2, 4.2.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.2), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.2)
- The watch callback resolves after a reactive key changes. (3.20.2, 4.2.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.2), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.2)
- Deduplicated async data executions return the latest promise. (3.20.2, 4.2.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.2), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.2)
- Removes abort signal event listeners after rendering. (4.2.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.1)
- Cleans up an event listener with the cleanup signal. (4.2.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.1)
- Removes the iframe border from the Nuxt error overlay. (4.2.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.1)
- Applies optimizeDeps configuration before other plugins. (4.2.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.1)
- Corrects the warning shown for a prefetch/noPrefetch conflict. (4.2.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.1)
- Processes prerender routes on pages:resolved. (3.20.1, 4.2.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.1)
- Respects layer priority order when scanning components. (3.20.1, 4.2.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.1)
- Respects the Vite proxy in development middleware. (3.20.1, 4.2.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.1), [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.1)
- Arrays in app config are handled correctly during HMR. (3.20.0, 4.2.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.0)
- Redirects based on routeRules preserve the URL hash. (3.20.0, 4.2.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0), [release notes](https://github.com/nuxt/nuxt/releases/tag/v4.2.0)

## nuxt 3

### Breaking changes

- The endpoint is gated to local requests. (3.21.7) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.7)
- The open option now rejects script-capable protocols and path-normalization open redirects, preventing unsafe navigation. (3.21.7) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.7)
- Route rules now match case-insensitively, mirroring vue-router. (3.21.7) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.7)
- declarationPath is removed from component directories. (3.20.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0)
- Native attributes can no longer shadow NuxtLink props. (3.20.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0)

### Security

- Cookie decoding no longer performs unsafe number parsing. (3.21.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- Nuxt is protected against a resolved Nuxt module subpath. (3.20.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.2)

### Deprecations

- The configResolved hook is deprecated. (3.20.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0)
- The extend hook is deprecated. (3.20.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0)

### New APIs and options

- Use status in place of the deprecated statusCode property when creating errors. (3.21.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- Use statusText in place of the deprecated statusMessage property when creating errors. (3.21.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- installModule accepts moduleDependencies. (3.20.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.2)
- Adds experimental support for TypeScript plugins. (3.20.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0)
- useAsyncData adds an abortController option. (3.20.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0)
- Adds the ability to enable the Vite environment API. (3.20.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0)

### Performance

- Cache layer roots and short-circuit relative isIgnored checks to improve performance. (3.21.5) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.5)
- AsyncData handlers are extracted to chunks. (3.20.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0)

### Behavior and default changes

- CSS is now inlined for lazy components imported from `#components`. (3.21.9) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.9)
- Middleware runs for page islands. (3.21.6) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.6)
- In development, the youch error page is displayed with the user error page. (3.20.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0)

### Tooling

- These declarations are ignored. (3.20.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.2)
- Builders can augment types. (3.20.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0)

### Fixes and other changes

- Normalizes slashes in the build assets directory setting. (3.21.10) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.10)
- Preserves query parameters during cached payload extraction. (3.21.10) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.10)
- Updates the client URL to match SSR after a fatal middleware error. (3.21.10) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.10)
- Removes the development error overlay when the error is cleared. (3.21.10) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.10)
- Reloads the real page module on HMR. (3.21.10) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.10)
- Generates layout types even when the pages module is disabled. (3.21.10) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.10)
- Does not apply scroll behaviour after a subsequent navigation. (3.21.10) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.10)
- Synchronizes layout meta during middleware on SSR. (3.21.10) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.10)
- The fallback tag name is now validated. (3.21.9) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.9)
- Server page CSS is extracted when `inlineStyles` is disabled. (3.21.9) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.9)
- Concurrent calls in the built-in router now apply the latest navigation. (3.21.9) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.9)
- `page:start` now finishes before `page:finish` starts. (3.21.9) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.9)
- Plugin navigation is preserved during app boot. (3.21.9) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.9)
- Teardown now detaches the in-flight promise. (3.21.9) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.9)
- The error type now matches the runtime behavior. (3.21.9) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.9)
- Rspack and webpack require a loopback host when same-origin signals are missing. (3.21.7) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.7)
- Props passed to setPageLayout are preserved during same-path navigation. (3.21.6) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.6)
- Freeze head explicitly during the island plugin phase. (3.21.5) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.5)
- Only consider CSS inlined when styles are actually emitted. (3.21.5) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.5)
- Correct the payload route rule for `/` when `ssr: true` overrides it. (3.21.5) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.5)
- Clears a cached rejected promise and fixes alternating execution in navigation mode. (3.21.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.3)
- Rspack and webpack now respect the configured `test` option. (3.21.3) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.3)
- NuxtError now has status and statusText getters and correctly extends the Error type. (3.21.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.1)
- Unicode paths in the prerender header are encoded. (3.21.1) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.1)
- Nuxt v3 will continue receiving security updates and critical bug fix releases through July 31, 2026. (3.21.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.21.0)
- Generated references for component declaration items are made valid. (3.20.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.2)
- Module dependencies are typed and respected by metadata name. (3.20.2) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.2)
- The root route is preserved in the isPrerendered check. (3.20.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0)
- Cleanup is safe when loadNuxtConfig is called concurrently. (3.20.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0)
- Prerender and Nitro flags are preserved in webpack and rspack server builds. (3.20.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0)
- The shortPath property is added back. (3.20.0) — [release notes](https://github.com/nuxt/nuxt/releases/tag/v3.20.0)
