Nuxt v4.4.3

nuxt/nuxt
Share
Summary
Nuxt v4.4.3 introduces significant performance enhancements, including direct package version imports and improved module loading. Several critical fixes have also been implemented, addressing issues with async data handling, loading indicators, and TypeScript type assertions.

Full release notes

4.4.3 is the next patch release. v4.4.4 was published with no changes due to an issue running the release script for v4.4.3.

👉 Changelog

compare changes

🔥 Performance

  • nitro: Directly import nuxt package version (#34567)
  • vite,webpack: Use vfs for manifest + vite node server (#34666)
  • nuxt: Clean-up build hooks + emit gc'd snapshots (#34587)
  • nuxt: Skip key watcher when useAsyncData key is static (#34620)
  • kit: Parallelise module load + cache jiti instances (#34842)
  • nuxt: Batch-resolve typescript hoist paths with cached base roots (#34862)

🩹 Fixes

  • nuxt: Handle negative zero in getUserTrace slice boundary (#34524)
  • nuxt: Signal error state and clear timers in loading indicator cleanup (#34523)
  • nuxt: Fix broken hook cleanup in route announcer (#34525)
  • nuxt: Filter clearNuxtState key enumeration by useState prefix (#34541)
  • nuxt: Correct useFetch cache options type (#34551)
  • nuxt: Prevent in-flight requests from overwriting cleared async data (#34553)
  • nuxt: Check response status before parsing payload (#34555)
  • nuxt: Handle TS type assertions on member expression callees in keyed functions parser (#34558)
  • nuxt: Use comment as client component placeholder (#33466)
  • nitro: Resolve h3 export path in nitro vfs (#34566)
  • nuxt: Use factory resolved options everywhere in useFetch (#34568)
  • nitro: Use hash-based cache for dev payloads (#34569)
  • nuxt: Await parcel watcher subscription before registering close hook (#34573)
  • nuxt: Self-remove hydration error guards after first navigation (#34572)
  • nuxt: Mark portal properties as configurable (#34574)
  • nuxt: Retry manifest fetch after transient failure (#34570)
  • kit: Add PackagePreset type to addImportsSources (#34582)
  • nuxt: Avoid any return type from callHookWith in vue:setup (#34584)
  • nuxt: Strip DevOnly components with attributes in production builds (#34585)
  • nuxt: Move parcel watcher debug timer outside subscription loop (#34590)
  • nuxt: Preserve falsy prop values in NuxtTime data attribute serialization (#34600)
  • nuxt: Clear cached rejected promise in callOnce (#34614)
  • nuxt: Correct useAsyncData key type (#34599)
  • nitro: Set __buildAssetsURL before server entry import (#34607)
  • nuxt: Use consistent [nuxt] prefix in console warnings (#34668)
  • vite: Remove obsolete writeDevServer + handle vite-node precomputed (f8e49b71b)
  • nuxt: Update impound protection for nitro/* (ac9e25b8c)
  • nuxt,schema: Allow disabling clearing build hooks (#34594)
  • rspack,webpack: Emit styles.mjs when inline styles off (#34697)
  • nuxt: Fix FormData body hashing in useFetch deduplication key (#34546)
  • nuxt: Generate type re-exports for shared type-only imports (#34632)
  • nuxt,nitro: Add Symbol serialization for dev server logs (#34575)
  • vite: Do not process css files with decorator transform (#34769)
  • vite: Ensure leading slash in /@fs URLs for Windows (#34810)
  • vite: Preserve server-origin errors and surface them via Youch (#34820)
  • nitro: Do not add import condition for ssr resolve conditions (#34739)
  • nuxt: Fix callOnce navigation mode alternating execution (#34718)
  • schema,rspack,webpack: Respect configured test option (#34827)
  • nuxt: Handle custom cookie serialisation before passing to cookie-es (#34711)
  • nuxt: Link to correct docs page for keyed functions (#34854)
  • nuxt: Adjust setPageLayout props type to allow passing arrays of objects (#34860)
  • nuxt,schema: Move config type to schema + mark type peerDeps (#34864)
  • nitro: Restore 'import' condition for ssr resolve (af7a12725)
  • nitro: Re-encode ssrContext.url to match vue-router (#34902)
  • schema: Remove type peerDependencies (#34894)
  • nuxt: Propagate unexpected errors from isDirectorySync (#34900)
  • nuxt: Bridge @nuxt/schema augmentations into nuxt/schema (#34905)
  • nuxt: Sync _route when navigating up the route tree (#34918)
  • nuxt: Skip <NuxtPage> cached vnode when its suspense is unmounted (#34899)
  • nitro: Only recommend payload extraction when ssr is enabled (#34924)
  • nitro: Avoid double-decoding of url (3f1a9524b)
  • nuxt: Flatten buffer before filtering promises and fix rendering of content (#34863)
  • nuxt: Correct async data type inference when using transform with getCachedData (#34819)
  • nuxt: Avoid transforming NuxtTeleportIslandComponent with nuxt-client directive (#34817)
  • nuxt: Resolve layer aliases in css files (#34940)
  • nuxt: Invoke user-supplied error handler when suppressing render errors (#34938)

📖 Documentation

  • Add v4.4 badge for layout props (#34528)
  • Document that component props are sent in query string (619de0dd5)
  • Clarify function signature requirement for custom $fetch in createUseFetch (#34564)
  • Update experimental typedPages documentation (#34580)
  • Fix page:loading:start description to match implementation (#34617)
  • Add missing jsdoc strings (ccb53e0eb)
  • Add example for route middleware setup (#34661)
  • Use new object boolean syntax when prefetchOn interaction (#34825)
  • Remove @nuxt/scripts from core modules roadmap (#34835)
  • Remove @nuxt/hints from core modules roadmap (#34867)
  • Correct URL (#34907)
  • Set NODE_ENV to production in deployment examples (#34937)

🏡 Chore

  • Do not ship devDependencies when publishing (8018d6577)
  • Remove unused field 🤦 (2a75ac774)
  • Remove explicit copilot instructions (c7237f22c)
  • Use single renovate PR for 3.x and 4.x branches (1dda87b84)
  • Use top level vulnerabilityAlerts config (39999b7b6)
  • Dedupe security update prs after update (4734db95c)
  • Throttle per host to reduce rate limits in link checking (#34488)
  • Update renovate config (214a72bcf)
  • Drop redundant as const (#34909)
  • Migrate resolutions to pnpm-workspace.yaml (4a39b1bfa)

✅ Tests

  • Use toThrow instead of toThrowError (3d3d8164d)
  • Update bundle size (e4b31efa4)
  • Reduce matrices in ci (#34703)
  • Add scroll behavior tests for fixed page key with scrollToTop (#34761)
  • Update deprecated error assertions (a7a301095)

🤖 CI

  • Add bot workflow (#34677)
  • Fix bot label (967eca84b)
  • Add agent-scan workflow (#34681)
  • Correct renovate bot name in workflow (#34708)
  • Correct dependabot bot name in workflow (#34709)
  • Drop stackblitz link issue commenter (1e9cacacb)
  • Inline actions triggered by labels into triage actions (ee5acd096)
  • Update workflows to use renamed type labels (#34933)

❤️ Contributors

  • Daniel Roe (@danielroe)
  • Sébastien Chopin (@atinux)
  • Damian Głowala (@DamianGlowala)
  • John (@zecar)
  • Eduardo San Martin Morote (@posva)
  • abeer0 (@iiio2)
  • Florian Heuberger (@Flo0806)
  • karl (@krlctrl)
  • Idris Gadi (@IdrisGit)
  • Ori (@oritwoen)
  • Yoshihiro Yamaguchi (@yamachi4416)
  • Kilisei (@kilisei)
  • Anthony Fu (@antfu)
  • edepauw (@edepauw)
  • Bochkarev Ivan (@Ibochkarev)
  • Matej Černý (@cernymatej)
  • Matteo Gabriele (@MatteoGabriele)
  • Julien Huang (@huang-julien)
  • Oliver Schmidt (@Timbuktu1982)
  • Om Mishra (@howwohmm)
  • xjccc (@xjccc)
  • mcrapts (@mcrapts)
  • Louis Ramos (@wJoenn)
  • 山吹色御守 (@KazariEX)
  • Max (@onmax)

Latest Nuxt releases

All releases

Latest articles about Nuxt

Nuxt 4.6

Nuxt 4.6

Nuxt Blog

Oops! I gave Nuxt permissions to delete files

Oops! I gave Nuxt permissions to delete files

Program With Erik

Nuxt 3 hits End Of Life

Nuxt 3 hits End Of Life

Certificates.dev

Nuxt 4.5 SSR Streaming Is Kind of a Big Deal

Nuxt 4.5 SSR Streaming Is Kind of a Big Deal

Program With Erik