v4.3.0
📦 nuxtView on GitHub →
✨ 10 features🐛 4 fixes🔧 3 symbols
Summary
Nuxt 4.3 introduces powerful features like route rule layouts, improved ISR/SWR payload extraction, and a draggable dev error overlay. This release also brings significant performance optimizations under the hood.
Migration Steps
- If you rely on Nuxt v3, note that critical bug fixes and security updates will now be provided until July 31, 2026.
- To prepare for Nuxt v5, review the [Upgrade Guide](/docs/4.x/getting-started/upgrade) for details on migrating projects using `future.compatibilityVersion: 5`.
✨ New Features
- Route rules can now define layouts using the new `appLayout` property, allowing centralized layout management.
- Layout props can now be passed when using the `setPageLayout` composable.
- Payload extraction now supports ISR, SWR, and cached `routeRules`, enabling client-side navigation to use cached payloads.
- Payload extraction now works in development mode when `nitro.static` is `true` or for pages with `isr`, `swr`, `prerender`, or `cache` route rules.
- Modules in Nuxt layers can now be disabled by setting their configuration to `false` in `nuxt.config.ts`.
- Route groups (e.g., `(protected)/`) are now exposed in page meta via the `groups` property.
- A new `#server` alias is available for clean imports within the server directory, with import protection.
- The development error overlay is now draggable, snaps to screen edges, and can be minimized, with state persisting across reloads.
- Module authors can use async functions when adding build plugins via `addVitePlugin` or `addWebpackPlugin`, enabling lazy loading of plugins.
- The `inlineStyles` feature now functions correctly with webpack and rspack builders.
🐛 Bug Fixes
- Internal plugins now use filters to prevent unnecessary hook execution, improving performance.
- The `nuxt:ssr-styles` plugin performance has been significantly improved.
- Layer alias transformation is now skipped when using Vite, as Vite handles this natively.
- Route rules compilation now uses `rou3` in the client chunk, removing the dependency on `radix3` in the client bundle and eliminating app manifest fetches.