Releases: nuxt/nuxt
v4.0.3
4.0.3 is a regularly scheduled patch release.
π Changelog
π₯ Performance
- kit: Get absolute path from
tinyglobby
inresolveFiles
(#32846)
π©Ή Fixes
- nuxt: Do not throw undefined
error
variable (#32807) - vite: Include tsconfig references during
typeCheck
(#32835) - nuxt: Add sourcemap path transformation for client builds (#32313)
- nuxt: Add warning for lazy-hydration missing prefix (#32832)
- nuxt: Trigger call once navigation even when no suspense (#32827)
- webpack: Handle
null
result from webpack call (84816d8a1) - kit,nuxt: Use
reverseResolveAlias
for better errors (#32853)
π Documentation
- Fix publicDir alias (#32841)
- Mention
bun.lock
for lockfile (#32820) - Add a section about augmenting types with TS project references (#32843)
- Improve explanation of global middleware (#32855)
π‘ Chore
- Update reproduction help text links (#32803)
- Update pnpm ignored build scripts (#32849)
- Improve internal types (052b98a35)
β Tests
- Move tests for
defineNuxtComponent
out of e2e test (#32848)
π€ CI
- Move nightly releases into different concurrency group (664041be7)
β€οΈ Contributors
- RDistinct (@RDistinct)
- Daniel Roe (@danielroe)
- Oskar Lebuda (@OskarLebuda)
- Peter Budai (@peterbud)
- Matej ΔernΓ½ (@cernymatej)
- Damian GΕowala (@DamianGlowala)
- Bobbie Goede (@BobbieGoede)
- Robin (@OrbisK)
- abeer0 (@iiio2)
- Julien Huang (@huang-julien)
v3.18.1
3.18.1 is a regularly scheduled patch release.
π Changelog
π₯ Performance
- kit: Get absolute path from
tinyglobby
inresolveFiles
(#32846)
π©Ή Fixes
- nuxt: Do not throw undefined
error
variable (#32807) - vite: Include tsconfig references during
typeCheck
(#32835) - nuxt: Add sourcemap path transformation for client builds (#32313)
- nuxt: Add warning for lazy-hydration missing prefix (#32832)
- nuxt: Trigger call once navigation even when no suspense (#32827)
- webpack: Handle
null
result from webpack call (65aa17158) - kit,nuxt: Use
reverseResolveAlias
for better errors (#32853)
π Documentation
π‘ Chore
- Update reproduction help text links (#32803)
- Update pnpm ignored build scripts (#32849)
- Improve internal types (f271c66c4)
β Tests
- Move tests for
defineNuxtComponent
out of e2e test (#32848)
π€ CI
- Move nightly releases into different concurrency group (26f9baa6a)
β€οΈ Contributors
- RDistinct (@RDistinct)
- Daniel Roe (@danielroe)
- Oskar Lebuda (@OskarLebuda)
- Peter Budai (@peterbud)
- Matej ΔernΓ½ (@cernymatej)
- Damian GΕowala (@DamianGlowala)
- Bobbie Goede (@BobbieGoede)
- Robin (@OrbisK)
- Bobby (@xanzhu)
v4.0.2
4.0.2 is the next patch release.
Timetable: 28 July.
π Changelog
π©Ή Fixes
- nuxt: Provide typed slots for
<ClientOnly>
and<DevOnly>
(#32707) - kit,nuxt,schema: Add trailing slash to some dir aliases (#32755)
- nuxt: Constrain global
defineAppConfig
type (#32760) - kit: Include module types in
app
context (#32758) - nuxt: Include source base url for remote islands (#32772)
- vite: Use vite node server to transform requests (#32791)
- kit: Use
mlly
to parse module paths (#32386) - nuxt: Execute all plugins after error rendering error.vue (#32744)
π Documentation
- Update Nuxt installation command to use
npm create nuxt@latest
(#32726) - Add AI-assisted contribution guidelines (#32725)
- Hydration best practice (#32746)
- Add example for module
.with()
(#32757) - Replace dead Vue Router docs links (#32779)
- Update nightly version references (#32776)
π‘ Chore
- Update reproduction links for bug-report template (#32722)
- Update
unbuild
and use absolute path in dev stubs (#32759)
β Tests
- Ignore vue
module.exports
export (c4317e057)
π€ CI
- Release
pkg.pr.new
formain
/3.x
branches as well (b0f289550) - Apply
3x
tag to latest v3 release (5f6c27509)
β€οΈ Contributors
- Daniel Roe (@danielroe)
- Bobbie Goede (@BobbieGoede)
- Damian GΕowala (@DamianGlowala)
- Bobby (@xanzhu)
- Dog (@dgxo)
- Julien Huang (@huang-julien)
- Stephen Jason Wang (@stephenjason89)
- Mateleo (@Mateleo)
- Robin (@OrbisK)
- Alex Liu (@Mini-ghost)
v3.18.0
3.18.0 is the next minor release.
π Highlights
A huge thank you to everyone who's been a part of this release, which is mostly about backporting features + bugfixes from Nuxt v4.
Over the next six months, we'll continue backporting compatible v4 features and bug fixes, so please keep the feedback coming! β€οΈ
π§ͺ Lazy Hydration Macros
Building on the delayed hydration support from v3.16, we now support lazy hydration macros (#31192)! These provide a more ergonomic way to control component hydration:
<script setup lang="ts">
const LazyHydrationMyComponent = defineLazyHydrationComponent(
'visible',
() => import('./components/MyComponent.vue')
)
</script>
<template>
<div>
<!--
Hydration will be triggered when
the element(s) is 100px away from entering the viewport.
-->
<LazyHydrationMyComponent :hydrate-on-visible="{ rootMargin: '100px' }" />
</div>
</template>
These macros make it possible to use Nuxt's lazy hydration utilities alongside explicit component imports.
βΏοΈ Accessibility Improvements
We've enhanced accessibility by including <NuxtRouteAnnouncer>
in the built-in app.vue
(#32621). This means page changes will be announced to screen readers, making navigation more accessible for users with visual impairments. (This only applies if you do not have an app.vue
in your project. If you do, please keep <NuxtRouteAnnouncer>
in your app.vue
!)
π οΈ Enhanced Development Experience
Chrome DevTools Workspace Integration
We've added Chrome DevTools workspace integration (#32084), allowing you to edit your Nuxt source files directly from Chrome DevTools. This creates a better debugging experience where changes made in DevTools are reflected in your actual source files.
Better Component Type Safety
Component type safety has been improved with:
- Typed slots for
<ClientOnly>
and<DevOnly>
(#32707) - better IntelliSense and error checking - Exported
<NuxtTime>
prop types (#32547) - easier to extend and customize
New Auto-Import: onWatcherCleanup
The onWatcherCleanup
function from vue
is now available as an auto-import (#32396), making it easier to clean up watchers and prevent memory leaks:
const { data } = useAsyncData('users', fetchUsers)
watch(data, (newData) => {
const interval = setInterval(() => {
// Some periodic task
}, 1000)
// Clean up when the watcher is stopped
onWatcherCleanup(() => {
clearInterval(interval)
})
})
π Observability Enhancements
Page routes are now exposed to Nitro for observability (#32617), enabling better monitoring and analytics integration with supported platforms. This allows observability tools to track page-level metrics more effectively.
π§ Module Development Improvements
Module authors get several quality-of-life improvements:
Simplified Server Imports
The addServerImports
kit utility now supports single imports (#32289), making it easier to add individual server utilities:
// Before: had to wrap in array
addServerImports([{ from: 'my-package', name: 'myUtility' }])
// Now: can pass directly
addServerImports({ from: 'my-package', name: 'myUtility' })
TypeScript Configuration
Modules can now add to typescript.hoist
(#32601), giving them more control over TypeScript configuration and type generation.
β‘οΈ Performance Improvements
We've made several performance optimizations:
- Improved Vite-node communication via internal socket (#32417) for faster development builds
- Migration to
oxc-walker
(#32250) and oxc foronPrehydrate
transforms (#32045) for faster code transformations
π Bug Fixes
This release also includes several important fixes:
- Improved data fetching: When computed keys change, old data is now properly retained (#32616)
- Better scroll behavior:
scrollBehaviorType
is now only used for hash scrolling (#32622) - Fixed directory aliases: Added trailing slashes to some directory aliases for better consistency (#32755)
β Upgrading
As usual, our recommendation for upgrading is to run:
npx nuxi@latest upgrade --dedupe
This refreshes your lockfile and pulls in all the latest dependencies that Nuxt relies on, especially from the unjs ecosystem.
π Changelog
π Enhancements
- nuxt: Expose page routes to nitro for o11y (#32617)
- nuxt: Export
<NuxtTime>
prop types (#32547) - nuxt: Add integration with chrome devtools workspaces (#32084)
- kit: Support single import in
addServerImports
(#32289) - nuxt: Add
onWatcherCleanup
to imports presets (#32396) - nuxt: Add route announcer to default app.vue (#32621)
- nuxt: Support lazy hydration macros (#31192)
π₯ Performance
- vite: Communicate with vite-node via internal socket (#32417)
- kit: Update env expansion regex to match nitro (#30766)
π©Ή Fixes
- nuxt: Allow modules to add to
typescript.hoist
(#32601) - nuxt: Retain old data when computed key changes (#32616)
- nuxt: Only use
scrollBehaviorType
for hash scrolling (#32622) - nuxt: Add missing
async
(fd312af03) - nuxt: Fix transform/minify types + bump oxc-transform (d2ba19963)
- nuxt: Provide typed slots for
<ClientOnly>
and<DevOnly>
(#32707) - kit,nuxt,schema: Add trailing slash to some dir aliases (#32755)
- nuxt: Include source base url for remote islands (#32772)
- vite: Use vite node server to transform requests (#32791)
- kit: Use
mlly
to parse module paths (#32386) - nuxt: Execute all plugins after error rendering error.vue (#32744)
π Refactors
- nuxt: Migrate to
oxc-walker
(#32250) - nuxt,schema: Use oxc for
onPrehydrate
transform (#32045) - nuxt: Pass file language directly to parser options (#32665)
- nuxt: Use direct import of
installNuxtModule
(228e3585e)
π Documentation
- Pass
v3
template to create nuxt examples (03182202f) - Add reference to
useNuxtData
in data fetching composable pages (#32589) - Document the --modules flag in the init command (#32599)
- Added new Shared folder to the example of v4 folder structure (#32630)
- Improve grammar (#32640)
- Typos (#32567)
- Fix abbreviation (#32613)
- Reference
noUncheckedIndexedAccess
rule change in v4 guide (#32643) - Fix links to Nitro docs (#32691)
- Add best practices section (#31609)
- Correct alias for local fonts in styling guide (#32680)
- Update nuxt.new links to v4 (#32639)
- Set correct default value for deep option in usefetch (#32724)
- Fix link to issue (ca03f533f)
- Add AI-assisted contribution guidelines (#32725)
- Update Nuxt installation command to use
npm create nuxt@latest
(#32726) - Hydration best practice (#32746)
- Add example for module
.with()
(#32757) - Replace dead Vue Router docs links (#32779)
π‘ Chore
- Handle missing commit details (0af98763d)
- Update reproduction links for bug-report template (#32722)
- Update
unbuild
and use absolute path in dev stubs (#32759)
β Tests
- Also assert status (4b4b224f7)
- Ignore vue `modu...
v4.0.1
v4.0.1 is the first regularly scheduled patch release of v4
It will be followed up later this week with v3.18, which will backport a number of the features/fixes from Nuxt v4 to v3.
β Upgrading
Our recommendation for upgrading is to run:
npx nuxt upgrade --dedupe
This will deduplicate your lockfile as well, and help ensure that you pull in updates from other dependencies that Nuxt relies on, particularly in the unjs ecosystem.
π Changelog
π©Ή Fixes
- nuxt: Add
nuxt.schema
files to node tsconfig context (#32644) - nuxt,vite: Unpin
nitropack
(ed5ad64ad) - nuxt: Expose shared aliases within
shared/
dir (#32676)
π Refactors
- nuxt: Pass file language directly to parser options (#32665)
π Documentation
- Remove rc tag in guide (232b14e2f)
- Remove
-t v4
tag from getting started (343f59235) - Added new Shared folder to the example of v4 folder structure (#32630)
- Update nuxt.new links to v4 (#32639)
- Improve grammar (#32640)
- Typos (#32567)
- Fix abbreviation (#32613)
- Reference
noUncheckedIndexedAccess
rule change in v4 guide (#32643) - Add missing import in alias config example (#32648)
- Correct alias for local fonts in styling guide (#32680)
- Add best practices section (#31609)
- Fix links to Nitro docs (#32691)
π¦ Build
- vite: Specify
nitropack
types as external (39be1b3a9)
π‘ Chore
- Handle missing commit details (5018ed23a)
π€ CI
- Trigger website redeploy on main branch (#32695)
β€οΈ Contributors
- Julien Huang (@huang-julien)
- Alois SeΔkΓ‘r (@AloisSeckar)
- Hashim Kalam (@hashimkalam)
- Daniel Roe (@danielroe)
- Matej ΔernΓ½ (@cernymatej)
- Peter Buglavecz (@buglavecz)
- Haythem Frikha (@Flamenate)
- abeer0 (@iiio2)
- Damian GΕowala (@DamianGlowala)
- Robin (@OrbisK)
- Thomas (@ThomasWT)
v4.0.0
Nuxt 4.0 is here! π
After a year of real-world testing, we're excited to announce the official release of Nuxt 4. This is a stability-focused major release, introducing a few thoughtful breaking changes in order to improve development experience.
If you've been following along, you'll recognize many of these features and changes β and if you're new to them, we hope you'll welcome them.
π₯ What's new?
Nuxt 4 is all about making your development experience smoother:
- Cleaner project organization with the new
app/
directory structure - Smarter data fetching - we've taken the opportunity to address some inconsistencies and improve performance with the data layer
- Better TypeScript support with project-based separation between the different contexts in your project - app code, server code,
shared/
folder, and configuration - Faster CLI and development with adoption of internal sockets and a faster CLI
Why these features in particular? Mostly because these kind of improvements have required making changes that are technically breaking.
In general, we aim for a hype-free approach to releases. Rather than save up features for a big release, we've been shipping improvements in Nuxt 3 minor releases.
We've also spent a lot of time figuring out how to implement these changes in a backwards-compatible way, and I hope that means that most Nuxt 3 projects can upgrade with a minimum of effort.
I'd advise reading through the upgrade guide before you start, to understand what areas of your app might be affected.
ποΈ New project structure
The biggest visible change is how projects are organized. Your application code now lives in an app/
directory by default:
my-nuxt-app/
ββ app/
β ββ components/
β ββ pages/
β ββ layouts/
β ββ app.vue
ββ public/
ββ shared/
ββ server/
ββ nuxt.config.ts
This helps keep your code separate from node_modules/
and .git/
, which makes file watchers faster (especially on Windows and Linux). It also gives your IDE better context about whether you're working with client or server code.
Tip
Don't want to migrate? That's totally fine! Nuxt will detect your existing structure and keep working exactly as before.
π¨ Updated UI templates
Nuxtβs starter templates have an all new look, with improved accessibility, default titles, and template polish (#27843).
π Smarter data fetching
We've made useAsyncData
and useFetch
work better. Multiple components using the same key now share their data automatically. There's also automatic cleanup when components unmount, and you can use reactive keys to refetch data when needed. Plus, we've given you more control over when cached data gets used.
Some of these features have already been made available in Nuxt v3 minor releases, because we've been rolling this out gradually. Nuxt v4 brings different defaults, and we expect to continue to work on this data layer in the days to come.
π§ Better TypeScript experience
Nuxt now creates separate TypeScript projects for your app code, server code, shared/
folder, and builder code. This should mean better autocompletion, more accurate type inference and fewer confusing errors when you're working in different contexts.
Tip
With Nuxt 4, you will only need one tsconfig.json
file in your project root!
This is probably the single issue that is most likely to cause surprises when upgrading, but it should also make your TypeScript experience much smoother in the long run. Please report any issues you encounter. π
β‘ Faster CLI and development
In parallel with the release of v4, we've been working on speeding up @nuxt/cli
.
- Faster cold starts - Development server startup is noticeably faster
- Node.js compile cache - Automatic reuse of the v8 compile cache
- Native file watching - Uses
fs.watch
APIs for fewer system resources - Socket-based communication - The CLI and Vite dev server now communicate via internal sockets instead of network ports, reducing overhead β particularly on Windows
These improvements combined can make a really noticeable difference in your day-to-day development experience, and we have more planned.
π How to upgrade
Although any major release brings breaking changes, one of our main aims for this release is to ensure that the upgrade path is as smooth as possible. Most of the breaking changes have been testable with a compatibility flag for over a year.
Most projects should upgrade smoothly, but there are a few things to be aware of:
- Nuxt 2 compatibility has been removed from
@nuxt/kit
. (This will particularly affect module authors.) - Some legacy utilities and deprecated features have been cleaned up.
- The new TypeScript setup might surface some type issues that were hidden before.
- A few modules might need further updates for full Nuxt 4 compatibility.
Don't worry though β for most breaking changes, there are configuration options to revert to the old behavior while you adjust.
1. Update Nuxt
Our recommendation for upgrading is to run:
npx nuxt upgrade --dedupe
This will deduplicate your lockfile as well, and help ensure that you pull in updates from other dependencies that Nuxt relies on, particularly in the unjs ecosystem.
2. Optional: use migration tools
Weβve also partnered with Codemod to automate many, though not all, migration steps:
npx codemod@latest nuxt/4/migration-recipe
3. Test and adjust
Run your tests, check that everything builds correctly, and fix any issues that come up. The upgrade guide has detailed migration steps for specific scenarios.
We'd recommend reading through it in full before starting your upgrade, to understand what areas of your app might be affected.
πΊοΈ What's next?
We're planning quick patch releases to address any issues that come up. Nuxt 3 will continue to receive maintenance updates (both bug fixes and backports of features from Nuxt 4) until the end of January 2026, so there's no rush if you need time to migrate.
Looking ahead, we plan to release Nuxt 5 on the sooner side, which will bring Nitro v3 and h3 v2 for even better performance, as well as adopting the Vite Environment API for an improved (and faster!) development experience. And there's a lot more in the works too!
And, quite apart from major releases, we have a lot of exciting features planned to make their way into Nuxt 3.x and 4.x release branches, including support for SSR streaming (#4753), a first-party accessibility module (#23255), built-in fetch caching strategies (#26017), more strongly typed fetch calls (landing in Nitro v3), dynamic route discovery (#32196), multi-app support (#21635) and more.
β€οΈ Thank you
This release is credit to so many people, particularly those who have been testing v4 compatibility mode over the past year. I'm really grateful β thank you for all your help!
Happy coding with Nuxt 4! π
π Changelog
π Enhancements
- ui-templates: Update template branding for v4 (#27843)
- deps: Upgrade to latest versions of c12, jiti and unbuild (#27995)
- kit: Reimplement cjs utils using
mlly
(#28012) - nuxt: Generate basic jsdoc for module config entry (#27689)
- schema: Split dev/prod build directories (#28594)
- nuxt: Cache vue app build outputs (#28726)
- deps: Update dependency vite to v6 (main) (#30042)
- nuxt: Add integration with chrome devtools workspaces (#32084)
- kit: Support single import in
addServerImports
(#32289) - nuxt: Add
onWatcherCleanup
to imports presets (#32396) - kit,nuxt,schema: Separate ts projects for node/app/nitro (#30665)
- nuxt: Support lazy hydration macros (#31192)
- nuxt: Export
<NuxtTime>
prop types (#32547) - nuxt: Add route announcer to default app.vue (#32621)
- nuxt: Expose page routes to nitro for o11y (#32617)
π₯ Performance
- nuxt:
β οΈ Don't callrender:html
for server islands (#27889) - vite: Don't write stub manifest for legacy bundler (#27957)
- kit: Update env expansion regex to match nitro (#30766)
- vite: Communicate with vite-node via internal socket (#32417)
π©Ή Fixes
v3.17.7
3.17.7 is the last patch release before v3.18.
β Upgrading
Our recommendation for upgrading is to run:
npx nuxt upgrade --dedupe
This will deduplicate your lockfile as well, and help ensure that you pull in updates from other dependencies that Nuxt relies on, particularly in the unjs ecosystem.
π Changelog
π©Ή Fixes
- nuxt: Safe-guard
extraPageMetaExtractionKeys
(#32510) - nuxt: Expose
loadBuilder
error cause (8f13ce3c2) - vite: Handle resolving string vite input (#32527)
- nuxt: Wrap only server components with island generic (#32540)
- vite: Ignore when client entry cannot be resolved (19a292f34)
- nuxt: Normalize segment catchall pattern before checking for parent (#32413)
- nuxt: Update warning message to warn against
null
values (c1b83eab5) - nuxt: Ensure
semver.satisfies
returns true for pre-release versions (#32574) - nuxt: Scroll to anchor if present when changing page without saved position (#32376)
- nuxt: Handle
execute being passed to
watch` (#32591)
π Documentation
- Update fetch types (#32522)
- Clarify that runtime env variables must start with
NUXT_
(#32223) - Fix key change behavior in
useAsyncData
anduseFetch
migration (#32560) - Change return type of async data from
undefined
tonull
in v3 docs (#32562) - Add section on custom hooks for Nuxt modules (#32586)
- Provide
async
keyword (#32587) - Move augmenting hook types in hooks page (#32595)
- Add section about module loading order (#32597)
β Tests
- Reenable skipped unit tests (8fc9b9ee9)
- Update test snapshot for
generateTypes
(c0855439d) - Improve page scanning test stability (84b96f3de)
- Pass timeZone in to
<NuxtTime>
test (#32558) - Add more useAsyncData + useFetch tests (#32585)
- Avoid hard-coding async-data keys (bfca95118)
β€οΈ Contributors
- Daniel Roe (@danielroe)
- Julien Huang (@huang-julien)
- abeer0 (@iiio2)
- Bobbie Goede (@BobbieGoede)
- Damian GΕowala (@DamianGlowala)
- Nestor Vera (@hacknug)
- Ezra Ashenafi (@Eazash)
- Mike Laumann Bellika (@MikeBellika)
- Maxime Pauvert (@maximepvrt)
- Chriest Yu (@jcppman)
- Andrei Hudalla (@paranoidPhantom)
- Sigrid Huemer (@s1gr1d)
- xjccc (@xjccc)
v4.0.0-rc.0
4.0.0-rc.0 is our first release candidate.
πΊοΈ Roadmap
This is our first release candidate. From now on we're focusing on bug fixes only until the release of v4 (we don't expect to merge additional features or breaking changes unless unexpectedly necessary to resolve bugs).
We'd like to encourage users to test out adopting v4 from now on - feedback very welcome π
π Read more at https://nuxt.com/blog/roadmap-v4
π Changelog
π Enhancements
- nuxt: Export prop types (#32547)
π©Ή Fixes
- nuxt: Skip external 's custom on click handler (#32499)
- nuxt: Safe-guard extraPageMetaExtractionKeys (#32510)
- nuxt: Expose loadBuilder error cause (3e0408bd8)
- vite: Handle resolving string vite input (#32527)
- kit: Ensure legacy tsConfig doesn't exclude too many types (#32528)
- nuxt: Wrap only server components with island generic (#32540)
- vite: Ignore when client entry cannot be resolved (6037b93dc)
- kit: Ensure types of module entrypoints are in node project (#32551)
π Documentation
- Adjust wording to reduce confusion in lifecycle section (#32503)
- Update fetch types (#32522)
- Clarify that runtime env variables must start with NUXT_ (#32223)
β Tests
β€οΈ Contributors
- Andrei Hudalla (@paranoidPhantom)
- Daniel Roe (@danielroe)
- Alex (@hywax)
- Julien Huang (@huang-julien)
- Sigrid Huemer (@s1gr1d)
- @xjccc
- Alex Liu (@Mini-ghost)
- Damian GΕowala (@DamianGlowala)
v3.17.6
3.17.6 is a regularly scheduled patch release.
β Upgrading
Our recommendation for upgrading is to run:
npx nuxt upgrade --dedupe
This will deduplicate your lockfile as well, and help ensure that you pull in updates from other dependencies that Nuxt relies on, particularly in the unjs ecosystem.
π Changelog
π₯ Performance
- nuxt: Decrease if checks when prerendering (#32455)
π©Ή Fixes
- nuxt: Generate correct types for async data defaults based on
nuxt.config
(#32324) - nuxt: Reload at base URL in
nuxt:chunk-reload-immediate
(#32382) - nuxt: Use rollup to calculate island component filenames (#32421)
- nuxt: Append
set-cookie
headers in error handler (#32483) - nuxt: Ensure
asyncData
runs if changing key while fetcher is running (#32466) - nuxt: Handle pure hash link clicks with
navigateTo
(#32393) - nuxt: Skip external
<NuxtLink>
's custom on click handler (#32499) - nuxt: Update component loader regexp for minified code (#32298)
- nuxt: Allow camelCase for lazy hydration attributes (#32297)
- nuxt: Respect
inheritAttrs: false
increateClientOnly
fn (#32323) - kit: Do not double-urlify file urls when resolving schema (#32354)
- nuxt: Align scroll behavior with page transition completion (#32239)
- nuxt: Set
output.generatedCode.symbols
for nitro build (#32358) - nuxt: Lazily access runtimeConfig (#32428)
π Refactors
- vite: Migrate plugins internally to vite environments (#32461)
π Documentation
- Clarify where logging tag is displayed (#32440)
- Remove kit playground auto-import note (#32415)
- Remove webstorm warning (#32513)
- Migrate to
h3js
(#32243) - Update the fetch
clear
function description (#32287) defineNuxtPlugin
function documentation (#32328)- Mention that
<NuxtLink>
encodes query params (#32361) - Enhance documentation for Nuxt composables (#32218)
- Adjust wording to reduce confusion in lifecycle section (#32503)
- Improve useCookie example (367b85405)
- Capitalise title (#32426)
- Mention
bun.lock
for lockfile (#32427)
π‘ Chore
- Update stackblitz reproduction link (6ab5bac66)
- Update copilot instructions (220439055)
- Rename deprecated vitest
workspace
toprojects
(#32388) - Remove space in URL in comment (#32394)
- Allow setting TAG on commandline (d387e07a3)
β Tests
- nuxt: Add case for key only changes with
immediate: false
(#32473) - Separate nuxt legacy runtime tests (#32481)
π€ CI
- Set correct base branch label (#32325)
β€οΈ Contributors
- Mihailo Bursac (@djixadin)
- Daniel Roe (@danielroe)
- abeer0 (@iiio2)
- ηΏ (@sapphi-red)
- Robin (@OrbisK)
- Alex Liu (@Mini-ghost)
- Damian GΕowala (@DamianGlowala)
- Julien Huang (@huang-julien)
- Ibrahimm (@Ibra-cesar)
- Peter Budai (@peterbud)
- Ali Soueidan (@lazercaveman)
- Vachmara (@vachmara)
- xjccc (@xjccc)
- Paul Melero (@paulmelero)
- David Stack (@davidstackio)
v4.0.0-alpha.4
4.0.0-alpha.4 is the fourth alpha release of Nuxt 4 for early testing
πΊοΈ Roadmap
π Read more at https://nuxt.com/blog/roadmap-v4
π Changelog
π Enhancements
- nuxt: Support lazy hydration macros (#31192)
π©Ή Fixes
- nuxt: Ensure
asyncData
runs if changing key while fetcher is running (#32466) - kit: Do not skip layer with defined
srcDir
(#32487) - deps: Upgrade to rc version of
@nuxt/cli
(#32488)
π Documentation
- Update
.nuxtignore
examples for v4 structure (#32489)
β€οΈ Contributors
- Daniel Roe (@danielroe)
- Alex Liu (@Mini-ghost)
- Robin (@OrbisK)