chore(deps): update dependency nuxt to v3.20.2 #70

Closed
tommy wants to merge 1 commit from renovate/nuxtjs-monorepo into main
Owner

This PR contains the following updates:

Package Change Age Confidence
nuxt (source) 3.16.1 -> 3.20.2 age confidence

Release Notes

nuxt/nuxt (nuxt)

v3.20.2

Compare Source

3.20.2 is the next patch release.

Upgrading

Our recommendation for upgrading is to run:

npx nuxt upgrade --dedupe --channel=v3

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.

[!NOTE]
This will only work if you already have a version of @nuxt/cli which has the --channel flag. If this does not work, you can instead run npx nuxi@latest for the initial upgrade.

👉 Changelog

compare changes

🩹 Fixes
  • nitro: Do not show pretty error handler when testing (cc75ce409)
  • nuxt: Generate valid references for component declaration items (#​33388)
  • nuxt: Sync internal route before calling page:finish hook (#​33707)
  • nitro: Ensure html is a string before injecting error handler (6f51a25e9)
  • nitro: Include layer server directories in tsconfig.server.json (#​33510)
  • nuxt: Ensure deduped async data executions return latest promise (#​33740)
  • kit,nuxt: Type + respect moduleDependencies by meta name (#​33774)
  • nuxt,schema: Ignore .d.vue.ts declarations (9a6a770ab)
  • kit,nuxt: Protect against resolved nuxt module subpath (#​33767)
  • nuxt: Re-execute callOnce during HMR (#​33810)
  • nuxt: Resolve watch callback after reactive key change in useAsyncData (#​33802)
  • nuxt: Escape HTML in development error page stack trace (#​33820)
  • kit: Do not add resolved rootDir to cached layer config (#​33779)
  • kit,schema: Add moduleDependencies -> installModule (#​33689)
💅 Refactors
  • nuxt: Improve type safety within callOnce function (#​33825)
📖 Documentation
🏡 Chore
  • Update pnpm to 10.21 and enable trust policy (1cb55efc0)
  • Revert pnpm trust policy and restore provenance action (103ae1351)
  • Update markdownlint config to ignore mdc issues (d4933e26e)
  • Pin to single version of unstorage (619956e7f)
Tests
  • Add patchProp and nodeOps to excluded Vue helpers (#​33754)
  • Use fake timers for watch params test (58607fbea)
  • Update test for v3 defaults (daa002638)
🤖 CI
  • Add --pnpm flag to correctly publish prerelease (#​33688)
  • Update action lint config (#​33710)
❤️ Contributors

v3.20.1

Compare Source

3.20.1 is the next patch release.

Upgrading

Our recommendation for upgrading is to run:

npx nuxt upgrade --dedupe --channel=v3

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

compare changes

🩹 Fixes
  • vite: Unset optimizeDeps.include for server environment (#​33550)
  • kit,nuxt,schema: Deprecate ImportPresetWithDeprecation (#​33596)
  • nuxt: Correct warning message for prefetch/noPrefetch conflict (#​33617)
  • nitro: Remove <nuxt-error-overlay> iframe border (#​33625)
  • vite: Use rolldown replace only in build (#​33615)
  • nitro: Use directory paths in moduleEntryPaths (#​33628)
  • nitro: Start error overlay minimized based on status code (#​33658)
  • vite: Ensure optimizeDeps config is applied before other plugins (#​33586)
  • nuxt: Respect layer priority order for scanned components (#​33654)
  • nuxt: Process prerender routes on pages:resolved (#​33662)
  • nuxt: Remove abort signal event listeners after render (#​33665)
  • nuxt: Cleanup event listener with cleanup signal (#​33667)
  • vite: Respect vite proxy in dev middleware (#​33670)
💅 Refactors
  • kit,nitro,nuxt,schema,vite: Explicitly import process/performance (#​33650)
📖 Documentation
  • Fix typo in eslint flat config description (#​33569)
  • Add signal support to useAsyncData examples (#​33601)
  • Note that cookieStore is true by default (#​33572)
  • Document pending as alias of status === 'pending' (#​33221)
  • Clarify route middleware doesn't affect API routes (#​33643)
  • Improve docs for useHead/useHydration/useLazy* (#​33626)
  • Typo (#​33655)
🏡 Chore
🤖 CI
  • Disable cache in release action (885df65f4)
❤️ Contributors

v3.20.0

Compare Source

3.20.0 is the next minor release.

Upgrading

Our recommendation for upgrading is to run:

npx nuxt upgrade --dedupe --channel=v3

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

compare changes

🚀 Enhancements
  • nuxt: Allow specifying component declarationPath (#​33419)
  • kit: Add extensions option for resolveModule (#​33328)
  • nuxt: Add abortController option to useAsyncData (#​32531)
  • nuxt: Display youch error page w/ user error page in dev (#​33359)
  • nuxt: Experimental typescript plugin support (#​33314)
  • nuxt,schema: Extract asyncData handlers to chunks (#​33131)
  • kit: Add setGlobalHead utility (#​33512)
  • kit,vite: Allow enabling vite environment api (#​33492)
🔥 Performance
  • nuxt: Precompute renderer dependencies at build time (#​33361)
  • kit,schema: Remove some unnecessary dependencies (bdf34c263)
🩹 Fixes
  • nuxt: Preserve hash with redirecting based on routeRules (#​33222)
  • kit: Safely cleanup loadNuxtConfig in concurrent calls (#​33420)
  • nuxt: Allow object-format href in <NuxtLink> (b97ae2f70)
  • nuxt: Remove mergeModels from auto imports (#​33344)
  • nuxt: Add back shortPath property (#​33384)
  • nuxt: Do not allow native attrs to shadow nuxt link props (0981990a7)
  • nuxt: Remove declarationPath from component dirs (e384ba3cb)
  • nuxt: Preserve root route in isPrerendered check (#​33476)
  • nuxt: Exempt webpack vfs from pkg lookup (4df1e8275)
  • nitro: Exempt nightly release from import protections (272d9abbe)
  • webpack,rspack: Preserve prerender + nitro flags in server builds (#​33503)
  • nuxt: Support component auto-imports as arguments of h() (#​33509)
  • vite: Prevent assignment for rolldown's replacement plugin (#​33526)
  • nuxt: Use sha256 hash for prerender cache keys (#​33505)
  • nuxt: Add NuxtTime relative time numeric prop (#​33552)
  • nuxt: Add NuxtTime relative time relativeStyle prop (#​33557)
  • nuxt: Handle arrays in app config correctly during HMR (#​33555)
💅 Refactors
  • Remove obsolete shortPath property (#​33384)
  • kit: Extract trace utilities (ddaedfa51)
  • nuxt,vite,webpack: Allow builders to augment types (#​33427)
  • schema: Deprecate extend, extendConfig, and configResolved hooks (932a80dc6)
  • nitro,nuxt: Extract @nuxt/nitro-server package (#​33462)
  • nuxt: Use RouteLocationNormalizedLoadedGeneric internally (aa211fb4f)
  • vite: Make vite plugins environment-compatible (#​33445)
📖 Documentation
  • Add nuxt module addServerPlugin note (#​33409)
  • Remove deprecated node version (#​33411)
  • Update declarationPath in addComponent (#​33380)
  • Add some notes/deprecations for vite hooks (2c6912d2f)
  • Fix incorrect ESM module field info (#​33451)
  • Recommend getLayerDirectories() instead of nuxt.options._layers (#​33484)
  • Add docs for moduleDependencies (#​33499)
  • Pin codemod to v0.18.7 for migration recipe (#​33522)
🏡 Chore
  • Migrate gitpod to ona (#​33159)
  • Use native node to run test:prepare (cbad63c02)
  • Do not use native node to run test:prepare (672c09423)
  • Update valid semantic scopes (4ca29168b)
  • Ignore nitro templates (ec59aceeb)
  • Remove vue-demi from ignoredBuiltDependencies (#​33494)
  • Update vscode url (#​33360)
  • Correct jsdoc location for function used as parameters (#​33507)
  • Remove code comment (#​33515)
  • Patch changelogen for large numbers of commits (b6530b5b6)
  • Filter out commits before last tag when constructing changelog (257049712)
  • Ignore @rollup/plugin-commonjs (c2bd323b8)
  • Pin @rollup/plugin-commonjs (a524522ea)
Tests
  • Update runtime test to use asyncDataDefaults.errorValue (b6f1c9b0d)
  • Refactor suite to use common matrix utils (#​33483)
  • Update typed router test (c55db2854)
🤖 CI
  • Publish @nuxt/nitro-server on pkg-pr-new (d37ef17b0)
  • Remove nitro-server publish until v4.2 is released (e34c2f52f)
  • For now, use tag push to trigger release (0705b835f)
❤️ Contributors

v3.19.3

Compare Source

3.19.3 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

compare changes

🔥 Performance
  • vite: Use rolldown's replace plugin when applicable (#​33258)
🩹 Fixes
  • nuxt: Make lazy component types compatible with h (#​33046)
  • vite: Deduplicate inlined server style chunks (#​33308)
  • nuxt: Support head option on useHead (#​33318)
  • nuxt: Do not relativise importmap if cdnURL is set (#​33333)
  • nuxt: Resolve aliases in imports.dirs (#​33334)
  • nuxt: Add missing element/vnode props for <NuxtLink> (#​33335)
  • nuxt: Do not generate server placeholder components (#​33345)
  • nuxt: Dedupe generated component names (#​33346)
  • webpack: Test watch instance before closing it (3314bc9a1)
  • nuxt: Correctly handle island rendering error (#​33302)
  • nuxt: Support v-slot:fallback longform syntax in <DevOnly> (#​33368)
  • nuxt: Support typeFrom when generating auto-import type templates (#​33373)
  • nuxt: Don't trigger scroll when changing trailing slash (#​33358)
  • nuxt: Add stubs for new scripts from @nuxt/scripts (057ade490)
  • nuxt: Prevent duplicate execution on key change in useAsyncData (#​33325)
  • nuxt: Make middleware _path property configurable for HMR (#​33379)
  • nuxt: Handle non-immediate useAsyncData with different key on ssr (#​33341)
💅 Refactors
  • nuxt: Improve implementation of error composables (#​33234)
  • nuxt: Resolve path of typed-router.d.ts early for consistency (#​33285)
  • nuxt: Place filename into componentsIslandsTemplate definition (#​33394)
  • nuxt,vite: Use environment-api compatible plugins (#​33403)
📖 Documentation
  • Update usage instructions for Windows users (#​33284)
  • Remove d suffix in example (#​33298)
  • Move directory structure to top-level (#​33299)
  • Add 3.x prefix to all internal links (0fef864d6)
  • Add information about useFetch reactivity (#​33317)
  • Lint code samples within docs (#​33271)
  • Note prepare command NODE_ENV behavior (#​33330)
  • Update nuxt command pages (#​33336)
🏡 Chore
Tests
  • nuxt: Set locale to en for nuxt-time tests (#​33343)
  • Double gotoPath timeout in CI (9d336cc76)
🤖 CI
  • Add provenance action to check for downgrades in provenance (18ab6e5fa)
  • Pass commit sha when triggering ecosystem ci (7b2949a3c)
❤️ Contributors

v3.19.2

Compare Source

3.19.2 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

compare changes

🔥 Performance
  • kit: Do not normalise templates in loop if dst is present (#​33200)
  • nuxt: Remove watcher from hydrate-when lazy hydration strategy (#​33199)
  • nuxt,schema: Normalise components + directories more efficiently (#​33207)
  • kit,nuxt: Reduce unnecessary iteration in nuxt code (#​33212)
  • nuxt: Skip running lazy hydration transform with filter (#​33213)
🩹 Fixes
  • schema: Add pkg-types to dependencies (a6e5dd756)
  • nuxt: Ignore errors when treeshaking composables within other composables (e3e42ac77)
  • nuxt: Do not tree-shake composables within other composables (#​33153)
  • kit: Ensure module dependencies are typed correctly (ea16d182a)
  • nuxt: Prevent Infinity backgroundSize in loading indicator (#​33211)
  • nuxt: Remove unused enabled from components dir options (#​32844)
  • nuxt: Sync watch request in useAsyncData (#​33192)
  • nuxt: Move key imports logic after all modules run (#​33214)
📖 Documentation
  • Update language on bridge head migration (32e76f609)
🏡 Chore
❤️ Contributors

v3.19.1

Compare Source

v3.19.1 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

compare changes

🩹 Fixes
  • nuxt: Correct relative path of auto imported components (#​33122)
  • nuxt: Prefer accessing globalThis over window (#​33125)
  • nuxt: Migrate to AST-aware tree-shaking + route injection (#​33128)
  • nuxt: Ignore #components import mapping inside packages that use it internally (#​33049)
  • vite: Remove explicit vite-node configuration of deps.inline (#​33133)
  • nuxt: Include trace in dev-time useRoute usage warning (#​33039)
  • nuxt: Print route middleware path in warning (#​33136)
  • nuxt: Include core auto-imports from imports:sources in override warning (#​33050)
  • nuxt: Render relative importmap entry path if required (#​33146)
📖 Documentation
  • Add documentation for module lifecycle hooks (#​33115)
  • Add -- to bun create command (ab6aa8ee5)
  • Add JSDoc for navigateTo (#​21442)
🏡 Chore
Tests
🤖 CI
  • Remove default discord reactions from thread (more noise than it's worth) (2e3c91e0c)
  • Rewrite release workflow in ts + support multiple tags (478c64342)
  • Pass correct flag (a954f383f)
  • Pass tag via env variable (dcfc82688)
  • Drop 4x tags from releases (e3aa50d11)
❤️ Contributors

v3.19.0

Compare Source

👀 Highlights

Please see the release notes for Nuxt v4.1 for full details on the features and fixes in Nuxt v3.19.

Upgrading

As usual, our recommendation for upgrading is to run:

npx nuxt upgrade --dedupe

This will refresh your lockfile and pull in all the latest dependencies that Nuxt relies on, especially from the unjs ecosystem.

👉 Changelog

compare changes

🚀 Enhancements
  • kit: Add ignore option to resolveFiles (#​32858)
  • kit: Add onInstall and onUpgrade module hooks (#​32397)
  • nuxt,vite: Add experimental support for rolldown-vite (#​31812)
  • nuxt: Extract defineRouteRules to page rules property (#​32897)
  • nuxt,vite: Use importmap to increase chunk stability (#​33075)
  • nuxt: Lazy hydration macros without auto-imports (#​33037)
  • kit,nuxt,schema: Allow modules to specify dependencies (#​33063)
  • kit,nuxt: Add getLayerDirectories util and refactor to use it (#​33098)
🔥 Performance
  • nuxt: Clear inline route rules cache when pages change (#​32877)
  • nuxt: Stop watching app manifest once a change has been detected (#​32880)
🩹 Fixes
  • nuxt: Handle satisfies in page augmentation (#​32902)
  • nuxt: Type response in useFetch hooks (#​32891)
  • nuxt: Add TS parenthesis and as expression for page meta extraction (#​32914)
  • nuxt: Use correct unit thresholds for relative time (#​32893)
  • nuxt: Handle uncached current build manifests (#​32913)
  • kit: Resolve directories in resolvePath and normalize file extensions (#​32857)
  • schema,vite: Bump requestTimeout + allow configuration (#​32874)
  • nuxt: Deep merge extracted route meta (#​32887)
  • nuxt: Do not expose app components until fully resolved (#​32993)
  • kit: Only exclude node_modules/ if no custom srcDir (#​32987)
  • nuxt: Compare final matched routes when syncing route object (#​32899)
  • nuxt: Make vue server warnings much less verbose in dev mode (#​33018)
  • schema: Allow disabling cssnano/autoprefixer postcss plugins (#​33016)
  • kit: Ensure local layers are prioritised alphabetically (#​33030)
  • kit,nuxt: Expose global types to vue compiler (#​33026)
  • nuxt: Support config type inference for defineNuxtModule().with() (#​33081)
  • nuxt: Search for colliding names in route children (31a9282c2)
  • nuxt: Delete nuxtApp._runningTransition on resolve (#​33025)
  • nuxt: Add validation for nuxt island reviver key (#​33069)
  • kit: Prioritise local layers over extended layers (ae8b0d2b8)
  • kit: Address merge conflict (89ccbbebb)
  • kit: Do not resolve public dir aliases (5d87d3a80)
💅 Refactors
  • nuxt: Simplify page segment parsing (#​32901)
  • nuxt: Remove unnecessary async/await in afterEach (#​32999)
  • vite: Simplify inline chunk iteration (9ea90fc33)
  • kit,nuxt,ui-templates,vite: Address deprecations + improve regexp perf (#​33093)
📖 Documentation
  • Add a section about augmenting types with TS project references (#​32843)
  • Switch example to use vitest projects (#​32863)
  • Update testing setupTimeout and add teardownTimeout (#​32868)
  • Add middleware to layers guide (fa516d440)
  • Add documentation for --nightly command (#​32907)
  • Update package information in roadmap section (#​32881)
  • Add more info about nuxt spa loader element attributes (#​32871)
  • Correct filename in example (#​33000)
  • Add more information about using useRoute and accessing route in middleware (#​33004)
  • Avoid variable shadowing in locale example (#​33031)
🏡 Chore
  • Remove stray test file (42fd247a4)
  • Ignore webpagetest.org when scanning links (cb18f4960)
  • Add type: 'module' in playground (#​33099)
Tests
  • Add failing test for link component duplication (#​32792)
  • Simplify module hook tests (#​32950)
  • Refactor stubbing of import.meta.dev (#​33023)
  • Use findWorkspaceDir rather than relative paths to repo root (c4c3ada96)
  • Improve router test for global transitions (7e6a6fc35)
  • Use expect.poll (f4354203a)
  • Use expect.poll instead of expectWithPolling (15ca5be95)
  • Use vi.waitUntil instead of custom retry logic (4c8c13090)
  • Update test for app creation (9a3b44515)
  • Update bundle size snapshot (76988ce97)
🤖 CI
  • Remove double set of tests for docs prs (14c006ac4)
  • Add workflow for discord team discussion threads (f14854fc3)
  • Fix some syntax issues with discord + github integrations (c059f7cd1)
  • Use token for adding issue to project (51661bac3)
  • Use discord bot to create thread automatically (37f9eb27b)
  • Only use discord bot (38ce2dcbb)
  • Update format of discord message (0047b3059)
  • Try bolding entire line (6e9f40eb9)
  • Oops (8b044cad2)
  • Add delay after adding each reaction (37b7e2108)
  • Use last lts node version for testing (98719c065)
  • Try npm trusted publisher (ea33502c3)
  • Use npm trusted publisher for main releases (31a55437f)
  • Change wording (#​32979)
  • Add github ai moderator (#​33077)
❤️ Contributors

v3.18.1

Compare Source

3.18.1 is a regularly scheduled patch release.

👉 Changelog

compare changes

🔥 Performance
  • kit: Get absolute path from tinyglobby in resolveFiles (#​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
  • Update nightly version references (#​32776)
  • Improve explanation of global middleware (#​32855)
🏡 Chore
Tests
  • Move tests for defineNuxtComponent out of e2e test (#​32848)
🤖 CI
  • Move nightly releases into different concurrency group (26f9baa6a)
❤️ Contributors

v3.18.0

Compare Source

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 for onPrehydrate 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

compare changes

🚀 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
🤖 CI
  • Trigger website redeploy on main branch (#​32695)
  • Release pkg.pr.new for main/3.x branches as well (ca4f0b1da)
  • Apply 3x tag to latest v3 release (5e8dfc150)
❤️ Contributors

v3.17.7

Compare Source

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

compare changes

🩹 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 and useFetch migration (#​32560)
  • Change return type of async data from undefined to null 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

v3.17.6

Compare Source

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

compare changes

🔥 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 in createClientOnly 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 to projects (#​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
❤️ Contributors

v3.17.5

Compare Source

3.17.5 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

compare changes

🔥 Performance
  • nuxt: Replace remaining instance of globby (#​31688)
🩹 Fixes
  • nuxt: Export useScriptRybbitAnalytics from script stubs (d275ae1a0)
  • nuxt: Remove unneeded pattern from regexp (2954c092c)
  • nuxt: Ensure appConfig sources are not duplicated (#​32216)
  • nuxt: Wrap slot with h() in ClientOnly (#​30664)
  • kit: Ensure template filename uses safe patterns (4372b24dd)
  • nuxt: Access asyncData state from nuxt app instance (#​32232)
  • nuxt: Make patterns relative to srcDir in buildCache (#​32260)
  • nuxt: Return non-existent route component in RouteProvider (#​32266)
  • nuxt: Use single asyncData watcher (#​32247)
  • vite: Use arrow functions in dynamic imports (#​32285)
  • webpack: Use plugin for rollup-compatible dynamic imports (#​32281)
📖 Documentation
  • Update addRouteMiddleware path in example (#​32171)
  • Narrow link to just middleware (#​32203)
  • Use optional chaining in error example (#​32214)
  • Give example of using --env-file (29f6392cd)
  • Recommend nuxt command consistently (#​32237)
  • Fix typos (#​30413)
  • Add props to special metadata (#​29708)
  • Fix wrong alert with warning in /guide/pages (#​32270)
  • Update upgrade guide + roadmap (0040ee5e7)
📦 Build
🏡 Chore
Tests
  • Add regression test for useAsyncData + transition (29f7c8cb4)
  • Ensure builder tests run sequentially (defa32829)
❤️ Contributors

v3.17.4

Compare Source

3.17.4 is a regularly-scheduled patch release.

Upgrading

Our recommendation for upgrading is to run:

npx nuxi@latest 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

compare changes

🔥 Performance
  • nuxt: Use Set for circular dep plugin (#​32110)
  • Refactor Array.includes checks to use Sets (#​32133)
  • nuxt: Use shallowRef for primitive values (#​32152)
  • nuxt: Skip route rules processing for empty child array (#​32166)
  • nuxt: Use Intl.Collator instead of localeCompare (#​32167)
🩹 Fixes
  • nuxt: Do not await lazy asyncData inside <ClientOnly> (#​32101)
  • nuxt: Respect cachedData with multiple asyncData calls (#​32099)
  • nuxt: Clear async data after a tick (#​32096)
  • nuxt: Support reactive keys in useLazyAsyncData (#​32092)
  • rspack: Use ts-checker-rspack-plugin (#​32115)
  • nuxt: Clear previous head in island-renderer (#​32100)
  • nuxt: Handle virtual files prefixed with / (#​32129)
  • schema: Remove nitro options from DeepPartial (#​31990)
  • nuxt: Ensure legacy async data remains reactive (#​32134)
  • nuxt: Pass attrs down to single child of <ClientOnly> (#​32131)
  • nuxt: Fix merge conflicts (7044450d4)
  • nuxt: Clone vnode when passing attrs down to client-only (b3acf0c78)
  • vite: Do not replace global with globalThis (#​32130)
  • nuxt: Suppress client-side errors by crawlers (#​32137)
  • nuxt: Use fresh route when <NuxtLayout> first renders (#​24673)
  • nuxt: Add additional logging when skipping error page for bot (68c270083)
  • nuxt: Add watch paths outside srcDir to parcel strategy (#​32139)
📖 Documentation
  • Use emphasis instead of quotes (#​32078)
  • Update useNuxtData default return to undefined (#​32054)
  • Capitalise headings (#​32095)
  • Prefix imports.dirs with alias (0dbf314d9)
  • Mention node v20 is minimum requirement for nuxt setup (#​32148)
  • Use more descriptive link text (d0b1b9d35)
🏡 Chore
Tests
  • Add universal routing tests + clean up output (64178b6f4)
  • nuxt: Add unit tests for watch strategies (#​32138)
  • Resolve watch path (8fb562c04)
  • Use fake timers instead of setTimeout mock (#​32142)
🤖 CI
❤️ Contributors

v3.17.3

Compare Source

3.17.3 is a regularly-scheduled patch release.

Upgrading

Our recommendation for upgrading is to run:

npx nuxi@latest 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

compare changes

🔥 Performance
  • nuxt: Pre-calculate extension glob before app resolution (#​32052)
  • nuxt: Improve islands client components chunks (#​32015)
🩹 Fixes
  • nuxt: Preload async layouts (#​32002)
  • nuxt: Handle File within FormData (#​32013)
  • schema: Respect user-provided ignore patterns (#​32020)
  • nuxt: Allow loading virtual files with query params (#​32022)
  • nuxt: Don't use reactive key for useFetch with watch: false (#​32019)
  • nuxt: Do not clear data if custom getCachedData is provided (#​32003)
  • nuxt: Provide nuxtApp for asyncData functions run on server (#​32038)
  • vite: Strip queries when skipping vite transform middleware (#​32041)
  • nuxt: Sort hash sources and files (#​32048)
  • nuxt: Do not suppress chunk import error (#​32064)
💅 Refactors
  • nuxt: Directly access initialised asyncData (e779d6cd5)
📖 Documentation
🤖 CI
  • Convert bug/enhancement labels to issue types (3ff743fe0)
  • Update payload for issue types (791e5f443)
❤️ Contributors

v3.17.2

Compare Source

3.17.2 is a regularly-scheduled patch release.

Upgrading

Our recommendation for upgrading is to run:

npx nuxi@latest 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

compare changes

🔥 Performance
  • nuxt: Tree-shake router's handleHotUpdate in production (#​31971)
🩹 Fixes
  • nuxt: Ensure asyncData is initialised before effects run (#​31946)
  • nuxt: Skip view transition if user agent provides one before defining transition (#​31945)
  • nuxt: Improve hashing for complex body in useFetch (#​31963)
  • nuxt: Immediately call asyncData within client-only components (#​31964)
  • nuxt: Don't render errors if event is already handled (#​31966)
  • nuxt: Track whether need to reinit asyncData separately from deps (#​31965)
  • nuxt: Preserve params/meta/matched with universal router (#​31950)
  • nuxt: Respect scroll behavior set by scrollToTop (#​31914)
  • nuxt: Load live data from vfs even if a file exists in buildDir (#​31969)
  • nuxt: Short circuit middleware when validate returns false (#​31967)
  • nuxt: Ensure useAsyncData reactive to key changes when immediate: false (#​31987)
  • nuxt: Resolve real paths imported into virtual files (0bb07f129)
  • webpack: Broaden WarningFilter type (2a79dbd68)
  • schema: Broaden warningIgnoreFilters (a62e808ac)
📖 Documentation
🏡 Chore
Tests
🤖 CI
  • Run docs workflow against pull requests (08f968903)
  • Run tests against node v20 (3c97d3493)
❤️ Contributors

v3.17.1

Compare Source

3.17.1 is the next patch release.

Upgrading

Our recommendation for upgrading is to run:

npx nuxi@latest 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

compare changes

🩹 Fixes
  • nuxt: Check if match exists with new unplugin filter (#​31929)
  • nuxt: Reinitialise stale async data (#​31940)
  • nuxt: Skip view transition if user agent is providing one (#​31938)
  • nuxt: Trigger execute when non-immediate fetch key changes (#​31941)
  • nuxt: Don't redirect when route has trailing slash (#​31902)
  • ui-templates: Use escapeHTML from vue (8e4b8d62f)
  • schema: Add @vue/shared dependency (7d445c963)
📦 Build
  • Copy README/LICENSE from repo root (8e287d556)
🏡 Chore
Tests
❤️ Contributors

v3.17.0

Compare Source

👀 Highlights

This release brings a major reworking of the async data layer, a new built-in component, better warnings, and performance improvements!

📊 Data Fetching Improvements

A major reorganization of Nuxt's data fetching layer brings significant improvements to useAsyncData and useFetch.

Although we have aimed to maintain backward compatibility and put breaking changes behind the experimental.granularCachedData flag (disabled by default), we recommend testing your application thoroughly after upgrading. You can also disable experimental.purgeCachedData to revert to the previous behavior if you are relying on cached data being available indefinitely after components using useAsyncData are unmounted.

👉 Read the the original PR for full details (#​31373), but here are a few highlights.

Consistent Data Across Components

All calls to useAsyncData or useFetch with the same key now share the underlying refs, ensuring consistency across your application:

<!-- ComponentA.vue -->
<script setup>
const { data: users, pending } = useAsyncData('users', fetchUsers)
</script>

<!-- ComponentB.vue -->
<script setup>
// This will reference the same data state as ComponentA
const { data: users, status } = useAsyncData('users', fetchUsers)
// When either component refreshes the data, both will update consistently
</script>

This solves various issues where components could have inconsistent data states.

Reactive Keys

You can now use computed refs, plain refs, or getter functions as keys:

const userId = ref('123')
const { data: user } = useAsyncData(
  computed(() => `user-${userId.value}`),
  () => fetchUser(userId.value)
)

// Changing the userId will automatically trigger a new data fetch
// and clean up the old data if no other components are using it
userId.value = '456'
Optimized Data Refetching

Multiple components watching the same data source will now trigger only a single data fetch when dependencies change:

// In multiple components:
const { data } = useAsyncData(
  'users', 
  () => $fetch(`/api/users?page=${route.query.page}`),
  { watch: [() => route.query.page] }
)

// When route.query.page changes, only one fetch operation will occur
// All components using this key will update simultaneously
🎭 Built-In Nuxt Components
<NuxtTime> - A new component for safe time display

We've added a new <NuxtTime> component for SSR-safe time display, which resolves hydration mismatches when working with dates (#​31876):

<template>
  <NuxtTime :datetime="Date.now()" />
</template>

The component accepts multiple time formats and gracefully handles both client and server rendering.

Enhanced <NuxtErrorBoundary>

The <NuxtErrorBoundary> component has been converted to a Single File Component and now exposes error and clearError from the component - as well as in the error slot types, giving you greater ability to handle errors in your templates and via useTemplateRef (#​31847):

<NuxtErrorBoundary @&#8203;error="handleError">
  <template #error="{ error, clearError }">
    <div>
      <p>{{ error.message }}</p>
      <button @&#8203;click="clearError">Try again</button>
    </div>
  </template>
  
  <!-- Content that might error -->
  <MyComponent />
</NuxtErrorBoundary>
🔗 Router Improvements

<NuxtLink> now accepts a trailingSlash prop, giving you more control over URL formatting (#​31820):

<NuxtLink to="/about" trailing-slash>About</NuxtLink>
<!-- Will render <a href="/about/"> -->
🔄 Loading Indicator Customization

You can now customize the loading indicator with new props directly on the component (#​31532):

  • hideDelay: Controls how long to wait before hiding the loading bar
  • resetDelay: Controls how long to wait before resetting loading indicator state
<template>
  <NuxtLoadingIndicator :hide-delay="500" :reset-delay="300" />
</template>
📚 Documentation as a Package

The Nuxt documentation is now available as an npm package! You can install @nuxt/docs to access the raw markdown and YAML content used to build the documentation website (#​31353).

💻 Developer Experience Improvements

We've added several warnings to help catch common mistakes:

  • Warning when server components don't have a root element #​31365
  • Warning when using the reserved runtimeConfig.app namespace #​31774
  • Warning when core auto-import presets are overridden #​29971
  • Error when definePageMeta is used more than once in a file #​31634
🔌 Enhanced Module Development

Module authors will be happy to know:

  • A new experimental.enforceModuleCompatibility allows Nuxt to throw an error when a module is loaded that isn't compatible with it (#​31657). It will be enabled by default in Nuxt v4.
  • You can now automatically register every component exported via named exports from a file with addComponentExports #​27155
🔥 Performance Improvements

Several performance improvements have been made:

  • Switched to tinyglobby for faster file globbing #​31668
  • Excluded .data directory from type-checking for faster builds #​31738
  • Improved tree-shaking by hoisting the purgeCachedData check #​31785

Upgrading

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

compare changes

🚀 Enhancements
  • nuxt: Accept hideDelay and resetDelay props for loading indicator (#​31532)
  • nuxt: Warn server components need root element (#​31365)
  • docs: Publish raw markdown/yaml docs as @nuxt/docs (#​31353)
  • kit,nuxt: Pass dotenv values from loadNuxtConfig to nitro (#​31680)
  • nuxt,vite: Support disabling scripts in dev mode (#​31724)
  • nuxt: Warn if user uses reserved runtimeConfig.app namespace (#​31774)
  • kit,schema: Allow throwing error if modules aren't compatible (#​31657)
  • nuxt: Extract middleware when scanning page metadata (#​30708)
  • nuxt: Warn if core auto-import presets are overridden (#​29971)
  • nuxt: Scan named exports with addComponentExports (#​27155)
  • nuxt: Convert <NuxtErrorBoundary> to SFC + expose error/clearError (#​31847)
  • nuxt: Add <NuxtTime> component for ssr-safe time display (#​31876)
  • nuxt: Add trailingSlash prop to <NuxtLink> (#​31820)
🔥 Performance
  • kit,rspack,webpack: Switch to tinyglobby (#​31668)
  • kit: Exclude .data directory from type-checking (#​31738)
  • nuxt: Hoist purgeCachedData check to improve tree-shaking (#​31785)
  • nuxt: Remove oxc-parser manual wasm fallback logic (#​31484)
  • nuxt: Remove unecessary type check for useFetch (#​31910)
🩹 Fixes
  • kit,vite: Ensure all modulesDir paths are added to fs.allow (#​31540)
  • nuxt: Pass slots through to lazy hydrated components (#​31649)
  • vite: Do not return 404 for dev server handlers which shadow /_nuxt/ (#​31646)
  • nuxt: Sync error types for useLazyAsyncData (#​31676)
  • nuxt: Strip base url from error.url (#​31679)
  • nuxt: Render inline styles before app:rendered is called (#​31686)
  • nuxt: Update nitro imports (0bec0bd26)
  • nuxt: Check for fallback attribute when stripping <DevOnly> (c1d735c27)
  • vite: Invalidate files not present in module graph (ecae2cd54)
  • nuxt: Do not add manifest preload when noScripts (c9572e953)
  • nuxt: Do not prompt to update compatibilityDate (#​31725)
  • nuxt: Show brotli size by default when analyzing bundle (#​31784)
  • nuxt: Always pass statusMessage when rendering html error (#​31761)
  • nuxt: Error when definePageMeta is used more than once (#​31634)
  • nuxt: Parse error.data before rendering error.vue (#​31571)
  • nuxt: Use single synced asyncdata instance per key (#​31373)
  • nuxt: Use useAsyncData in console log (#​31801)
  • nuxt: Wait for suspense to resolve before handling NuxtErrorBoundary error (#​31791)
  • vite: Disable preserveModules (#​31839)
  • nuxt: Align pending with status value for v4 (#​25864)
  • nuxt: Consider full path when de-duplicating routes (#​31849)
  • nuxt: Augment nuxt/app in generated middleware and layouts declarations (#​31808)
  • nuxt: Correct order of args passed to withoutBase (f956407bb)
  • vite: Dedupe vue in vite-node dev server (f3882e004)
  • ui-templates: Pass pointer events through spotlight div in error dev template (#​31887)
  • kit: Include user-defined types before internal ones in tsconfig.json (#​31882)
  • nuxt: Do not purge nuxt data if active useNuxtData (#​31893)
  • nuxt: Do not include components of key in useFetch watch sources (#​31903)
  • nuxt: Use first existing modulesDir to store build cache files (#​31907)
💅 Refactors
  • nuxt: Use shallowRef for primitives as well (#​31662)
  • nuxt: Move island renderer into its own event handler (#​31386)
  • nuxt: Remove unneeded import (#​31750)
  • nuxt: Use _replaceAppConfig when applying hmr (#​31786)
  • nuxt: Use new unplugin filter options (#​31868)
  • schema: Do not generate types for ConfigSchema (#​31894)
📖 Documentation
  • Add note on extending auto-imports (#​31640)
  • Improve description of app.vue (#​31645)
  • Use video-accordion video and add more videos (#​31655)
  • Add description of templateParams to seo docs (#​31583)
  • Refine auto-imports documentation (#​31700)
  • Fix nuxt logo on website badge (#​31704)
  • Update tailwindcss link (b5741cb5a)
  • Adjust description of useHydration (#​31712)
  • Remove trailing slash (#​31751)
  • Remove comment about callOnce returning value (#​31747)
  • Use vs. consistently (#​31760)
  • Update nitro addServerHandler example (#​31769)
  • Add supporting shared folder video (#​31651)
  • Update example for component auto-import in nuxt modules (#​31757)
  • Refine nuxt kit components documentation (#​31714)
  • Use trailing slash for vitest link (82de8bcf8)
  • Fix casing (#​31805)
  • Add discord and nuxters links (#​31888)
  • Fix typos (#​31898)
📦 Build
  • nuxt: Use vue-sfc-transformer to process sfcs (#​31691)
🏡 Chore
Tests
  • nuxt: Add customizable test api for pages tests (#​31619)
  • kit: Fix tests when running on Windows (#​31694)
  • Update page metadata snapshot (89a596075)
  • Add basic runtime tests for <NuxtErrorBoundary> (4df92c45f)
  • Add version to mock nuxt (915fae2fd)
  • Update assertion for pendingWhenIdle (08f2224c8)
  • Remove incorrect assertions (fdc4b5343)
  • Update tests for purgeCachedData (c6411eb17)
🤖 CI
  • Add notify-nuxt-website workflow (#​31726)
❤️ Contributors

v3.16.2

Compare Source

3.16.2 is the next patch release.

Upgrading

Our recommendation for upgrading is to run:

npx nuxi@latest 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

compare changes

🔥 Performance
  • nuxt: Improve tree-shaking of useRequestEvent on client (#​31586)
🩹 Fixes
  • nuxt: Pass down attrs to <Body> and <Html> (#​31513)
  • nuxt: Use greedy catchall when /index is the last segment (#​31528)
  • nuxt: Reset page:loading:end hook before navigation (#​31504)
  • nuxt: Write initial cookie value if different from document.cookie (#​31517)
  • nuxt: Support template string quotes in resolveComponent (#​31526)
  • nuxt: Show fatal errors thrown in middleware (#​31518)
  • nuxt: Use name to index route providers in dev (#​31544)
  • nuxt: Improve default scroll behaviour (#​31545)
  • vite: Return 404 for non-existent _nuxt/ paths in development (#​31543)
  • nuxt: Pass error data to error.vue (#​31573)
  • nuxt: Use unhead v2 api in default welcome + error pages (#​31584)
  • nuxt: Improve consistency of page metadata extraction (#​31306)
  • nuxt: Do not remove meta when scanPageMeta is disabled (0ba454b21)
💅 Refactors
  • nuxt: Simplify conditional branches of <NuxtPage> (#​31561)
  • Replace useServerHead in onPrehydrate with useHead (#​31585)
📖 Documentation
  • Move custom directories note to the correct place (#​29100)
  • Update example to useTemplateRef (#​31458)
  • Provide async function for $fetch (#​31459)
  • Mention the possibility to scan pages based on a pattern (#​31462)
  • Add dedupe flag (#​31467)
  • Improve refreshNuxtData docs (#​31448)
  • Add missing -- before --template (#​31469)
  • Migrate to @​nuxt/content v3 (#​31150)
  • Fix icon for main docs (e7828d9c6)
  • Save selected package manager (#​31520)
  • Improve refresh nuxt data example (#​31487)
  • Note that middleware runs on error pages as well (df14c0263)
  • Replace all 'Nuxt 3' with 'Nuxt' in documentation (#​31519)
  • resolveComponent only auto-imports components with literal strings (#​31511)
  • Add ticks around tsconfig.json (#​31473)
  • Capitalize heading (#​31523)
  • Update links to unhead.unjs.io (1913febbb)
  • Document that props are passed via server components via query (db7688219)
  • Improve description of page:start and page:finish hooks (#​31570)
🏡 Chore
Tests
  • Avoid invalid nested font face (#​31524)
  • Add test for loading indicator with custom key (25ca9b819)
  • Add test for custom prop + loading indicator (94bfed031)
  • Update snapshot (55134fc2a)
❤️ Contributors

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

This PR contains the following updates: | Package | Change | Age | Confidence | |---|---|---|---| | [nuxt](https://nuxt.com) ([source](https://github.com/nuxt/nuxt/tree/HEAD/packages/nuxt)) | [`3.16.1` -> `3.20.2`](https://renovatebot.com/diffs/npm/nuxt/3.16.1/3.20.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/nuxt/3.20.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nuxt/3.16.1/3.20.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>nuxt/nuxt (nuxt)</summary> ### [`v3.20.2`](https://github.com/nuxt/nuxt/releases/tag/v3.20.2) [Compare Source](https://github.com/nuxt/nuxt/compare/v3.20.1...v3.20.2) > 3.20.2 is the next patch release. #### ✅ Upgrading Our recommendation for upgrading is to run: ```sh npx nuxt upgrade --dedupe --channel=v3 ``` 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. > \[!NOTE] > This will only work if you *already have* a version of `@nuxt/cli` which has the `--channel` flag. If this does not work, you can instead run `npx nuxi@latest` for the initial upgrade. #### 👉 Changelog [compare changes](https://github.com/nuxt/nuxt/compare/v3.20.1...v3.20.2) ##### 🩹 Fixes - **nitro:** Do not show pretty error handler when testing ([cc75ce409](https://github.com/nuxt/nuxt/commit/cc75ce409)) - **nuxt:** Generate valid references for component declaration items ([#&#8203;33388](https://github.com/nuxt/nuxt/pull/33388)) - **nuxt:** Sync internal route before calling `page:finish` hook ([#&#8203;33707](https://github.com/nuxt/nuxt/pull/33707)) - **nitro:** Ensure html is a string before injecting error handler ([6f51a25e9](https://github.com/nuxt/nuxt/commit/6f51a25e9)) - **nitro:** Include layer server directories in `tsconfig.server.json` ([#&#8203;33510](https://github.com/nuxt/nuxt/pull/33510)) - **nuxt:** Ensure deduped async data executions return latest promise ([#&#8203;33740](https://github.com/nuxt/nuxt/pull/33740)) - **kit,nuxt:** Type + respect `moduleDependencies` by meta name ([#&#8203;33774](https://github.com/nuxt/nuxt/pull/33774)) - **nuxt,schema:** Ignore `.d.vue.ts` declarations ([9a6a770ab](https://github.com/nuxt/nuxt/commit/9a6a770ab)) - **kit,nuxt:** Protect against resolved nuxt module subpath ([#&#8203;33767](https://github.com/nuxt/nuxt/pull/33767)) - **nuxt:** Re-execute `callOnce` during HMR ([#&#8203;33810](https://github.com/nuxt/nuxt/pull/33810)) - **nuxt:** Resolve watch callback after reactive key change in `useAsyncData` ([#&#8203;33802](https://github.com/nuxt/nuxt/pull/33802)) - **nuxt:** Escape HTML in development error page stack trace ([#&#8203;33820](https://github.com/nuxt/nuxt/pull/33820)) - **kit:** Do not add resolved `rootDir` to cached layer config ([#&#8203;33779](https://github.com/nuxt/nuxt/pull/33779)) - **kit,schema:** Add `moduleDependencies` -> `installModule` ([#&#8203;33689](https://github.com/nuxt/nuxt/pull/33689)) ##### 💅 Refactors - **nuxt:** Improve type safety within `callOnce` function ([#&#8203;33825](https://github.com/nuxt/nuxt/pull/33825)) ##### 📖 Documentation - Split directory structure and re-order guides (v3) ([#&#8203;33690](https://github.com/nuxt/nuxt/pull/33690)) - Fix link ([016ef66e3](https://github.com/nuxt/nuxt/commit/016ef66e3)) - Add hints release ([#&#8203;33701](https://github.com/nuxt/nuxt/pull/33701)) - Fix link to vitest globals config ([#&#8203;33702](https://github.com/nuxt/nuxt/pull/33702)) - Fix 404 link ([5543b7cf7](https://github.com/nuxt/nuxt/commit/5543b7cf7)) - Text consistency ([#&#8203;33709](https://github.com/nuxt/nuxt/pull/33709)) - Type `error` as non-optional prop ([#&#8203;33763](https://github.com/nuxt/nuxt/pull/33763)) ##### 🏡 Chore - Update pnpm to 10.21 and enable trust policy ([1cb55efc0](https://github.com/nuxt/nuxt/commit/1cb55efc0)) - Revert pnpm trust policy and restore provenance action ([103ae1351](https://github.com/nuxt/nuxt/commit/103ae1351)) - Update markdownlint config to ignore mdc issues ([d4933e26e](https://github.com/nuxt/nuxt/commit/d4933e26e)) - Pin to single version of unstorage ([619956e7f](https://github.com/nuxt/nuxt/commit/619956e7f)) ##### ✅ Tests - Add `patchProp` and `nodeOps` to excluded Vue helpers ([#&#8203;33754](https://github.com/nuxt/nuxt/pull/33754)) - Use fake timers for watch params test ([58607fbea](https://github.com/nuxt/nuxt/commit/58607fbea)) - Update test for v3 defaults ([daa002638](https://github.com/nuxt/nuxt/commit/daa002638)) ##### 🤖 CI - Add `--pnpm` flag to correctly publish prerelease ([#&#8203;33688](https://github.com/nuxt/nuxt/pull/33688)) - Update action lint config ([#&#8203;33710](https://github.com/nuxt/nuxt/pull/33710)) ##### ❤️ Contributors - Daniel Roe ([@&#8203;danielroe](https://github.com/danielroe)) - Alexander Lichter ([@&#8203;TheAlexLichter](https://github.com/TheAlexLichter)) - Florian Heuberger ([@&#8203;Flo0806](https://github.com/Flo0806)) - Konstantin Telyakov ([@&#8203;kTelyakov](https://github.com/kTelyakov)) - abeer0 ([@&#8203;iiio2](https://github.com/iiio2)) - Julien Huang ([@&#8203;huang-julien](https://github.com/huang-julien)) - Robin ([@&#8203;OrbisK](https://github.com/OrbisK)) - Dheeraj Joshi ([@&#8203;dheeraj3587](https://github.com/dheeraj3587)) - Edwin Samodra ([@&#8203;edwinsamodra](https://github.com/edwinsamodra)) - edison ([@&#8203;edison1105](https://github.com/edison1105)) - 山吹色御守 ([@&#8203;KazariEX](https://github.com/KazariEX)) - Sébastien Chopin ([@&#8203;atinux](https://github.com/atinux)) - pierreoa ([@&#8203;pierreoa](https://github.com/pierreoa)) - Maxime Pauvert ([@&#8203;maximepvrt](https://github.com/maximepvrt)) ### [`v3.20.1`](https://github.com/nuxt/nuxt/releases/tag/v3.20.1) [Compare Source](https://github.com/nuxt/nuxt/compare/v3.20.0...v3.20.1) > 3.20.1 is the next patch release. #### ✅ Upgrading Our recommendation for upgrading is to run: ```sh npx nuxt upgrade --dedupe --channel=v3 ``` 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 [compare changes](https://github.com/nuxt/nuxt/compare/v3.20.0...v3.20.1) ##### 🩹 Fixes - **vite:** Unset `optimizeDeps.include` for server environment ([#&#8203;33550](https://github.com/nuxt/nuxt/pull/33550)) - **kit,nuxt,schema:** Deprecate `ImportPresetWithDeprecation` ([#&#8203;33596](https://github.com/nuxt/nuxt/pull/33596)) - **nuxt:** Correct warning message for prefetch/noPrefetch conflict ([#&#8203;33617](https://github.com/nuxt/nuxt/pull/33617)) - **nitro:** Remove `<nuxt-error-overlay>` iframe border ([#&#8203;33625](https://github.com/nuxt/nuxt/pull/33625)) - **vite:** Use rolldown replace only in build ([#&#8203;33615](https://github.com/nuxt/nuxt/pull/33615)) - **nitro:** Use directory paths in `moduleEntryPaths` ([#&#8203;33628](https://github.com/nuxt/nuxt/pull/33628)) - **nitro:** Start error overlay minimized based on status code ([#&#8203;33658](https://github.com/nuxt/nuxt/pull/33658)) - **vite:** Ensure `optimizeDeps` config is applied before other plugins ([#&#8203;33586](https://github.com/nuxt/nuxt/pull/33586)) - **nuxt:** Respect layer priority order for scanned components ([#&#8203;33654](https://github.com/nuxt/nuxt/pull/33654)) - **nuxt:** Process prerender routes on `pages:resolved` ([#&#8203;33662](https://github.com/nuxt/nuxt/pull/33662)) - **nuxt:** Remove abort signal event listeners after render ([#&#8203;33665](https://github.com/nuxt/nuxt/pull/33665)) - **nuxt:** Cleanup event listener with cleanup signal ([#&#8203;33667](https://github.com/nuxt/nuxt/pull/33667)) - **vite:** Respect vite proxy in dev middleware ([#&#8203;33670](https://github.com/nuxt/nuxt/pull/33670)) ##### 💅 Refactors - **kit,nitro,nuxt,schema,vite:** Explicitly import process/performance ([#&#8203;33650](https://github.com/nuxt/nuxt/pull/33650)) ##### 📖 Documentation - Fix typo in eslint flat config description ([#&#8203;33569](https://github.com/nuxt/nuxt/pull/33569)) - Add signal support to useAsyncData examples ([#&#8203;33601](https://github.com/nuxt/nuxt/pull/33601)) - Note that `cookieStore` is `true` by default ([#&#8203;33572](https://github.com/nuxt/nuxt/pull/33572)) - Document `pending` as alias of `status === 'pending'` ([#&#8203;33221](https://github.com/nuxt/nuxt/pull/33221)) - Clarify route middleware doesn't affect API routes ([#&#8203;33643](https://github.com/nuxt/nuxt/pull/33643)) - Improve docs for `useHead`/`useHydration`/`useLazy*` ([#&#8203;33626](https://github.com/nuxt/nuxt/pull/33626)) - Typo ([#&#8203;33655](https://github.com/nuxt/nuxt/pull/33655)) ##### 🏡 Chore - Add `verifyDepsBeforeRun: install` ([#&#8203;33603](https://github.com/nuxt/nuxt/pull/33603)) - Reduce redirects in docs links ([bbdc72e35](https://github.com/nuxt/nuxt/commit/bbdc72e35)) - Lint docs ([352bdbc93](https://github.com/nuxt/nuxt/commit/352bdbc93)) - Remove verify deps before run ([e9e1c5b97](https://github.com/nuxt/nuxt/commit/e9e1c5b97)) ##### 🤖 CI - Disable cache in release action ([885df65f4](https://github.com/nuxt/nuxt/commit/885df65f4)) ##### ❤️ Contributors - Daniel Roe ([@&#8203;danielroe](https://github.com/danielroe)) - Robin ([@&#8203;OrbisK](https://github.com/OrbisK)) - abeer0 ([@&#8203;iiio2](https://github.com/iiio2)) - Bobbie Goede ([@&#8203;BobbieGoede](https://github.com/BobbieGoede)) - Florian Heuberger ([@&#8203;Flo0806](https://github.com/Flo0806)) - Matej Černý ([@&#8203;cernymatej](https://github.com/cernymatej)) - Peter Budai ([@&#8203;peterbud](https://github.com/peterbud)) - Julien Huang ([@&#8203;huang-julien](https://github.com/huang-julien)) - Max ([@&#8203;onmax](https://github.com/onmax)) - 纸鹿/Zhilu ([@&#8203;L33Z22L11](https://github.com/L33Z22L11)) - Hinata Oishi ([@&#8203;te19oishi](https://github.com/te19oishi)) - Damian Głowala ([@&#8203;DamianGlowala](https://github.com/DamianGlowala)) - Maxime Pauvert ([@&#8203;maximepvrt](https://github.com/maximepvrt)) - Raed Abdennadher ([@&#8203;RaedAbr](https://github.com/RaedAbr)) ### [`v3.20.0`](https://github.com/nuxt/nuxt/releases/tag/v3.20.0) [Compare Source](https://github.com/nuxt/nuxt/compare/v3.19.3...v3.20.0) > **3.20.0** is the next minor release. #### ✅ Upgrading Our recommendation for upgrading is to run: ```sh npx nuxt upgrade --dedupe --channel=v3 ``` 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 [compare changes](https://github.com/nuxt/nuxt/compare/v3.19.3...v3.20.0) ##### 🚀 Enhancements - **nuxt:** Allow specifying component `declarationPath` ([#&#8203;33419](https://github.com/nuxt/nuxt/pull/33419)) - **kit:** Add `extensions` option for `resolveModule` ([#&#8203;33328](https://github.com/nuxt/nuxt/pull/33328)) - **nuxt:** Add abortController option to `useAsyncData` ([#&#8203;32531](https://github.com/nuxt/nuxt/pull/32531)) - **nuxt:** Display youch error page w/ user error page in dev ([#&#8203;33359](https://github.com/nuxt/nuxt/pull/33359)) - **nuxt:** Experimental typescript plugin support ([#&#8203;33314](https://github.com/nuxt/nuxt/pull/33314)) - **nuxt,schema:** Extract asyncData handlers to chunks ([#&#8203;33131](https://github.com/nuxt/nuxt/pull/33131)) - **kit:** Add `setGlobalHead` utility ([#&#8203;33512](https://github.com/nuxt/nuxt/pull/33512)) - **kit,vite:** Allow enabling vite environment api ([#&#8203;33492](https://github.com/nuxt/nuxt/pull/33492)) ##### 🔥 Performance - **nuxt:** Precompute renderer dependencies at build time ([#&#8203;33361](https://github.com/nuxt/nuxt/pull/33361)) - **kit,schema:** Remove some unnecessary dependencies ([bdf34c263](https://github.com/nuxt/nuxt/commit/bdf34c263)) ##### 🩹 Fixes - **nuxt:** Preserve hash with redirecting based on `routeRules` ([#&#8203;33222](https://github.com/nuxt/nuxt/pull/33222)) - **kit:** Safely cleanup `loadNuxtConfig` in concurrent calls ([#&#8203;33420](https://github.com/nuxt/nuxt/pull/33420)) - **nuxt:** Allow object-format `href` in `<NuxtLink>` ([b97ae2f70](https://github.com/nuxt/nuxt/commit/b97ae2f70)) - **nuxt:** Remove `mergeModels` from auto imports ([#&#8203;33344](https://github.com/nuxt/nuxt/pull/33344)) - **nuxt:** Add back `shortPath` property ([#&#8203;33384](https://github.com/nuxt/nuxt/pull/33384)) - **nuxt:** Do not allow native attrs to shadow nuxt link props ([0981990a7](https://github.com/nuxt/nuxt/commit/0981990a7)) - **nuxt:** Remove `declarationPath` from component dirs ([e384ba3cb](https://github.com/nuxt/nuxt/commit/e384ba3cb)) - **nuxt:** Preserve root route in `isPrerendered` check ([#&#8203;33476](https://github.com/nuxt/nuxt/pull/33476)) - **nuxt:** Exempt webpack vfs from pkg lookup ([4df1e8275](https://github.com/nuxt/nuxt/commit/4df1e8275)) - **nitro:** Exempt nightly release from import protections ([272d9abbe](https://github.com/nuxt/nuxt/commit/272d9abbe)) - **webpack,rspack:** Preserve prerender + nitro flags in server builds ([#&#8203;33503](https://github.com/nuxt/nuxt/pull/33503)) - **nuxt:** Support component auto-imports as arguments of `h()` ([#&#8203;33509](https://github.com/nuxt/nuxt/pull/33509)) - **vite:** Prevent assignment for rolldown's replacement plugin ([#&#8203;33526](https://github.com/nuxt/nuxt/pull/33526)) - **nuxt:** Use sha256 hash for prerender cache keys ([#&#8203;33505](https://github.com/nuxt/nuxt/pull/33505)) - **nuxt:** Add `NuxtTime` relative time `numeric` prop ([#&#8203;33552](https://github.com/nuxt/nuxt/pull/33552)) - **nuxt:** Add `NuxtTime` relative time `relativeStyle` prop ([#&#8203;33557](https://github.com/nuxt/nuxt/pull/33557)) - **nuxt:** Handle arrays in app config correctly during HMR ([#&#8203;33555](https://github.com/nuxt/nuxt/pull/33555)) ##### 💅 Refactors - Remove obsolete `shortPath` property ([#&#8203;33384](https://github.com/nuxt/nuxt/pull/33384)) - **kit:** Extract trace utilities ([ddaedfa51](https://github.com/nuxt/nuxt/commit/ddaedfa51)) - **nuxt,vite,webpack:** Allow builders to augment types ([#&#8203;33427](https://github.com/nuxt/nuxt/pull/33427)) - **schema:** Deprecate `extend`, `extendConfig`, and `configResolved` hooks ([932a80dc6](https://github.com/nuxt/nuxt/commit/932a80dc6)) - **nitro,nuxt:** Extract `@nuxt/nitro-server` package ([#&#8203;33462](https://github.com/nuxt/nuxt/pull/33462)) - **nuxt:** Use `RouteLocationNormalizedLoadedGeneric` internally ([aa211fb4f](https://github.com/nuxt/nuxt/commit/aa211fb4f)) - **vite:** Make vite plugins environment-compatible ([#&#8203;33445](https://github.com/nuxt/nuxt/pull/33445)) ##### 📖 Documentation - Add nuxt module `addServerPlugin` note ([#&#8203;33409](https://github.com/nuxt/nuxt/pull/33409)) - Remove deprecated node version ([#&#8203;33411](https://github.com/nuxt/nuxt/pull/33411)) - Update `declarationPath` in `addComponent` ([#&#8203;33380](https://github.com/nuxt/nuxt/pull/33380)) - Add some notes/deprecations for vite hooks ([2c6912d2f](https://github.com/nuxt/nuxt/commit/2c6912d2f)) - Fix incorrect ESM module field info ([#&#8203;33451](https://github.com/nuxt/nuxt/pull/33451)) - Recommend `getLayerDirectories()` instead of `nuxt.options._layers` ([#&#8203;33484](https://github.com/nuxt/nuxt/pull/33484)) - Add docs for `moduleDependencies` ([#&#8203;33499](https://github.com/nuxt/nuxt/pull/33499)) - Pin codemod to v0.18.7 for migration recipe ([#&#8203;33522](https://github.com/nuxt/nuxt/pull/33522)) ##### 🏡 Chore - Migrate gitpod to ona ([#&#8203;33159](https://github.com/nuxt/nuxt/pull/33159)) - Use native node to run `test:prepare` ([cbad63c02](https://github.com/nuxt/nuxt/commit/cbad63c02)) - Do not use native node to run `test:prepare` ([672c09423](https://github.com/nuxt/nuxt/commit/672c09423)) - Update valid semantic scopes ([4ca29168b](https://github.com/nuxt/nuxt/commit/4ca29168b)) - Ignore nitro templates ([ec59aceeb](https://github.com/nuxt/nuxt/commit/ec59aceeb)) - Remove `vue-demi` from `ignoredBuiltDependencies` ([#&#8203;33494](https://github.com/nuxt/nuxt/pull/33494)) - Update vscode url ([#&#8203;33360](https://github.com/nuxt/nuxt/pull/33360)) - Correct jsdoc location for function used as parameters ([#&#8203;33507](https://github.com/nuxt/nuxt/pull/33507)) - Remove code comment ([#&#8203;33515](https://github.com/nuxt/nuxt/pull/33515)) - Patch changelogen for large numbers of commits ([b6530b5b6](https://github.com/nuxt/nuxt/commit/b6530b5b6)) - Filter out commits before last tag when constructing changelog ([257049712](https://github.com/nuxt/nuxt/commit/257049712)) - Ignore `@rollup/plugin-commonjs` ([c2bd323b8](https://github.com/nuxt/nuxt/commit/c2bd323b8)) - Pin `@rollup/plugin-commonjs` ([a524522ea](https://github.com/nuxt/nuxt/commit/a524522ea)) ##### ✅ Tests - Update runtime test to use `asyncDataDefaults.errorValue` ([b6f1c9b0d](https://github.com/nuxt/nuxt/commit/b6f1c9b0d)) - Refactor suite to use common matrix utils ([#&#8203;33483](https://github.com/nuxt/nuxt/pull/33483)) - Update typed router test ([c55db2854](https://github.com/nuxt/nuxt/commit/c55db2854)) ##### 🤖 CI - Publish `@nuxt/nitro-server` on pkg-pr-new ([d37ef17b0](https://github.com/nuxt/nuxt/commit/d37ef17b0)) - Remove nitro-server publish until v4.2 is released ([e34c2f52f](https://github.com/nuxt/nuxt/commit/e34c2f52f)) - For now, use tag push to trigger release ([0705b835f](https://github.com/nuxt/nuxt/commit/0705b835f)) ##### ❤️ Contributors - Daniel Roe ([@&#8203;danielroe](https://github.com/danielroe)) - 山吹色御守 ([@&#8203;KazariEX](https://github.com/KazariEX)) - Matej Černý ([@&#8203;cernymatej](https://github.com/cernymatej)) - Trung Dang ([@&#8203;NamesMT](https://github.com/NamesMT)) - 纸鹿/Zhilu ([@&#8203;L33Z22L11](https://github.com/L33Z22L11)) - Florian Heuberger ([@&#8203;Flo0806](https://github.com/Flo0806)) - Alexander Lichter ([@&#8203;TheAlexLichter](https://github.com/TheAlexLichter)) - Julien Huang ([@&#8203;huang-julien](https://github.com/huang-julien)) - abeer0 ([@&#8203;iiio2](https://github.com/iiio2)) - Max ([@&#8203;onmax](https://github.com/onmax)) - Octavio Araiza ([@&#8203;8ctavio](https://github.com/8ctavio)) - Bobbie Goede ([@&#8203;BobbieGoede](https://github.com/BobbieGoede)) - DipakHalkude ([@&#8203;DipakHalkude](https://github.com/DipakHalkude)) - Aleksander Błaszkiewicz ([@&#8203;ablaszkiewicz](https://github.com/ablaszkiewicz)) ### [`v3.19.3`](https://github.com/nuxt/nuxt/releases/tag/v3.19.3) [Compare Source](https://github.com/nuxt/nuxt/compare/v3.19.2...v3.19.3) > **3.19.3** is a regularly scheduled patch release. #### ✅ Upgrading Our recommendation for upgrading is to run: ```sh 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 [compare changes](https://github.com/nuxt/nuxt/compare/v3.19.2...v3.19.3) ##### 🔥 Performance - **vite:** Use rolldown's replace plugin when applicable ([#&#8203;33258](https://github.com/nuxt/nuxt/pull/33258)) ##### 🩹 Fixes - **nuxt:** Make lazy component types compatible with `h` ([#&#8203;33046](https://github.com/nuxt/nuxt/pull/33046)) - **vite:** Deduplicate inlined server style chunks ([#&#8203;33308](https://github.com/nuxt/nuxt/pull/33308)) - **nuxt:** Support `head` option on `useHead` ([#&#8203;33318](https://github.com/nuxt/nuxt/pull/33318)) - **nuxt:** Do not relativise importmap if `cdnURL` is set ([#&#8203;33333](https://github.com/nuxt/nuxt/pull/33333)) - **nuxt:** Resolve aliases in `imports.dirs` ([#&#8203;33334](https://github.com/nuxt/nuxt/pull/33334)) - **nuxt:** Add missing element/vnode props for `<NuxtLink>` ([#&#8203;33335](https://github.com/nuxt/nuxt/pull/33335)) - **nuxt:** Do not generate server placeholder components ([#&#8203;33345](https://github.com/nuxt/nuxt/pull/33345)) - **nuxt:** Dedupe generated component names ([#&#8203;33346](https://github.com/nuxt/nuxt/pull/33346)) - **webpack:** Test watch instance before closing it ([3314bc9a1](https://github.com/nuxt/nuxt/commit/3314bc9a1)) - **nuxt:** Correctly handle island rendering error ([#&#8203;33302](https://github.com/nuxt/nuxt/pull/33302)) - **nuxt:** Support `v-slot:fallback` longform syntax in `<DevOnly>` ([#&#8203;33368](https://github.com/nuxt/nuxt/pull/33368)) - **nuxt:** Support `typeFrom` when generating auto-import type templates ([#&#8203;33373](https://github.com/nuxt/nuxt/pull/33373)) - **nuxt:** Don't trigger scroll when changing trailing slash ([#&#8203;33358](https://github.com/nuxt/nuxt/pull/33358)) - **nuxt:** Add stubs for new scripts from `@nuxt/scripts` ([057ade490](https://github.com/nuxt/nuxt/commit/057ade490)) - **nuxt:** Prevent duplicate execution on key change in `useAsyncData` ([#&#8203;33325](https://github.com/nuxt/nuxt/pull/33325)) - **nuxt:** Make middleware `_path` property configurable for HMR ([#&#8203;33379](https://github.com/nuxt/nuxt/pull/33379)) - **nuxt:** Handle non-immediate `useAsyncData` with different key on ssr ([#&#8203;33341](https://github.com/nuxt/nuxt/pull/33341)) ##### 💅 Refactors - **nuxt:** Improve implementation of error composables ([#&#8203;33234](https://github.com/nuxt/nuxt/pull/33234)) - **nuxt:** Resolve path of `typed-router.d.ts` early for consistency ([#&#8203;33285](https://github.com/nuxt/nuxt/pull/33285)) - **nuxt:** Place `filename` into `componentsIslandsTemplate` definition ([#&#8203;33394](https://github.com/nuxt/nuxt/pull/33394)) - **nuxt,vite:** Use environment-api compatible plugins ([#&#8203;33403](https://github.com/nuxt/nuxt/pull/33403)) ##### 📖 Documentation - Update usage instructions for Windows users ([#&#8203;33284](https://github.com/nuxt/nuxt/pull/33284)) - Remove d suffix in example ([#&#8203;33298](https://github.com/nuxt/nuxt/pull/33298)) - Move directory structure to top-level ([#&#8203;33299](https://github.com/nuxt/nuxt/pull/33299)) - Add `3.x` prefix to all internal links ([0fef864d6](https://github.com/nuxt/nuxt/commit/0fef864d6)) - Add information about `useFetch` reactivity ([#&#8203;33317](https://github.com/nuxt/nuxt/pull/33317)) - Lint code samples within docs ([#&#8203;33271](https://github.com/nuxt/nuxt/pull/33271)) - Note `prepare` command `NODE_ENV` behavior ([#&#8203;33330](https://github.com/nuxt/nuxt/pull/33330)) - Update `nuxt` command pages ([#&#8203;33336](https://github.com/nuxt/nuxt/pull/33336)) ##### 🏡 Chore - Update bundle size test ([15334d0c1](https://github.com/nuxt/nuxt/commit/15334d0c1)) - Temporarily disable link to github sponsors ([53b02251f](https://github.com/nuxt/nuxt/commit/53b02251f)) - Update markdownlint ignore ([557656e54](https://github.com/nuxt/nuxt/commit/557656e54)) - Migrate pnpm settings out of `.npmrc` ([101682a6b](https://github.com/nuxt/nuxt/commit/101682a6b)) - Ignore errors from npmjs ([d56790347](https://github.com/nuxt/nuxt/commit/d56790347)) - **nuxt:** Align global components indent ([#&#8203;33340](https://github.com/nuxt/nuxt/pull/33340)) - Remove tea.yaml ([8b2188848](https://github.com/nuxt/nuxt/commit/8b2188848)) - Remove todo comment as resolved ([#&#8203;33389](https://github.com/nuxt/nuxt/pull/33389)) - Downgrade nitropack in vite ([3419f3414](https://github.com/nuxt/nuxt/commit/3419f3414)) ##### ✅ Tests - **nuxt:** Set locale to en for nuxt-time tests ([#&#8203;33343](https://github.com/nuxt/nuxt/pull/33343)) - Double `gotoPath` timeout in CI ([9d336cc76](https://github.com/nuxt/nuxt/commit/9d336cc76)) ##### 🤖 CI - Add provenance action to check for downgrades in provenance ([18ab6e5fa](https://github.com/nuxt/nuxt/commit/18ab6e5fa)) - Pass commit sha when triggering ecosystem ci ([7b2949a3c](https://github.com/nuxt/nuxt/commit/7b2949a3c)) ##### ❤️ Contributors - Daniel Roe ([@&#8203;danielroe](https://github.com/danielroe)) - 山吹色御守 ([@&#8203;KazariEX](https://github.com/KazariEX)) - Julien Huang ([@&#8203;huang-julien](https://github.com/huang-julien)) - Florian Heuberger ([@&#8203;Flo0806](https://github.com/Flo0806)) - Ondrej Brendy ([@&#8203;bandiasek](https://github.com/bandiasek)) - Octavio Araiza ([@&#8203;8ctavio](https://github.com/8ctavio)) - Alex Liu ([@&#8203;Mini-ghost](https://github.com/Mini-ghost)) - Bobbie Goede ([@&#8203;BobbieGoede](https://github.com/BobbieGoede)) - abeer0 ([@&#8203;iiio2](https://github.com/iiio2)) - Harlan Wilton ([@&#8203;harlan-zw](https://github.com/harlan-zw)) - Alexander Lichter ([@&#8203;TheAlexLichter](https://github.com/TheAlexLichter)) - Sébastien Chopin ([@&#8203;atinux](https://github.com/atinux)) - Ben Hong ([@&#8203;bencodezen](https://github.com/bencodezen)) - Huseyn Guliyev ([@&#8203;husayt](https://github.com/husayt)) ### [`v3.19.2`](https://github.com/nuxt/nuxt/releases/tag/v3.19.2) [Compare Source](https://github.com/nuxt/nuxt/compare/v3.19.1...v3.19.2) > **3.19.2** is a regularly scheduled patch release. #### ✅ Upgrading Our recommendation for upgrading is to run: ```sh 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 [compare changes](https://github.com/nuxt/nuxt/compare/v3.19.1...v3.19.2) ##### 🔥 Performance - **kit:** Do not normalise templates in loop if `dst` is present ([#&#8203;33200](https://github.com/nuxt/nuxt/pull/33200)) - **nuxt:** Remove watcher from `hydrate-when` lazy hydration strategy ([#&#8203;33199](https://github.com/nuxt/nuxt/pull/33199)) - **nuxt,schema:** Normalise components + directories more efficiently ([#&#8203;33207](https://github.com/nuxt/nuxt/pull/33207)) - **kit,nuxt:** Reduce unnecessary iteration in nuxt code ([#&#8203;33212](https://github.com/nuxt/nuxt/pull/33212)) - **nuxt:** Skip running lazy hydration transform with filter ([#&#8203;33213](https://github.com/nuxt/nuxt/pull/33213)) ##### 🩹 Fixes - **schema:** Add `pkg-types` to dependencies ([a6e5dd756](https://github.com/nuxt/nuxt/commit/a6e5dd756)) - **nuxt:** Ignore errors when treeshaking composables within other composables ([e3e42ac77](https://github.com/nuxt/nuxt/commit/e3e42ac77)) - **nuxt:** Do not tree-shake composables within other composables ([#&#8203;33153](https://github.com/nuxt/nuxt/pull/33153)) - **kit:** Ensure module dependencies are typed correctly ([ea16d182a](https://github.com/nuxt/nuxt/commit/ea16d182a)) - **nuxt:** Prevent Infinity `backgroundSize` in loading indicator ([#&#8203;33211](https://github.com/nuxt/nuxt/pull/33211)) - **nuxt:** Remove unused `enabled` from components dir options ([#&#8203;32844](https://github.com/nuxt/nuxt/pull/32844)) - **nuxt:** Sync watch request in useAsyncData ([#&#8203;33192](https://github.com/nuxt/nuxt/pull/33192)) - **nuxt:** Move key imports logic after all modules run ([#&#8203;33214](https://github.com/nuxt/nuxt/pull/33214)) ##### 📖 Documentation - Update language on bridge head migration ([32e76f609](https://github.com/nuxt/nuxt/commit/32e76f609)) ##### 🏡 Chore - **nuxt:** Unpin tinyglobby ([1811db080](https://github.com/nuxt/nuxt/commit/1811db080)) ##### ❤️ Contributors - Daniel Roe ([@&#8203;danielroe](https://github.com/danielroe)) - Adrien Foulon ([@&#8203;Tofandel](https://github.com/Tofandel)) - Matej Černý ([@&#8203;cernymatej](https://github.com/cernymatej)) - Антон Стасюк ([@&#8203;11Alone11](https://github.com/11Alone11)) - wuiyang ([@&#8203;wuiyang](https://github.com/wuiyang)) ### [`v3.19.1`](https://github.com/nuxt/nuxt/releases/tag/v3.19.1) [Compare Source](https://github.com/nuxt/nuxt/compare/v3.19.0...v3.19.1) > **v3.19.1** is a regularly scheduled patch release #### ✅ Upgrading Our recommendation for upgrading is to run: ```sh 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 [compare changes](https://github.com/nuxt/nuxt/compare/v3.19.0...v3.19.1) ##### 🩹 Fixes - **nuxt:** Correct relative path of auto imported components ([#&#8203;33122](https://github.com/nuxt/nuxt/pull/33122)) - **nuxt:** Prefer accessing `globalThis` over `window` ([#&#8203;33125](https://github.com/nuxt/nuxt/pull/33125)) - **nuxt:** Migrate to AST-aware tree-shaking + route injection ([#&#8203;33128](https://github.com/nuxt/nuxt/pull/33128)) - **nuxt:** Ignore #components import mapping inside packages that use it internally ([#&#8203;33049](https://github.com/nuxt/nuxt/pull/33049)) - **vite:** Remove explicit vite-node configuration of `deps.inline` ([#&#8203;33133](https://github.com/nuxt/nuxt/pull/33133)) - **nuxt:** Include trace in dev-time `useRoute` usage warning ([#&#8203;33039](https://github.com/nuxt/nuxt/pull/33039)) - **nuxt:** Print route middleware path in warning ([#&#8203;33136](https://github.com/nuxt/nuxt/pull/33136)) - **nuxt:** Include core auto-imports from `imports:sources` in override warning ([#&#8203;33050](https://github.com/nuxt/nuxt/pull/33050)) - **nuxt:** Render relative importmap entry path if required ([#&#8203;33146](https://github.com/nuxt/nuxt/pull/33146)) ##### 📖 Documentation - Add documentation for module lifecycle hooks ([#&#8203;33115](https://github.com/nuxt/nuxt/pull/33115)) - Add `--` to bun create command ([ab6aa8ee5](https://github.com/nuxt/nuxt/commit/ab6aa8ee5)) - Add JSDoc for `navigateTo` ([#&#8203;21442](https://github.com/nuxt/nuxt/pull/21442)) ##### 🏡 Chore - Correct `rou3` github url ([#&#8203;33130](https://github.com/nuxt/nuxt/pull/33130)) - Include `.ts` extension ([2c905f864](https://github.com/nuxt/nuxt/commit/2c905f864)) ##### ✅ Tests - Bump bundle size ([15564deb9](https://github.com/nuxt/nuxt/commit/15564deb9)) - Remove `app/` prefix for tree-shaken composables ([06ea91705](https://github.com/nuxt/nuxt/commit/06ea91705)) ##### 🤖 CI - Remove default discord reactions from thread (more noise than it's worth) ([2e3c91e0c](https://github.com/nuxt/nuxt/commit/2e3c91e0c)) - Rewrite release workflow in ts + support multiple tags ([478c64342](https://github.com/nuxt/nuxt/commit/478c64342)) - Pass correct flag ([a954f383f](https://github.com/nuxt/nuxt/commit/a954f383f)) - Pass tag via env variable ([dcfc82688](https://github.com/nuxt/nuxt/commit/dcfc82688)) - Drop `4x` tags from releases ([e3aa50d11](https://github.com/nuxt/nuxt/commit/e3aa50d11)) ##### ❤️ Contributors - Daniel Roe ([@&#8203;danielroe](https://github.com/danielroe)) - Matej Černý ([@&#8203;cernymatej](https://github.com/cernymatej)) - Bobbie Goede ([@&#8203;BobbieGoede](https://github.com/BobbieGoede)) - Octavio Araiza ([@&#8203;8ctavio](https://github.com/8ctavio)) - Michael Brevard ([@&#8203;GalacticHypernova](https://github.com/GalacticHypernova)) - abeer0 ([@&#8203;iiio2](https://github.com/iiio2)) - 山吹色御守 ([@&#8203;KazariEX](https://github.com/KazariEX)) ### [`v3.19.0`](https://github.com/nuxt/nuxt/releases/tag/v3.19.0) [Compare Source](https://github.com/nuxt/nuxt/compare/v3.18.1...v3.19.0) #### 👀 Highlights Please see the release notes for [Nuxt v4.1](https://github.com/nuxt/nuxt/releases/tag/v4.1.0) for full details on the features and fixes in Nuxt v3.19. #### ✅ Upgrading As usual, our recommendation for upgrading is to run: ```sh npx nuxt upgrade --dedupe ``` This will refresh your lockfile and pull in all the latest dependencies that Nuxt relies on, especially from the unjs ecosystem. #### 👉 Changelog [compare changes](https://github.com/nuxt/nuxt/compare/v3.18.1...v3.19.0) ##### 🚀 Enhancements - **kit:** Add `ignore` option to `resolveFiles` ([#&#8203;32858](https://github.com/nuxt/nuxt/pull/32858)) - **kit:** Add `onInstall` and `onUpgrade` module hooks ([#&#8203;32397](https://github.com/nuxt/nuxt/pull/32397)) - **nuxt,vite:** Add experimental support for `rolldown-vite` ([#&#8203;31812](https://github.com/nuxt/nuxt/pull/31812)) - **nuxt:** Extract `defineRouteRules` to page `rules` property ([#&#8203;32897](https://github.com/nuxt/nuxt/pull/32897)) - **nuxt,vite:** Use importmap to increase chunk stability ([#&#8203;33075](https://github.com/nuxt/nuxt/pull/33075)) - **nuxt:** Lazy hydration macros without auto-imports ([#&#8203;33037](https://github.com/nuxt/nuxt/pull/33037)) - **kit,nuxt,schema:** Allow modules to specify dependencies ([#&#8203;33063](https://github.com/nuxt/nuxt/pull/33063)) - **kit,nuxt:** Add `getLayerDirectories` util and refactor to use it ([#&#8203;33098](https://github.com/nuxt/nuxt/pull/33098)) ##### 🔥 Performance - **nuxt:** Clear inline route rules cache when pages change ([#&#8203;32877](https://github.com/nuxt/nuxt/pull/32877)) - **nuxt:** Stop watching app manifest once a change has been detected ([#&#8203;32880](https://github.com/nuxt/nuxt/pull/32880)) ##### 🩹 Fixes - **nuxt:** Handle `satisfies` in page augmentation ([#&#8203;32902](https://github.com/nuxt/nuxt/pull/32902)) - **nuxt:** Type response in `useFetch` hooks ([#&#8203;32891](https://github.com/nuxt/nuxt/pull/32891)) - **nuxt:** Add TS parenthesis and as expression for page meta extraction ([#&#8203;32914](https://github.com/nuxt/nuxt/pull/32914)) - **nuxt:** Use correct unit thresholds for relative time ([#&#8203;32893](https://github.com/nuxt/nuxt/pull/32893)) - **nuxt:** Handle uncached current build manifests ([#&#8203;32913](https://github.com/nuxt/nuxt/pull/32913)) - **kit:** Resolve directories in `resolvePath` and normalize file extensions ([#&#8203;32857](https://github.com/nuxt/nuxt/pull/32857)) - **schema,vite:** Bump `requestTimeout` + allow configuration ([#&#8203;32874](https://github.com/nuxt/nuxt/pull/32874)) - **nuxt:** Deep merge extracted route meta ([#&#8203;32887](https://github.com/nuxt/nuxt/pull/32887)) - **nuxt:** Do not expose app components until fully resolved ([#&#8203;32993](https://github.com/nuxt/nuxt/pull/32993)) - **kit:** Only exclude `node_modules/` if no custom `srcDir` ([#&#8203;32987](https://github.com/nuxt/nuxt/pull/32987)) - **nuxt:** Compare final matched routes when syncing `route` object ([#&#8203;32899](https://github.com/nuxt/nuxt/pull/32899)) - **nuxt:** Make vue server warnings much less verbose in dev mode ([#&#8203;33018](https://github.com/nuxt/nuxt/pull/33018)) - **schema:** Allow disabling cssnano/autoprefixer postcss plugins ([#&#8203;33016](https://github.com/nuxt/nuxt/pull/33016)) - **kit:** Ensure local layers are prioritised alphabetically ([#&#8203;33030](https://github.com/nuxt/nuxt/pull/33030)) - **kit,nuxt:** Expose global types to vue compiler ([#&#8203;33026](https://github.com/nuxt/nuxt/pull/33026)) - **nuxt:** Support config type inference for `defineNuxtModule().with()` ([#&#8203;33081](https://github.com/nuxt/nuxt/pull/33081)) - **nuxt:** Search for colliding names in route children ([31a9282c2](https://github.com/nuxt/nuxt/commit/31a9282c2)) - **nuxt:** Delete `nuxtApp._runningTransition` on resolve ([#&#8203;33025](https://github.com/nuxt/nuxt/pull/33025)) - **nuxt:** Add validation for nuxt island reviver key ([#&#8203;33069](https://github.com/nuxt/nuxt/pull/33069)) - **kit:** Prioritise local layers over extended layers ([ae8b0d2b8](https://github.com/nuxt/nuxt/commit/ae8b0d2b8)) - **kit:** Address merge conflict ([89ccbbebb](https://github.com/nuxt/nuxt/commit/89ccbbebb)) - **kit:** Do not resolve public dir aliases ([5d87d3a80](https://github.com/nuxt/nuxt/commit/5d87d3a80)) ##### 💅 Refactors - **nuxt:** Simplify page segment parsing ([#&#8203;32901](https://github.com/nuxt/nuxt/pull/32901)) - **nuxt:** Remove unnecessary `async/await` in `afterEach` ([#&#8203;32999](https://github.com/nuxt/nuxt/pull/32999)) - **vite:** Simplify inline chunk iteration ([9ea90fc33](https://github.com/nuxt/nuxt/commit/9ea90fc33)) - **kit,nuxt,ui-templates,vite:** Address deprecations + improve regexp perf ([#&#8203;33093](https://github.com/nuxt/nuxt/pull/33093)) ##### 📖 Documentation - Add a section about augmenting types with TS project references ([#&#8203;32843](https://github.com/nuxt/nuxt/pull/32843)) - Switch example to use vitest projects ([#&#8203;32863](https://github.com/nuxt/nuxt/pull/32863)) - Update testing `setupTimeout` and add `teardownTimeout` ([#&#8203;32868](https://github.com/nuxt/nuxt/pull/32868)) - Add middleware to layers guide ([fa516d440](https://github.com/nuxt/nuxt/commit/fa516d440)) - Add documentation for `--nightly` command ([#&#8203;32907](https://github.com/nuxt/nuxt/pull/32907)) - Update package information in roadmap section ([#&#8203;32881](https://github.com/nuxt/nuxt/pull/32881)) - Add more info about nuxt spa loader element attributes ([#&#8203;32871](https://github.com/nuxt/nuxt/pull/32871)) - Correct filename in example ([#&#8203;33000](https://github.com/nuxt/nuxt/pull/33000)) - Add more information about using `useRoute` and accessing route in middleware ([#&#8203;33004](https://github.com/nuxt/nuxt/pull/33004)) - Avoid variable shadowing in locale example ([#&#8203;33031](https://github.com/nuxt/nuxt/pull/33031)) ##### 🏡 Chore - Remove stray test file ([42fd247a4](https://github.com/nuxt/nuxt/commit/42fd247a4)) - Ignore webpagetest.org when scanning links ([cb18f4960](https://github.com/nuxt/nuxt/commit/cb18f4960)) - Add `type: 'module'` in playground ([#&#8203;33099](https://github.com/nuxt/nuxt/pull/33099)) ##### ✅ Tests - Add failing test for link component duplication ([#&#8203;32792](https://github.com/nuxt/nuxt/pull/32792)) - Simplify module hook tests ([#&#8203;32950](https://github.com/nuxt/nuxt/pull/32950)) - Refactor stubbing of `import.meta.dev` ([#&#8203;33023](https://github.com/nuxt/nuxt/pull/33023)) - Use `findWorkspaceDir` rather than relative paths to repo root ([c4c3ada96](https://github.com/nuxt/nuxt/commit/c4c3ada96)) - Improve router test for global transitions ([7e6a6fc35](https://github.com/nuxt/nuxt/commit/7e6a6fc35)) - Use `expect.poll` ([f4354203a](https://github.com/nuxt/nuxt/commit/f4354203a)) - Use `expect.poll` instead of `expectWithPolling` ([15ca5be95](https://github.com/nuxt/nuxt/commit/15ca5be95)) - Use `vi.waitUntil` instead of custom retry logic ([4c8c13090](https://github.com/nuxt/nuxt/commit/4c8c13090)) - Update test for app creation ([9a3b44515](https://github.com/nuxt/nuxt/commit/9a3b44515)) - Update bundle size snapshot ([76988ce97](https://github.com/nuxt/nuxt/commit/76988ce97)) ##### 🤖 CI - Remove double set of tests for docs prs ([14c006ac4](https://github.com/nuxt/nuxt/commit/14c006ac4)) - Add workflow for discord team discussion threads ([f14854fc3](https://github.com/nuxt/nuxt/commit/f14854fc3)) - Fix some syntax issues with discord + github integrations ([c059f7cd1](https://github.com/nuxt/nuxt/commit/c059f7cd1)) - Use token for adding issue to project ([51661bac3](https://github.com/nuxt/nuxt/commit/51661bac3)) - Use discord bot to create thread automatically ([37f9eb27b](https://github.com/nuxt/nuxt/commit/37f9eb27b)) - Only use discord bot ([38ce2dcbb](https://github.com/nuxt/nuxt/commit/38ce2dcbb)) - Update format of discord message ([0047b3059](https://github.com/nuxt/nuxt/commit/0047b3059)) - Try bolding entire line ([6e9f40eb9](https://github.com/nuxt/nuxt/commit/6e9f40eb9)) - Oops ([8b044cad2](https://github.com/nuxt/nuxt/commit/8b044cad2)) - Add delay after adding each reaction ([37b7e2108](https://github.com/nuxt/nuxt/commit/37b7e2108)) - Use last lts node version for testing ([98719c065](https://github.com/nuxt/nuxt/commit/98719c065)) - Try npm trusted publisher ([ea33502c3](https://github.com/nuxt/nuxt/commit/ea33502c3)) - Use npm trusted publisher for main releases ([31a55437f](https://github.com/nuxt/nuxt/commit/31a55437f)) - Change wording ([#&#8203;32979](https://github.com/nuxt/nuxt/pull/32979)) - Add github ai moderator ([#&#8203;33077](https://github.com/nuxt/nuxt/pull/33077)) ##### ❤️ Contributors - Daniel Roe ([@&#8203;danielroe](https://github.com/danielroe)) - abeer0 ([@&#8203;iiio2](https://github.com/iiio2)) - Julien Huang ([@&#8203;huang-julien](https://github.com/huang-julien)) - kyumoon ([@&#8203;kyumoon](https://github.com/kyumoon)) - Alexander Lichter ([@&#8203;TheAlexLichter](https://github.com/TheAlexLichter)) - Bobbie Goede ([@&#8203;BobbieGoede](https://github.com/BobbieGoede)) - mustafa60x ([@&#8203;mustafa60x](https://github.com/mustafa60x)) - Matej Černý ([@&#8203;cernymatej](https://github.com/cernymatej)) - Alex Liu ([@&#8203;Mini-ghost](https://github.com/Mini-ghost)) - Amitav Chris Mostafa ([@&#8203;semibroiled](https://github.com/semibroiled)) - Romain Hamel ([@&#8203;romhml](https://github.com/romhml)) - Jacky Lam ([@&#8203;jackylamhk](https://github.com/jackylamhk)) - Mukund Shah ([@&#8203;mukundshah](https://github.com/mukundshah)) - Luke Nelson ([@&#8203;luc122c](https://github.com/luc122c)) - letianpailove ([@&#8203;letianpailove](https://github.com/letianpailove)) - Erwan Jugand ([@&#8203;erwanjugand](https://github.com/erwanjugand)) - Alexander ([@&#8203;TheColorman](https://github.com/TheColorman)) - Ryota Watanabe ([@&#8203;wattanx](https://github.com/wattanx)) - Yizack Rangel ([@&#8203;Yizack](https://github.com/Yizack)) ### [`v3.18.1`](https://github.com/nuxt/nuxt/releases/tag/v3.18.1) [Compare Source](https://github.com/nuxt/nuxt/compare/v3.18.0...v3.18.1) > 3.18.1 is a regularly scheduled patch release. #### 👉 Changelog [compare changes](https://github.com/nuxt/nuxt/compare/v3.18.0...v3.18.1) ##### 🔥 Performance - **kit:** Get absolute path from `tinyglobby` in `resolveFiles` ([#&#8203;32846](https://github.com/nuxt/nuxt/pull/32846)) ##### 🩹 Fixes - **nuxt:** Do not throw undefined `error` variable ([#&#8203;32807](https://github.com/nuxt/nuxt/pull/32807)) - **vite:** Include tsconfig references during `typeCheck` ([#&#8203;32835](https://github.com/nuxt/nuxt/pull/32835)) - **nuxt:** Add sourcemap path transformation for client builds ([#&#8203;32313](https://github.com/nuxt/nuxt/pull/32313)) - **nuxt:** Add warning for lazy-hydration missing prefix ([#&#8203;32832](https://github.com/nuxt/nuxt/pull/32832)) - **nuxt:** Trigger call once navigation even when no suspense ([#&#8203;32827](https://github.com/nuxt/nuxt/pull/32827)) - **webpack:** Handle `null` result from webpack call ([65aa17158](https://github.com/nuxt/nuxt/commit/65aa17158)) - **kit,nuxt:** Use `reverseResolveAlias` for better errors ([#&#8203;32853](https://github.com/nuxt/nuxt/pull/32853)) ##### 📖 Documentation - Update nightly version references ([#&#8203;32776](https://github.com/nuxt/nuxt/pull/32776)) - Improve explanation of global middleware ([#&#8203;32855](https://github.com/nuxt/nuxt/pull/32855)) ##### 🏡 Chore - Update reproduction help text links ([#&#8203;32803](https://github.com/nuxt/nuxt/pull/32803)) - Update pnpm ignored build scripts ([#&#8203;32849](https://github.com/nuxt/nuxt/pull/32849)) - Improve internal types ([f271c66c4](https://github.com/nuxt/nuxt/commit/f271c66c4)) ##### ✅ Tests - Move tests for `defineNuxtComponent` out of e2e test ([#&#8203;32848](https://github.com/nuxt/nuxt/pull/32848)) ##### 🤖 CI - Move nightly releases into different concurrency group ([26f9baa6a](https://github.com/nuxt/nuxt/commit/26f9baa6a)) ##### ❤️ Contributors - RDistinct ([@&#8203;RDistinct](https://github.com/RDistinct)) - Daniel Roe ([@&#8203;danielroe](https://github.com/danielroe)) - Oskar Lebuda ([@&#8203;OskarLebuda](https://github.com/OskarLebuda)) - Peter Budai ([@&#8203;peterbud](https://github.com/peterbud)) - Matej Černý ([@&#8203;cernymatej](https://github.com/cernymatej)) - Damian Głowala ([@&#8203;DamianGlowala](https://github.com/DamianGlowala)) - Bobbie Goede ([@&#8203;BobbieGoede](https://github.com/BobbieGoede)) - Robin ([@&#8203;OrbisK](https://github.com/OrbisK)) - Bobby ([@&#8203;xanzhu](https://github.com/xanzhu)) ### [`v3.18.0`](https://github.com/nuxt/nuxt/releases/tag/v3.18.0) [Compare Source](https://github.com/nuxt/nuxt/compare/v3.17.7...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** ([#&#8203;31192](https://github.com/nuxt/nuxt/pull/31192))! These provide a more ergonomic way to control component hydration: ```vue <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` ([#&#8203;32621](https://github.com/nuxt/nuxt/pull/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** ([#&#8203;32084](https://github.com/nuxt/nuxt/pull/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>`** ([#&#8203;32707](https://github.com/nuxt/nuxt/pull/32707)) - better IntelliSense and error checking - **Exported `<NuxtTime>` prop types** ([#&#8203;32547](https://github.com/nuxt/nuxt/pull/32547)) - easier to extend and customize ##### New Auto-Import: `onWatcherCleanup` The `onWatcherCleanup` function from `vue` is now available as an auto-import ([#&#8203;32396](https://github.com/nuxt/nuxt/pull/32396)), making it easier to clean up watchers and prevent memory leaks: ```ts 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** ([#&#8203;32617](https://github.com/nuxt/nuxt/pull/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** ([#&#8203;32289](https://github.com/nuxt/nuxt/pull/32289)), making it easier to add individual server utilities: ```ts // 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`** ([#&#8203;32601](https://github.com/nuxt/nuxt/pull/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 ([#&#8203;32417](https://github.com/nuxt/nuxt/pull/32417)) for faster development builds - **Migration to `oxc-walker`** ([#&#8203;32250](https://github.com/nuxt/nuxt/pull/32250)) and **oxc for `onPrehydrate` transforms** ([#&#8203;32045](https://github.com/nuxt/nuxt/pull/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 ([#&#8203;32616](https://github.com/nuxt/nuxt/pull/32616)) - **Better scroll behavior**: `scrollBehaviorType` is now only used for hash scrolling ([#&#8203;32622](https://github.com/nuxt/nuxt/pull/32622)) - **Fixed directory aliases**: Added trailing slashes to some directory aliases for better consistency ([#&#8203;32755](https://github.com/nuxt/nuxt/pull/32755)) ##### ✅ Upgrading As usual, our recommendation for upgrading is to run: ```sh 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 [compare changes](https://github.com/nuxt/nuxt/compare/v3.17.7...v3.18.0) ##### 🚀 Enhancements - **nuxt:** Expose page routes to nitro for o11y ([#&#8203;32617](https://github.com/nuxt/nuxt/pull/32617)) - **nuxt:** Export `<NuxtTime>` prop types ([#&#8203;32547](https://github.com/nuxt/nuxt/pull/32547)) - **nuxt:** Add integration with chrome devtools workspaces ([#&#8203;32084](https://github.com/nuxt/nuxt/pull/32084)) - **kit:** Support single import in `addServerImports` ([#&#8203;32289](https://github.com/nuxt/nuxt/pull/32289)) - **nuxt:** Add `onWatcherCleanup` to imports presets ([#&#8203;32396](https://github.com/nuxt/nuxt/pull/32396)) - **nuxt:** Add route announcer to default app.vue ([#&#8203;32621](https://github.com/nuxt/nuxt/pull/32621)) - **nuxt:** Support lazy hydration macros ([#&#8203;31192](https://github.com/nuxt/nuxt/pull/31192)) ##### 🔥 Performance - **vite:** Communicate with vite-node via internal socket ([#&#8203;32417](https://github.com/nuxt/nuxt/pull/32417)) - **kit:** Update env expansion regex to match nitro ([#&#8203;30766](https://github.com/nuxt/nuxt/pull/30766)) ##### 🩹 Fixes - **nuxt:** Allow modules to add to `typescript.hoist` ([#&#8203;32601](https://github.com/nuxt/nuxt/pull/32601)) - **nuxt:** Retain old data when computed key changes ([#&#8203;32616](https://github.com/nuxt/nuxt/pull/32616)) - **nuxt:** Only use `scrollBehaviorType` for hash scrolling ([#&#8203;32622](https://github.com/nuxt/nuxt/pull/32622)) - **nuxt:** Add missing `async` ([fd312af03](https://github.com/nuxt/nuxt/commit/fd312af03)) - **nuxt:** Fix transform/minify types + bump oxc-transform ([d2ba19963](https://github.com/nuxt/nuxt/commit/d2ba19963)) - **nuxt:** Provide typed slots for `<ClientOnly>` and `<DevOnly>` ([#&#8203;32707](https://github.com/nuxt/nuxt/pull/32707)) - **kit,nuxt,schema:** Add trailing slash to some dir aliases ([#&#8203;32755](https://github.com/nuxt/nuxt/pull/32755)) - **nuxt:** Include source base url for remote islands ([#&#8203;32772](https://github.com/nuxt/nuxt/pull/32772)) - **vite:** Use vite node server to transform requests ([#&#8203;32791](https://github.com/nuxt/nuxt/pull/32791)) - **kit:** Use `mlly` to parse module paths ([#&#8203;32386](https://github.com/nuxt/nuxt/pull/32386)) - **nuxt:** Execute all plugins after error rendering error.vue ([#&#8203;32744](https://github.com/nuxt/nuxt/pull/32744)) ##### 💅 Refactors - **nuxt:** Migrate to `oxc-walker` ([#&#8203;32250](https://github.com/nuxt/nuxt/pull/32250)) - **nuxt,schema:** Use oxc for `onPrehydrate` transform ([#&#8203;32045](https://github.com/nuxt/nuxt/pull/32045)) - **nuxt:** Pass file language directly to parser options ([#&#8203;32665](https://github.com/nuxt/nuxt/pull/32665)) - **nuxt:** Use direct import of `installNuxtModule` ([228e3585e](https://github.com/nuxt/nuxt/commit/228e3585e)) ##### 📖 Documentation - Pass `v3` template to create nuxt examples ([03182202f](https://github.com/nuxt/nuxt/commit/03182202f)) - Add reference to `useNuxtData` in data fetching composable pages ([#&#8203;32589](https://github.com/nuxt/nuxt/pull/32589)) - Document the --modules flag in the init command ([#&#8203;32599](https://github.com/nuxt/nuxt/pull/32599)) - Added new Shared folder to the example of v4 folder structure ([#&#8203;32630](https://github.com/nuxt/nuxt/pull/32630)) - Improve grammar ([#&#8203;32640](https://github.com/nuxt/nuxt/pull/32640)) - Typos ([#&#8203;32567](https://github.com/nuxt/nuxt/pull/32567)) - Fix abbreviation ([#&#8203;32613](https://github.com/nuxt/nuxt/pull/32613)) - Reference `noUncheckedIndexedAccess` rule change in v4 guide ([#&#8203;32643](https://github.com/nuxt/nuxt/pull/32643)) - Fix links to Nitro docs ([#&#8203;32691](https://github.com/nuxt/nuxt/pull/32691)) - Add best practices section ([#&#8203;31609](https://github.com/nuxt/nuxt/pull/31609)) - Correct alias for local fonts in styling guide ([#&#8203;32680](https://github.com/nuxt/nuxt/pull/32680)) - Update nuxt.new links to v4 ([#&#8203;32639](https://github.com/nuxt/nuxt/pull/32639)) - Set correct default value for deep option in usefetch ([#&#8203;32724](https://github.com/nuxt/nuxt/pull/32724)) - Fix link to issue ([ca03f533f](https://github.com/nuxt/nuxt/commit/ca03f533f)) - Add AI-assisted contribution guidelines ([#&#8203;32725](https://github.com/nuxt/nuxt/pull/32725)) - Update Nuxt installation command to use `npm create nuxt@latest` ([#&#8203;32726](https://github.com/nuxt/nuxt/pull/32726)) - Hydration best practice ([#&#8203;32746](https://github.com/nuxt/nuxt/pull/32746)) - Add example for module `.with()` ([#&#8203;32757](https://github.com/nuxt/nuxt/pull/32757)) - Replace dead Vue Router docs links ([#&#8203;32779](https://github.com/nuxt/nuxt/pull/32779)) ##### 🏡 Chore - Handle missing commit details ([0af98763d](https://github.com/nuxt/nuxt/commit/0af98763d)) - Update reproduction links for bug-report template ([#&#8203;32722](https://github.com/nuxt/nuxt/pull/32722)) - Update `unbuild` and use absolute path in dev stubs ([#&#8203;32759](https://github.com/nuxt/nuxt/pull/32759)) ##### ✅ Tests - Also assert status ([4b4b224f7](https://github.com/nuxt/nuxt/commit/4b4b224f7)) - Ignore vue `module.exports` export ([ac8b02d09](https://github.com/nuxt/nuxt/commit/ac8b02d09)) - Extend timeout when waiting for hydration ([49c01ba81](https://github.com/nuxt/nuxt/commit/49c01ba81)) - Benchmark minimal fixture instead ([#&#8203;31174](https://github.com/nuxt/nuxt/pull/31174)) - Add minimal pages fixture ([#&#8203;30457](https://github.com/nuxt/nuxt/pull/30457)) - Bump bundle size ([bafa953c3](https://github.com/nuxt/nuxt/commit/bafa953c3)) ##### 🤖 CI - Trigger website redeploy on main branch ([#&#8203;32695](https://github.com/nuxt/nuxt/pull/32695)) - Release `pkg.pr.new` for `main`/`3.x` branches as well ([ca4f0b1da](https://github.com/nuxt/nuxt/commit/ca4f0b1da)) - Apply `3x` tag to latest v3 release ([5e8dfc150](https://github.com/nuxt/nuxt/commit/5e8dfc150)) ##### ❤️ Contributors - Daniel Roe ([@&#8203;danielroe](https://github.com/danielroe)) - Bobbie Goede ([@&#8203;BobbieGoede](https://github.com/BobbieGoede)) - Damian Głowala ([@&#8203;DamianGlowala](https://github.com/DamianGlowala)) - Dog ([@&#8203;dgxo](https://github.com/dgxo)) - Julien Huang ([@&#8203;huang-julien](https://github.com/huang-julien)) - Yauheni Vasiukevich ([@&#8203;EvgenyWas](https://github.com/EvgenyWas)) - Alex Liu ([@&#8203;Mini-ghost](https://github.com/Mini-ghost)) - Robin ([@&#8203;OrbisK](https://github.com/OrbisK)) - Mateleo ([@&#8203;Mateleo](https://github.com/Mateleo)) - Stephen Jason Wang ([@&#8203;stephenjason89](https://github.com/stephenjason89)) - Maurits Meester ([@&#8203;mmeester](https://github.com/mmeester)) - Igor Kononenko ([@&#8203;igorexa34314](https://github.com/igorexa34314)) - Alex ([@&#8203;hywax](https://github.com/hywax)) - Matej Černý ([@&#8203;cernymatej](https://github.com/cernymatej)) - Alexander Lichter ([@&#8203;TheAlexLichter](https://github.com/TheAlexLichter)) - Hashim Kalam ([@&#8203;hashimkalam](https://github.com/hashimkalam)) - Alois Sečkár ([@&#8203;AloisSeckar](https://github.com/AloisSeckar)) - Haythem Frikha ([@&#8203;Flamenate](https://github.com/Flamenate)) - abeer0 ([@&#8203;iiio2](https://github.com/iiio2)) - Thomas ([@&#8203;ThomasWT](https://github.com/ThomasWT)) - Connor Pearson ([@&#8203;cjpearson](https://github.com/cjpearson)) - dwood-csi ([@&#8203;dwood-csi](https://github.com/dwood-csi)) ### [`v3.17.7`](https://github.com/nuxt/nuxt/releases/tag/v3.17.7) [Compare Source](https://github.com/nuxt/nuxt/compare/v3.17.6...v3.17.7) > 3.17.7 is the last patch release before v3.18. #### ✅ Upgrading Our recommendation for upgrading is to run: ```sh 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 [compare changes](https://github.com/nuxt/nuxt/compare/v3.17.6...v3.17.7) ##### 🩹 Fixes - **nuxt:** Safe-guard `extraPageMetaExtractionKeys` ([#&#8203;32510](https://github.com/nuxt/nuxt/pull/32510)) - **nuxt:** Expose `loadBuilder` error cause ([8f13ce3c2](https://github.com/nuxt/nuxt/commit/8f13ce3c2)) - **vite:** Handle resolving string vite input ([#&#8203;32527](https://github.com/nuxt/nuxt/pull/32527)) - **nuxt:** Wrap only server components with island generic ([#&#8203;32540](https://github.com/nuxt/nuxt/pull/32540)) - **vite:** Ignore when client entry cannot be resolved ([19a292f34](https://github.com/nuxt/nuxt/commit/19a292f34)) - **nuxt:** Normalize segment catchall pattern before checking for parent ([#&#8203;32413](https://github.com/nuxt/nuxt/pull/32413)) - **nuxt:** Update warning message to warn against `null` values ([c1b83eab5](https://github.com/nuxt/nuxt/commit/c1b83eab5)) - **nuxt:** Ensure `semver.satisfies` returns true for pre-release versions ([#&#8203;32574](https://github.com/nuxt/nuxt/pull/32574)) - **nuxt:** Scroll to anchor if present when changing page without saved position ([#&#8203;32376](https://github.com/nuxt/nuxt/pull/32376)) - **nuxt:** Handle `execute being passed to `watch\` ([#&#8203;32591](https://github.com/nuxt/nuxt/pull/32591)) ##### 📖 Documentation - Update fetch types ([#&#8203;32522](https://github.com/nuxt/nuxt/pull/32522)) - Clarify that runtime env variables must start with `NUXT_` ([#&#8203;32223](https://github.com/nuxt/nuxt/pull/32223)) - Fix key change behavior in `useAsyncData` and `useFetch` migration ([#&#8203;32560](https://github.com/nuxt/nuxt/pull/32560)) - Change return type of async data from `undefined` to `null` in v3 docs ([#&#8203;32562](https://github.com/nuxt/nuxt/pull/32562)) - Add section on custom hooks for Nuxt modules ([#&#8203;32586](https://github.com/nuxt/nuxt/pull/32586)) - Provide `async` keyword ([#&#8203;32587](https://github.com/nuxt/nuxt/pull/32587)) - Move augmenting hook types in hooks page ([#&#8203;32595](https://github.com/nuxt/nuxt/pull/32595)) - Add section about module loading order ([#&#8203;32597](https://github.com/nuxt/nuxt/pull/32597)) ##### ✅ Tests - Reenable skipped unit tests ([8fc9b9ee9](https://github.com/nuxt/nuxt/commit/8fc9b9ee9)) - Update test snapshot for `generateTypes` ([c0855439d](https://github.com/nuxt/nuxt/commit/c0855439d)) - Improve page scanning test stability ([84b96f3de](https://github.com/nuxt/nuxt/commit/84b96f3de)) - Pass timeZone in to `<NuxtTime>` test ([#&#8203;32558](https://github.com/nuxt/nuxt/pull/32558)) - Add more useAsyncData + useFetch tests ([#&#8203;32585](https://github.com/nuxt/nuxt/pull/32585)) - Avoid hard-coding async-data keys ([bfca95118](https://github.com/nuxt/nuxt/commit/bfca95118)) ##### ❤️ Contributors - Daniel Roe ([@&#8203;danielroe](https://github.com/danielroe)) - Julien Huang ([@&#8203;huang-julien](https://github.com/huang-julien)) - abeer0 ([@&#8203;iiio2](https://github.com/iiio2)) - Bobbie Goede ([@&#8203;BobbieGoede](https://github.com/BobbieGoede)) - Damian Głowala ([@&#8203;DamianGlowala](https://github.com/DamianGlowala)) - Nestor Vera ([@&#8203;hacknug](https://github.com/hacknug)) - Ezra Ashenafi ([@&#8203;Eazash](https://github.com/Eazash)) - Mike Laumann Bellika ([@&#8203;MikeBellika](https://github.com/MikeBellika)) - Maxime Pauvert ([@&#8203;maximepvrt](https://github.com/maximepvrt)) - Chriest Yu ([@&#8203;jcppman](https://github.com/jcppman)) - Andrei Hudalla ([@&#8203;paranoidPhantom](https://github.com/paranoidPhantom)) - Sigrid Huemer ([@&#8203;s1gr1d](https://github.com/s1gr1d)) - xjccc ([@&#8203;xjccc](https://github.com/xjccc)) ### [`v3.17.6`](https://github.com/nuxt/nuxt/releases/tag/v3.17.6) [Compare Source](https://github.com/nuxt/nuxt/compare/v3.17.5...v3.17.6) > 3.17.6 is a regularly scheduled patch release. #### ✅ Upgrading Our recommendation for upgrading is to run: ```sh 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 [compare changes](https://github.com/nuxt/nuxt/compare/v3.17.5...v3.17.6) ##### 🔥 Performance - **nuxt:** Decrease if checks when prerendering ([#&#8203;32455](https://github.com/nuxt/nuxt/pull/32455)) ##### 🩹 Fixes - **nuxt:** Generate correct types for async data defaults based on `nuxt.config` ([#&#8203;32324](https://github.com/nuxt/nuxt/pull/32324)) - **nuxt:** Reload at base URL in `nuxt:chunk-reload-immediate` ([#&#8203;32382](https://github.com/nuxt/nuxt/pull/32382)) - **nuxt:** Use rollup to calculate island component filenames ([#&#8203;32421](https://github.com/nuxt/nuxt/pull/32421)) - **nuxt:** Append `set-cookie` headers in error handler ([#&#8203;32483](https://github.com/nuxt/nuxt/pull/32483)) - **nuxt:** Ensure `asyncData` runs if changing key while fetcher is running ([#&#8203;32466](https://github.com/nuxt/nuxt/pull/32466)) - **nuxt:** Handle pure hash link clicks with `navigateTo` ([#&#8203;32393](https://github.com/nuxt/nuxt/pull/32393)) - **nuxt:** Skip external `<NuxtLink>`'s custom on click handler ([#&#8203;32499](https://github.com/nuxt/nuxt/pull/32499)) - **nuxt:** Update component loader regexp for minified code ([#&#8203;32298](https://github.com/nuxt/nuxt/pull/32298)) - **nuxt:** Allow camelCase for lazy hydration attributes ([#&#8203;32297](https://github.com/nuxt/nuxt/pull/32297)) - **nuxt:** Respect `inheritAttrs: false` in `createClientOnly` fn ([#&#8203;32323](https://github.com/nuxt/nuxt/pull/32323)) - **kit:** Do not double-urlify file urls when resolving schema ([#&#8203;32354](https://github.com/nuxt/nuxt/pull/32354)) - **nuxt:** Align scroll behavior with page transition completion ([#&#8203;32239](https://github.com/nuxt/nuxt/pull/32239)) - **nuxt:** Set `output.generatedCode.symbols` for nitro build ([#&#8203;32358](https://github.com/nuxt/nuxt/pull/32358)) - **nuxt:** Lazily access runtimeConfig ([#&#8203;32428](https://github.com/nuxt/nuxt/pull/32428)) ##### 💅 Refactors - **vite:** Migrate plugins internally to vite environments ([#&#8203;32461](https://github.com/nuxt/nuxt/pull/32461)) ##### 📖 Documentation - Clarify where logging tag is displayed ([#&#8203;32440](https://github.com/nuxt/nuxt/pull/32440)) - Remove kit playground auto-import note ([#&#8203;32415](https://github.com/nuxt/nuxt/pull/32415)) - Remove webstorm warning ([#&#8203;32513](https://github.com/nuxt/nuxt/pull/32513)) - Migrate to `h3js` ([#&#8203;32243](https://github.com/nuxt/nuxt/pull/32243)) - Update the fetch `clear` function description ([#&#8203;32287](https://github.com/nuxt/nuxt/pull/32287)) - `defineNuxtPlugin` function documentation ([#&#8203;32328](https://github.com/nuxt/nuxt/pull/32328)) - Mention that `<NuxtLink>` encodes query params ([#&#8203;32361](https://github.com/nuxt/nuxt/pull/32361)) - Enhance documentation for Nuxt composables ([#&#8203;32218](https://github.com/nuxt/nuxt/pull/32218)) - Adjust wording to reduce confusion in lifecycle section ([#&#8203;32503](https://github.com/nuxt/nuxt/pull/32503)) - Improve useCookie example ([367b85405](https://github.com/nuxt/nuxt/commit/367b85405)) - Capitalise title ([#&#8203;32426](https://github.com/nuxt/nuxt/pull/32426)) - Mention `bun.lock` for lockfile ([#&#8203;32427](https://github.com/nuxt/nuxt/pull/32427)) ##### 🏡 Chore - Update stackblitz reproduction link ([6ab5bac66](https://github.com/nuxt/nuxt/commit/6ab5bac66)) - Update copilot instructions ([220439055](https://github.com/nuxt/nuxt/commit/220439055)) - Rename deprecated vitest `workspace` to `projects` ([#&#8203;32388](https://github.com/nuxt/nuxt/pull/32388)) - Remove space in URL in comment ([#&#8203;32394](https://github.com/nuxt/nuxt/pull/32394)) - Allow setting TAG on commandline ([d387e07a3](https://github.com/nuxt/nuxt/commit/d387e07a3)) ##### ✅ Tests - **nuxt:** Add case for key only changes with `immediate: false` ([#&#8203;32473](https://github.com/nuxt/nuxt/pull/32473)) - Separate nuxt legacy runtime tests ([#&#8203;32481](https://github.com/nuxt/nuxt/pull/32481)) ##### 🤖 CI - Set correct base branch label ([#&#8203;32325](https://github.com/nuxt/nuxt/pull/32325)) ##### ❤️ Contributors - Mihailo Bursac ([@&#8203;djixadin](https://github.com/djixadin)) - Daniel Roe ([@&#8203;danielroe](https://github.com/danielroe)) - abeer0 ([@&#8203;iiio2](https://github.com/iiio2)) - 翠 ([@&#8203;sapphi-red](https://github.com/sapphi-red)) - Robin ([@&#8203;OrbisK](https://github.com/OrbisK)) - Alex Liu ([@&#8203;Mini-ghost](https://github.com/Mini-ghost)) - Damian Głowala ([@&#8203;DamianGlowala](https://github.com/DamianGlowala)) - Julien Huang ([@&#8203;huang-julien](https://github.com/huang-julien)) - Ibrahimm ([@&#8203;Ibra-cesar](https://github.com/Ibra-cesar)) - Peter Budai ([@&#8203;peterbud](https://github.com/peterbud)) - Ali Soueidan ([@&#8203;lazercaveman](https://github.com/lazercaveman)) - Vachmara ([@&#8203;vachmara](https://github.com/vachmara)) - xjccc ([@&#8203;xjccc](https://github.com/xjccc)) - Paul Melero ([@&#8203;paulmelero](https://github.com/paulmelero)) - David Stack ([@&#8203;davidstackio](https://github.com/davidstackio)) ### [`v3.17.5`](https://github.com/nuxt/nuxt/releases/tag/v3.17.5) [Compare Source](https://github.com/nuxt/nuxt/compare/v3.17.4...v3.17.5) > 3.17.5 is a regularly scheduled patch release. #### ✅ Upgrading Our recommendation for upgrading is to run: ```sh 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 [compare changes](https://github.com/nuxt/nuxt/compare/v3.17.4...v3.17.5) ##### 🔥 Performance - **nuxt:** Replace remaining instance of `globby` ([#&#8203;31688](https://github.com/nuxt/nuxt/pull/31688)) ##### 🩹 Fixes - **nuxt:** Export `useScriptRybbitAnalytics` from script stubs ([d275ae1a0](https://github.com/nuxt/nuxt/commit/d275ae1a0)) - **nuxt:** Remove unneeded pattern from regexp ([2954c092c](https://github.com/nuxt/nuxt/commit/2954c092c)) - **nuxt:** Ensure `appConfig` sources are not duplicated ([#&#8203;32216](https://github.com/nuxt/nuxt/pull/32216)) - **nuxt:** Wrap slot with `h()` in ClientOnly ([#&#8203;30664](https://github.com/nuxt/nuxt/pull/30664)) - **kit:** Ensure template filename uses safe patterns ([4372b24dd](https://github.com/nuxt/nuxt/commit/4372b24dd)) - **nuxt:** Access `asyncData` state from nuxt app instance ([#&#8203;32232](https://github.com/nuxt/nuxt/pull/32232)) - **nuxt:** Make patterns relative to `srcDir` in `buildCache` ([#&#8203;32260](https://github.com/nuxt/nuxt/pull/32260)) - **nuxt:** Return non-existent route component in RouteProvider ([#&#8203;32266](https://github.com/nuxt/nuxt/pull/32266)) - **nuxt:** Use single `asyncData` watcher ([#&#8203;32247](https://github.com/nuxt/nuxt/pull/32247)) - **vite:** Use arrow functions in dynamic imports ([#&#8203;32285](https://github.com/nuxt/nuxt/pull/32285)) - **webpack:** Use plugin for rollup-compatible dynamic imports ([#&#8203;32281](https://github.com/nuxt/nuxt/pull/32281)) ##### 📖 Documentation - Update `addRouteMiddleware` path in example ([#&#8203;32171](https://github.com/nuxt/nuxt/pull/32171)) - Narrow link to just middleware ([#&#8203;32203](https://github.com/nuxt/nuxt/pull/32203)) - Use optional chaining in error example ([#&#8203;32214](https://github.com/nuxt/nuxt/pull/32214)) - Give example of using `--env-file` ([29f6392cd](https://github.com/nuxt/nuxt/commit/29f6392cd)) - Recommend `nuxt` command consistently ([#&#8203;32237](https://github.com/nuxt/nuxt/pull/32237)) - Fix typos ([#&#8203;30413](https://github.com/nuxt/nuxt/pull/30413)) - Add props to special metadata ([#&#8203;29708](https://github.com/nuxt/nuxt/pull/29708)) - Fix wrong `alert` with `warning` in `/guide/pages` ([#&#8203;32270](https://github.com/nuxt/nuxt/pull/32270)) - Update upgrade guide + roadmap ([0040ee5e7](https://github.com/nuxt/nuxt/commit/0040ee5e7)) ##### 📦 Build - **nuxt:** Ensure cache is typed ([33df20d17](https://github.com/nuxt/nuxt/commit/33df20d17)) ##### 🏡 Chore - Upgrade webpack dependencies separately ([444d60936](https://github.com/nuxt/nuxt/commit/444d60936)) - Apply lint fixes ([221ce99eb](https://github.com/nuxt/nuxt/commit/221ce99eb)) - Add missing dependency ([720170dea](https://github.com/nuxt/nuxt/commit/720170dea)) ##### ✅ Tests - Add regression test for useAsyncData + transition ([29f7c8cb4](https://github.com/nuxt/nuxt/commit/29f7c8cb4)) - Ensure builder tests run sequentially ([defa32829](https://github.com/nuxt/nuxt/commit/defa32829)) ##### ❤️ Contributors - Daniel Roe ([@&#8203;danielroe](https://github.com/danielroe)) - Julien Huang ([@&#8203;huang-julien](https://github.com/huang-julien)) - Hugo Richard ([@&#8203;HugoRCD](https://github.com/HugoRCD)) - mxmxmmgg ([@&#8203;mxmxmmgg](https://github.com/mxmxmmgg)) - xjccc ([@&#8203;xjccc](https://github.com/xjccc)) - Horu ([@&#8203;HigherOrderLogic](https://github.com/HigherOrderLogic)) - Baptiste Leproux ([@&#8203;larbish](https://github.com/larbish)) - Phojie Rengel ([@&#8203;phojie](https://github.com/phojie)) - duolaameng ([@&#8203;1411430556](https://github.com/1411430556)) - David Stack ([@&#8203;davidstackio](https://github.com/davidstackio)) ### [`v3.17.4`](https://github.com/nuxt/nuxt/releases/tag/v3.17.4) [Compare Source](https://github.com/nuxt/nuxt/compare/v3.17.3...v3.17.4) > 3.17.4 is a regularly-scheduled patch release. #### ✅ Upgrading Our recommendation for upgrading is to run: ```sh npx nuxi@latest 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 [compare changes](https://github.com/nuxt/nuxt/compare/v3.17.3...v3.17.4) ##### 🔥 Performance - **nuxt:** Use Set for circular dep plugin ([#&#8203;32110](https://github.com/nuxt/nuxt/pull/32110)) - Refactor Array.includes checks to use Sets ([#&#8203;32133](https://github.com/nuxt/nuxt/pull/32133)) - **nuxt:** Use `shallowRef` for primitive values ([#&#8203;32152](https://github.com/nuxt/nuxt/pull/32152)) - **nuxt:** Skip route rules processing for empty child array ([#&#8203;32166](https://github.com/nuxt/nuxt/pull/32166)) - **nuxt:** Use `Intl.Collator` instead of `localeCompare` ([#&#8203;32167](https://github.com/nuxt/nuxt/pull/32167)) ##### 🩹 Fixes - **nuxt:** Do not await lazy asyncData inside `<ClientOnly>` ([#&#8203;32101](https://github.com/nuxt/nuxt/pull/32101)) - **nuxt:** Respect cachedData with multiple asyncData calls ([#&#8203;32099](https://github.com/nuxt/nuxt/pull/32099)) - **nuxt:** Clear async data after a tick ([#&#8203;32096](https://github.com/nuxt/nuxt/pull/32096)) - **nuxt:** Support reactive keys in `useLazyAsyncData` ([#&#8203;32092](https://github.com/nuxt/nuxt/pull/32092)) - **rspack:** Use `ts-checker-rspack-plugin` ([#&#8203;32115](https://github.com/nuxt/nuxt/pull/32115)) - **nuxt:** Clear previous head in island-renderer ([#&#8203;32100](https://github.com/nuxt/nuxt/pull/32100)) - **nuxt:** Handle virtual files prefixed with `/` ([#&#8203;32129](https://github.com/nuxt/nuxt/pull/32129)) - **schema:** Remove nitro options from `DeepPartial` ([#&#8203;31990](https://github.com/nuxt/nuxt/pull/31990)) - **nuxt:** Ensure legacy async data remains reactive ([#&#8203;32134](https://github.com/nuxt/nuxt/pull/32134)) - **nuxt:** Pass attrs down to single child of `<ClientOnly>` ([#&#8203;32131](https://github.com/nuxt/nuxt/pull/32131)) - **nuxt:** Fix merge conflicts ([7044450d4](https://github.com/nuxt/nuxt/commit/7044450d4)) - **nuxt:** Clone vnode when passing attrs down to client-only ([b3acf0c78](https://github.com/nuxt/nuxt/commit/b3acf0c78)) - **vite:** Do not replace `global` with `globalThis` ([#&#8203;32130](https://github.com/nuxt/nuxt/pull/32130)) - **nuxt:** Suppress client-side errors by crawlers ([#&#8203;32137](https://github.com/nuxt/nuxt/pull/32137)) - **nuxt:** Use fresh route when `<NuxtLayout>` first renders ([#&#8203;24673](https://github.com/nuxt/nuxt/pull/24673)) - **nuxt:** Add additional logging when skipping error page for bot ([68c270083](https://github.com/nuxt/nuxt/commit/68c270083)) - **nuxt:** Add watch paths outside `srcDir` to parcel strategy ([#&#8203;32139](https://github.com/nuxt/nuxt/pull/32139)) ##### 📖 Documentation - Use emphasis instead of quotes ([#&#8203;32078](https://github.com/nuxt/nuxt/pull/32078)) - Update `useNuxtData` default return to `undefined` ([#&#8203;32054](https://github.com/nuxt/nuxt/pull/32054)) - Capitalise headings ([#&#8203;32095](https://github.com/nuxt/nuxt/pull/32095)) - Prefix `imports.dirs` with alias ([0dbf314d9](https://github.com/nuxt/nuxt/commit/0dbf314d9)) - Mention node v20 is minimum requirement for nuxt setup ([#&#8203;32148](https://github.com/nuxt/nuxt/pull/32148)) - Use more descriptive link text ([d0b1b9d35](https://github.com/nuxt/nuxt/commit/d0b1b9d35)) ##### 🏡 Chore - Remove unneeded JSdoc comments ([#&#8203;32090](https://github.com/nuxt/nuxt/pull/32090)) - Use vitest workspaces for tests ([#&#8203;32121](https://github.com/nuxt/nuxt/pull/32121)) ##### ✅ Tests - Add universal routing tests + clean up output ([64178b6f4](https://github.com/nuxt/nuxt/commit/64178b6f4)) - **nuxt:** Add unit tests for watch strategies ([#&#8203;32138](https://github.com/nuxt/nuxt/pull/32138)) - Resolve watch path ([8fb562c04](https://github.com/nuxt/nuxt/commit/8fb562c04)) - Use fake timers instead of `setTimeout` mock ([#&#8203;32142](https://github.com/nuxt/nuxt/pull/32142)) ##### 🤖 CI - Rename workflow ([835098fcb](https://github.com/nuxt/nuxt/commit/835098fcb)) - Skip codeql event on merge\_group events ([46c259664](https://github.com/nuxt/nuxt/commit/46c259664)) ##### ❤️ Contributors - John Tanzer ([@&#8203;moshetanzer](https://github.com/moshetanzer)) - Daniel Roe ([@&#8203;danielroe](https://github.com/danielroe)) - Robin ([@&#8203;OrbisK](https://github.com/OrbisK)) - [@&#8203;beer](https://github.com/beer) ([@&#8203;iiio2](https://github.com/iiio2)) - Julien Huang ([@&#8203;huang-julien](https://github.com/huang-julien)) - हिमांशु ([@&#8203;CodeMan62](https://github.com/CodeMan62)) - Norbiros ([@&#8203;Norbiros](https://github.com/Norbiros)) - watsonhaw5566 ([@&#8203;watsonhaw5566](https://github.com/watsonhaw5566)) - xjccc ([@&#8203;xjccc](https://github.com/xjccc)) ### [`v3.17.3`](https://github.com/nuxt/nuxt/releases/tag/v3.17.3) [Compare Source](https://github.com/nuxt/nuxt/compare/v3.17.2...v3.17.3) > 3.17.3 is a regularly-scheduled patch release. #### ✅ Upgrading Our recommendation for upgrading is to run: ```sh npx nuxi@latest 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 [compare changes](https://github.com/nuxt/nuxt/compare/v3.17.2...v3.17.3) ##### 🔥 Performance - **nuxt:** Pre-calculate extension glob before app resolution ([#&#8203;32052](https://github.com/nuxt/nuxt/pull/32052)) - **nuxt:** Improve islands client components chunks ([#&#8203;32015](https://github.com/nuxt/nuxt/pull/32015)) ##### 🩹 Fixes - **nuxt:** Preload async layouts ([#&#8203;32002](https://github.com/nuxt/nuxt/pull/32002)) - **nuxt:** Handle File within `FormData` ([#&#8203;32013](https://github.com/nuxt/nuxt/pull/32013)) - **schema:** Respect user-provided `ignore` patterns ([#&#8203;32020](https://github.com/nuxt/nuxt/pull/32020)) - **nuxt:** Allow loading virtual files with query params ([#&#8203;32022](https://github.com/nuxt/nuxt/pull/32022)) - **nuxt:** Don't use reactive key for `useFetch` with `watch: false` ([#&#8203;32019](https://github.com/nuxt/nuxt/pull/32019)) - **nuxt:** Do not clear data if custom `getCachedData` is provided ([#&#8203;32003](https://github.com/nuxt/nuxt/pull/32003)) - **nuxt:** Provide `nuxtApp` for asyncData functions run on server ([#&#8203;32038](https://github.com/nuxt/nuxt/pull/32038)) - **vite:** Strip queries when skipping vite transform middleware ([#&#8203;32041](https://github.com/nuxt/nuxt/pull/32041)) - **nuxt:** Sort hash sources and files ([#&#8203;32048](https://github.com/nuxt/nuxt/pull/32048)) - **nuxt:** Do not suppress chunk import error ([#&#8203;32064](https://github.com/nuxt/nuxt/pull/32064)) ##### 💅 Refactors - **nuxt:** Directly access initialised `asyncData` ([e779d6cd5](https://github.com/nuxt/nuxt/commit/e779d6cd5)) ##### 📖 Documentation - Fix module initialization command for pnpm ([#&#8203;32024](https://github.com/nuxt/nuxt/pull/32024)) - Provide nuxt installation guide with deno ([#&#8203;32029](https://github.com/nuxt/nuxt/pull/32029)) - Add codeblock closing tag ([#&#8203;32043](https://github.com/nuxt/nuxt/pull/32043)) - Tweak nuxt doc ([#&#8203;32063](https://github.com/nuxt/nuxt/pull/32063)) - Add space between sentences ([#&#8203;32069](https://github.com/nuxt/nuxt/pull/32069)) ##### 🤖 CI - Convert `bug`/`enhancement` labels to issue types ([3ff743fe0](https://github.com/nuxt/nuxt/commit/3ff743fe0)) - Update payload for issue types ([791e5f443](https://github.com/nuxt/nuxt/commit/791e5f443)) ##### ❤️ Contributors - Ryota Watanabe ([@&#8203;wattanx](https://github.com/wattanx)) - Julien Huang ([@&#8203;huang-julien](https://github.com/huang-julien)) - John Tanzer ([@&#8203;moshetanzer](https://github.com/moshetanzer)) - [@&#8203;beer](https://github.com/beer) ([@&#8203;iiio2](https://github.com/iiio2)) - Daniel Roe ([@&#8203;danielroe](https://github.com/danielroe)) - xjccc ([@&#8203;xjccc](https://github.com/xjccc)) - Max ([@&#8203;onmax](https://github.com/onmax)) ### [`v3.17.2`](https://github.com/nuxt/nuxt/releases/tag/v3.17.2) [Compare Source](https://github.com/nuxt/nuxt/compare/v3.17.1...v3.17.2) > 3.17.2 is a regularly-scheduled patch release. #### ✅ Upgrading Our recommendation for upgrading is to run: ```sh npx nuxi@latest 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 [compare changes](https://github.com/nuxt/nuxt/compare/v3.17.1...v3.17.2) ##### 🔥 Performance - **nuxt:** Tree-shake router's `handleHotUpdate` in production ([#&#8203;31971](https://github.com/nuxt/nuxt/pull/31971)) ##### 🩹 Fixes - **nuxt:** Ensure asyncData is initialised before effects run ([#&#8203;31946](https://github.com/nuxt/nuxt/pull/31946)) - **nuxt:** Skip view transition if user agent provides one before defining `transition` ([#&#8203;31945](https://github.com/nuxt/nuxt/pull/31945)) - **nuxt:** Improve hashing for complex body in `useFetch` ([#&#8203;31963](https://github.com/nuxt/nuxt/pull/31963)) - **nuxt:** Immediately call asyncData within client-only components ([#&#8203;31964](https://github.com/nuxt/nuxt/pull/31964)) - **nuxt:** Don't render errors if event is already handled ([#&#8203;31966](https://github.com/nuxt/nuxt/pull/31966)) - **nuxt:** Track whether need to reinit asyncData separately from deps ([#&#8203;31965](https://github.com/nuxt/nuxt/pull/31965)) - **nuxt:** Preserve params/meta/matched with universal router ([#&#8203;31950](https://github.com/nuxt/nuxt/pull/31950)) - **nuxt:** Respect scroll behavior set by `scrollToTop` ([#&#8203;31914](https://github.com/nuxt/nuxt/pull/31914)) - **nuxt:** Load live data from `vfs` even if a file exists in `buildDir` ([#&#8203;31969](https://github.com/nuxt/nuxt/pull/31969)) - **nuxt:** Short circuit middleware when validate returns false ([#&#8203;31967](https://github.com/nuxt/nuxt/pull/31967)) - **nuxt:** Ensure `useAsyncData` reactive to `key` changes when `immediate: false` ([#&#8203;31987](https://github.com/nuxt/nuxt/pull/31987)) - **nuxt:** Resolve real paths imported into virtual files ([0bb07f129](https://github.com/nuxt/nuxt/commit/0bb07f129)) - **webpack:** Broaden `WarningFilter` type ([2a79dbd68](https://github.com/nuxt/nuxt/commit/2a79dbd68)) - **schema:** Broaden `warningIgnoreFilters` ([a62e808ac](https://github.com/nuxt/nuxt/commit/a62e808ac)) ##### 📖 Documentation - Add missing article ([#&#8203;31952](https://github.com/nuxt/nuxt/pull/31952)) - Improve `@nuxt/kit` documentation ([#&#8203;31793](https://github.com/nuxt/nuxt/pull/31793)) - Fix type issues in twoslash blocks ([85ab105b8](https://github.com/nuxt/nuxt/commit/85ab105b8)) - Add events page ([#&#8203;31977](https://github.com/nuxt/nuxt/pull/31977)) ##### 🏡 Chore - Update approved builds ([02b33cc58](https://github.com/nuxt/nuxt/commit/02b33cc58)) - Sort package keys ([06aabc548](https://github.com/nuxt/nuxt/commit/06aabc548)) ##### ✅ Tests - Update bundle size snapshot ([e03d44b47](https://github.com/nuxt/nuxt/commit/e03d44b47)) - Update bundle size ([7f75f5ea5](https://github.com/nuxt/nuxt/commit/7f75f5ea5)) - Update bundle size again ([e8a244bfc](https://github.com/nuxt/nuxt/commit/e8a244bfc)) - Use `asyncDataDefaults.value` ([91568c5da](https://github.com/nuxt/nuxt/commit/91568c5da)) ##### 🤖 CI - Run docs workflow against pull requests ([08f968903](https://github.com/nuxt/nuxt/commit/08f968903)) - Run tests against node v20 ([3c97d3493](https://github.com/nuxt/nuxt/commit/3c97d3493)) ##### ❤️ Contributors - Daniel Roe ([@&#8203;danielroe](https://github.com/danielroe)) - Alex Liu ([@&#8203;Mini-ghost](https://github.com/Mini-ghost)) - Martins Zeltins ([@&#8203;martinszeltins](https://github.com/martinszeltins)) - Ivan Martianov ([@&#8203;ivansky](https://github.com/ivansky)) - Lorenzo Fiamingo ([@&#8203;lorenzofiamingo](https://github.com/lorenzofiamingo)) - James ([@&#8203;Koshux](https://github.com/Koshux)) ### [`v3.17.1`](https://github.com/nuxt/nuxt/releases/tag/v3.17.1) [Compare Source](https://github.com/nuxt/nuxt/compare/v3.17.0...v3.17.1) > 3.17.1 is the next patch release. #### ✅ Upgrading Our recommendation for upgrading is to run: ```sh npx nuxi@latest 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 [compare changes](https://github.com/nuxt/nuxt/compare/v3.17.0...v3.17.1) ##### 🩹 Fixes - **nuxt:** Check if match exists with new unplugin filter ([#&#8203;31929](https://github.com/nuxt/nuxt/pull/31929)) - **nuxt:** Reinitialise stale async data ([#&#8203;31940](https://github.com/nuxt/nuxt/pull/31940)) - **nuxt:** Skip view transition if user agent is providing one ([#&#8203;31938](https://github.com/nuxt/nuxt/pull/31938)) - **nuxt:** Trigger `execute` when non-immediate fetch key changes ([#&#8203;31941](https://github.com/nuxt/nuxt/pull/31941)) - **nuxt:** Don't redirect when route has trailing slash ([#&#8203;31902](https://github.com/nuxt/nuxt/pull/31902)) - **ui-templates:** Use `escapeHTML` from vue ([8e4b8d62f](https://github.com/nuxt/nuxt/commit/8e4b8d62f)) - **schema:** Add `@vue/shared` dependency ([7d445c963](https://github.com/nuxt/nuxt/commit/7d445c963)) ##### 📦 Build - Copy README/LICENSE from repo root ([8e287d556](https://github.com/nuxt/nuxt/commit/8e287d556)) ##### 🏡 Chore - Update docs version ([db5ad4a8f](https://github.com/nuxt/nuxt/commit/db5ad4a8f)) - Add docs directory to publish scripts ([d3bcad632](https://github.com/nuxt/nuxt/commit/d3bcad632)) ##### ✅ Tests - Update snapshots ([a197d1087](https://github.com/nuxt/nuxt/commit/a197d1087)) ##### ❤️ Contributors - Daniel Roe ([@&#8203;danielroe](https://github.com/danielroe)) - Pooya Parsa ([@&#8203;pi0](https://github.com/pi0)) - Kyohei Sonokawa ([@&#8203;kyohei-23](https://github.com/kyohei-23)) - Lorenzo Fiamingo ([@&#8203;lorenzofiamingo](https://github.com/lorenzofiamingo)) ### [`v3.17.0`](https://github.com/nuxt/nuxt/releases/tag/v3.17.0) [Compare Source](https://github.com/nuxt/nuxt/compare/v3.16.2...v3.17.0) #### 👀 Highlights This release brings a major reworking of the async data layer, a new built-in component, better warnings, and performance improvements! ##### 📊 Data Fetching Improvements A major reorganization of Nuxt's data fetching layer brings significant improvements to `useAsyncData` and `useFetch`. Although we have aimed to maintain backward compatibility and put breaking changes behind the `experimental.granularCachedData` flag (disabled by default), we recommend testing your application thoroughly after upgrading. You can also disable `experimental.purgeCachedData` to revert to the previous behavior if you are relying on cached data being available indefinitely after components using `useAsyncData` are unmounted. 👉 Read the the original PR for full details ([#&#8203;31373](https://github.com/nuxt/nuxt/pull/31373)), but here are a few highlights. ##### Consistent Data Across Components All calls to `useAsyncData` or `useFetch` with the same key now share the underlying refs, ensuring consistency across your application: ```vue <!-- ComponentA.vue --> <script setup> const { data: users, pending } = useAsyncData('users', fetchUsers) </script> <!-- ComponentB.vue --> <script setup> // This will reference the same data state as ComponentA const { data: users, status } = useAsyncData('users', fetchUsers) // When either component refreshes the data, both will update consistently </script> ``` This solves various issues where components could have inconsistent data states. ##### Reactive Keys You can now use computed refs, plain refs, or getter functions as keys: ```ts const userId = ref('123') const { data: user } = useAsyncData( computed(() => `user-${userId.value}`), () => fetchUser(userId.value) ) // Changing the userId will automatically trigger a new data fetch // and clean up the old data if no other components are using it userId.value = '456' ``` ##### Optimized Data Refetching Multiple components watching the same data source will now trigger only a single data fetch when dependencies change: ```ts // In multiple components: const { data } = useAsyncData( 'users', () => $fetch(`/api/users?page=${route.query.page}`), { watch: [() => route.query.page] } ) // When route.query.page changes, only one fetch operation will occur // All components using this key will update simultaneously ``` ##### 🎭 Built-In Nuxt Components ##### `<NuxtTime>` - A new component for safe time display We've added a new `<NuxtTime>` component for SSR-safe time display, which resolves hydration mismatches when working with dates ([#&#8203;31876](https://github.com/nuxt/nuxt/pull/31876)): ```vue <template> <NuxtTime :datetime="Date.now()" /> </template> ``` The component accepts multiple time formats and gracefully handles both client and server rendering. ##### Enhanced `<NuxtErrorBoundary>` The `<NuxtErrorBoundary>` component has been converted to a Single File Component and now exposes `error` and `clearError` from the component - as well as in the error slot types, giving you greater ability to handle errors in your templates and via `useTemplateRef` ([#&#8203;31847](https://github.com/nuxt/nuxt/pull/31847)): ```vue <NuxtErrorBoundary @&#8203;error="handleError"> <template #error="{ error, clearError }"> <div> <p>{{ error.message }}</p> <button @&#8203;click="clearError">Try again</button> </div> </template> <!-- Content that might error --> <MyComponent /> </NuxtErrorBoundary> ``` ##### 🔗 Router Improvements `<NuxtLink>` now accepts a `trailingSlash` prop, giving you more control over URL formatting ([#&#8203;31820](https://github.com/nuxt/nuxt/pull/31820)): ```vue <NuxtLink to="/about" trailing-slash>About</NuxtLink> <!-- Will render <a href="/about/"> --> ``` ##### 🔄 Loading Indicator Customization You can now customize the loading indicator with new props directly on the component ([#&#8203;31532](https://github.com/nuxt/nuxt/pull/31532)): - `hideDelay`: Controls how long to wait before hiding the loading bar - `resetDelay`: Controls how long to wait before resetting loading indicator state ```vue <template> <NuxtLoadingIndicator :hide-delay="500" :reset-delay="300" /> </template> ``` ##### 📚 Documentation as a Package The Nuxt documentation is now available as an npm package! You can install `@nuxt/docs` to access the raw markdown and YAML content used to build the documentation website ([#&#8203;31353](https://github.com/nuxt/nuxt/pull/31353)). ##### 💻 Developer Experience Improvements We've added several warnings to help catch common mistakes: - Warning when server components don't have a root element [#&#8203;31365](https://github.com/nuxt/nuxt/pull/31365) - Warning when using the reserved `runtimeConfig.app` namespace [#&#8203;31774](https://github.com/nuxt/nuxt/pull/31774) - Warning when core auto-import presets are overridden [#&#8203;29971](https://github.com/nuxt/nuxt/pull/29971) - Error when `definePageMeta` is used more than once in a file [#&#8203;31634](https://github.com/nuxt/nuxt/pull/31634) ##### 🔌 Enhanced Module Development Module authors will be happy to know: - A new `experimental.enforceModuleCompatibility` allows Nuxt to throw an error when a module is loaded that isn't compatible with it ([#&#8203;31657](https://github.com/nuxt/nuxt/pull/31657)). It will be enabled by default in Nuxt v4. - You can now automatically register every component exported via named exports from a file with `addComponentExports` [#&#8203;27155](https://github.com/nuxt/nuxt/pull/27155) ##### 🔥 Performance Improvements Several performance improvements have been made: - Switched to `tinyglobby` for faster file globbing [#&#8203;31668](https://github.com/nuxt/nuxt/pull/31668) - Excluded `.data` directory from type-checking for faster builds [#&#8203;31738](https://github.com/nuxt/nuxt/pull/31738) - Improved tree-shaking by hoisting the `purgeCachedData` check [#&#8203;31785](https://github.com/nuxt/nuxt/pull/31785) #### ✅ Upgrading Our recommendation for upgrading is to run: ```sh 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 [compare changes](https://github.com/nuxt/nuxt/compare/v3.16.2...v3.17.0) ##### 🚀 Enhancements - **nuxt:** Accept `hideDelay` and `resetDelay` props for loading indicator ([#&#8203;31532](https://github.com/nuxt/nuxt/pull/31532)) - **nuxt:** Warn server components need root element ([#&#8203;31365](https://github.com/nuxt/nuxt/pull/31365)) - **docs:** Publish raw markdown/yaml docs as `@nuxt/docs` ([#&#8203;31353](https://github.com/nuxt/nuxt/pull/31353)) - **kit,nuxt:** Pass dotenv values from `loadNuxtConfig` to nitro ([#&#8203;31680](https://github.com/nuxt/nuxt/pull/31680)) - **nuxt,vite:** Support disabling scripts in dev mode ([#&#8203;31724](https://github.com/nuxt/nuxt/pull/31724)) - **nuxt:** Warn if user uses reserved `runtimeConfig.app` namespace ([#&#8203;31774](https://github.com/nuxt/nuxt/pull/31774)) - **kit,schema:** Allow throwing error if modules aren't compatible ([#&#8203;31657](https://github.com/nuxt/nuxt/pull/31657)) - **nuxt:** Extract `middleware` when scanning page metadata ([#&#8203;30708](https://github.com/nuxt/nuxt/pull/30708)) - **nuxt:** Warn if core auto-import presets are overridden ([#&#8203;29971](https://github.com/nuxt/nuxt/pull/29971)) - **nuxt:** Scan named exports with `addComponentExports` ([#&#8203;27155](https://github.com/nuxt/nuxt/pull/27155)) - **nuxt:** Convert `<NuxtErrorBoundary>` to SFC + expose `error`/`clearError` ([#&#8203;31847](https://github.com/nuxt/nuxt/pull/31847)) - **nuxt:** Add `<NuxtTime>` component for ssr-safe time display ([#&#8203;31876](https://github.com/nuxt/nuxt/pull/31876)) - **nuxt:** Add `trailingSlash` prop to `<NuxtLink>` ([#&#8203;31820](https://github.com/nuxt/nuxt/pull/31820)) ##### 🔥 Performance - **kit,rspack,webpack:** Switch to `tinyglobby` ([#&#8203;31668](https://github.com/nuxt/nuxt/pull/31668)) - **kit:** Exclude `.data` directory from type-checking ([#&#8203;31738](https://github.com/nuxt/nuxt/pull/31738)) - **nuxt:** Hoist `purgeCachedData` check to improve tree-shaking ([#&#8203;31785](https://github.com/nuxt/nuxt/pull/31785)) - **nuxt:** Remove `oxc-parser` manual wasm fallback logic ([#&#8203;31484](https://github.com/nuxt/nuxt/pull/31484)) - **nuxt:** Remove unecessary type check for useFetch ([#&#8203;31910](https://github.com/nuxt/nuxt/pull/31910)) ##### 🩹 Fixes - **kit,vite:** Ensure all `modulesDir` paths are added to `fs.allow` ([#&#8203;31540](https://github.com/nuxt/nuxt/pull/31540)) - **nuxt:** Pass slots through to lazy hydrated components ([#&#8203;31649](https://github.com/nuxt/nuxt/pull/31649)) - **vite:** Do not return 404 for dev server handlers which shadow `/_nuxt/` ([#&#8203;31646](https://github.com/nuxt/nuxt/pull/31646)) - **nuxt:** Sync error types for `useLazyAsyncData` ([#&#8203;31676](https://github.com/nuxt/nuxt/pull/31676)) - **nuxt:** Strip base url from `error.url` ([#&#8203;31679](https://github.com/nuxt/nuxt/pull/31679)) - **nuxt:** Render inline styles before `app:rendered` is called ([#&#8203;31686](https://github.com/nuxt/nuxt/pull/31686)) - **nuxt:** Update nitro imports ([0bec0bd26](https://github.com/nuxt/nuxt/commit/0bec0bd26)) - **nuxt:** Check for `fallback` attribute when stripping `<DevOnly>` ([c1d735c27](https://github.com/nuxt/nuxt/commit/c1d735c27)) - **vite:** Invalidate files not present in module graph ([ecae2cd54](https://github.com/nuxt/nuxt/commit/ecae2cd54)) - **nuxt:** Do not add manifest preload when `noScripts` ([c9572e953](https://github.com/nuxt/nuxt/commit/c9572e953)) - **nuxt:** Do not prompt to update `compatibilityDate` ([#&#8203;31725](https://github.com/nuxt/nuxt/pull/31725)) - **nuxt:** Show brotli size by default when analyzing bundle ([#&#8203;31784](https://github.com/nuxt/nuxt/pull/31784)) - **nuxt:** Always pass `statusMessage` when rendering html error ([#&#8203;31761](https://github.com/nuxt/nuxt/pull/31761)) - **nuxt:** Error when `definePageMeta` is used more than once ([#&#8203;31634](https://github.com/nuxt/nuxt/pull/31634)) - **nuxt:** Parse `error.data` before rendering `error.vue` ([#&#8203;31571](https://github.com/nuxt/nuxt/pull/31571)) - **nuxt:** Use single synced asyncdata instance per key ([#&#8203;31373](https://github.com/nuxt/nuxt/pull/31373)) - **nuxt:** Use `useAsyncData` in console log ([#&#8203;31801](https://github.com/nuxt/nuxt/pull/31801)) - **nuxt:** Wait for suspense to resolve before handling `NuxtErrorBoundary` error ([#&#8203;31791](https://github.com/nuxt/nuxt/pull/31791)) - **vite:** Disable `preserveModules` ([#&#8203;31839](https://github.com/nuxt/nuxt/pull/31839)) - **nuxt:** Align `pending` with `status` value for v4 ([#&#8203;25864](https://github.com/nuxt/nuxt/pull/25864)) - **nuxt:** Consider full path when de-duplicating routes ([#&#8203;31849](https://github.com/nuxt/nuxt/pull/31849)) - **nuxt:** Augment `nuxt/app` in generated middleware and layouts declarations ([#&#8203;31808](https://github.com/nuxt/nuxt/pull/31808)) - **nuxt:** Correct order of args passed to `withoutBase` ([f956407bb](https://github.com/nuxt/nuxt/commit/f956407bb)) - **vite:** Dedupe `vue` in vite-node dev server ([f3882e004](https://github.com/nuxt/nuxt/commit/f3882e004)) - **ui-templates:** Pass pointer events through spotlight div in error dev template ([#&#8203;31887](https://github.com/nuxt/nuxt/pull/31887)) - **kit:** Include user-defined types before internal ones in `tsconfig.json` ([#&#8203;31882](https://github.com/nuxt/nuxt/pull/31882)) - **nuxt:** Do not purge nuxt data if active `useNuxtData` ([#&#8203;31893](https://github.com/nuxt/nuxt/pull/31893)) - **nuxt:** Do not include components of key in `useFetch` watch sources ([#&#8203;31903](https://github.com/nuxt/nuxt/pull/31903)) - **nuxt:** Use first existing `modulesDir` to store build cache files ([#&#8203;31907](https://github.com/nuxt/nuxt/pull/31907)) ##### 💅 Refactors - **nuxt:** Use `shallowRef` for primitives as well ([#&#8203;31662](https://github.com/nuxt/nuxt/pull/31662)) - **nuxt:** Move island renderer into its own event handler ([#&#8203;31386](https://github.com/nuxt/nuxt/pull/31386)) - **nuxt:** Remove unneeded import ([#&#8203;31750](https://github.com/nuxt/nuxt/pull/31750)) - **nuxt:** Use `_replaceAppConfig` when applying hmr ([#&#8203;31786](https://github.com/nuxt/nuxt/pull/31786)) - **nuxt:** Use new unplugin filter options ([#&#8203;31868](https://github.com/nuxt/nuxt/pull/31868)) - **schema:** Do not generate types for `ConfigSchema` ([#&#8203;31894](https://github.com/nuxt/nuxt/pull/31894)) ##### 📖 Documentation - Add note on extending auto-imports ([#&#8203;31640](https://github.com/nuxt/nuxt/pull/31640)) - Improve description of `app.vue` ([#&#8203;31645](https://github.com/nuxt/nuxt/pull/31645)) - Use video-accordion video and add more videos ([#&#8203;31655](https://github.com/nuxt/nuxt/pull/31655)) - Add description of `templateParams` to seo docs ([#&#8203;31583](https://github.com/nuxt/nuxt/pull/31583)) - Refine auto-imports documentation ([#&#8203;31700](https://github.com/nuxt/nuxt/pull/31700)) - Fix nuxt logo on website badge ([#&#8203;31704](https://github.com/nuxt/nuxt/pull/31704)) - Update tailwindcss link ([b5741cb5a](https://github.com/nuxt/nuxt/commit/b5741cb5a)) - Adjust description of `useHydration` ([#&#8203;31712](https://github.com/nuxt/nuxt/pull/31712)) - Remove trailing slash ([#&#8203;31751](https://github.com/nuxt/nuxt/pull/31751)) - Remove comment about `callOnce` returning value ([#&#8203;31747](https://github.com/nuxt/nuxt/pull/31747)) - Use `vs.` consistently ([#&#8203;31760](https://github.com/nuxt/nuxt/pull/31760)) - Update nitro `addServerHandler` example ([#&#8203;31769](https://github.com/nuxt/nuxt/pull/31769)) - Add supporting shared folder video ([#&#8203;31651](https://github.com/nuxt/nuxt/pull/31651)) - Update example for component auto-import in nuxt modules ([#&#8203;31757](https://github.com/nuxt/nuxt/pull/31757)) - Refine nuxt kit components documentation ([#&#8203;31714](https://github.com/nuxt/nuxt/pull/31714)) - Use trailing slash for vitest link ([82de8bcf8](https://github.com/nuxt/nuxt/commit/82de8bcf8)) - Fix casing ([#&#8203;31805](https://github.com/nuxt/nuxt/pull/31805)) - Add discord and nuxters links ([#&#8203;31888](https://github.com/nuxt/nuxt/pull/31888)) - Fix typos ([#&#8203;31898](https://github.com/nuxt/nuxt/pull/31898)) ##### 📦 Build - **nuxt:** Use `vue-sfc-transformer` to process sfcs ([#&#8203;31691](https://github.com/nuxt/nuxt/pull/31691)) ##### 🏡 Chore - Update renovate config ([565c0b98e](https://github.com/nuxt/nuxt/commit/565c0b98e)) - Upgrade webpack separately ([e1f5db34f](https://github.com/nuxt/nuxt/commit/e1f5db34f)) - Update internal ui-templates licence to MIT ([f8059fb8b](https://github.com/nuxt/nuxt/commit/f8059fb8b)) - Sort package.json ([a6cbd71f8](https://github.com/nuxt/nuxt/commit/a6cbd71f8)) ##### ✅ Tests - **nuxt:** Add customizable test api for pages tests ([#&#8203;31619](https://github.com/nuxt/nuxt/pull/31619)) - **kit:** Fix tests when running on Windows ([#&#8203;31694](https://github.com/nuxt/nuxt/pull/31694)) - Update page metadata snapshot ([89a596075](https://github.com/nuxt/nuxt/commit/89a596075)) - Add basic runtime tests for `<NuxtErrorBoundary>` ([4df92c45f](https://github.com/nuxt/nuxt/commit/4df92c45f)) - Add version to mock nuxt ([915fae2fd](https://github.com/nuxt/nuxt/commit/915fae2fd)) - Update assertion for `pendingWhenIdle` ([08f2224c8](https://github.com/nuxt/nuxt/commit/08f2224c8)) - Remove incorrect assertions ([fdc4b5343](https://github.com/nuxt/nuxt/commit/fdc4b5343)) - Update tests for purgeCachedData ([c6411eb17](https://github.com/nuxt/nuxt/commit/c6411eb17)) ##### 🤖 CI - Add notify-nuxt-website workflow ([#&#8203;31726](https://github.com/nuxt/nuxt/pull/31726)) ##### ❤️ Contributors - [@&#8203;beer](https://github.com/beer) ([@&#8203;iiio2](https://github.com/iiio2)) - Julien Huang ([@&#8203;huang-julien](https://github.com/huang-julien)) - Daniel Roe ([@&#8203;danielroe](https://github.com/danielroe)) - Saeid Zareie ([@&#8203;Saeid-Za](https://github.com/Saeid-Za)) - Bobbie Goede ([@&#8203;BobbieGoede](https://github.com/BobbieGoede)) - Damian Głowala ([@&#8203;DamianGlowala](https://github.com/DamianGlowala)) - Maxime Pauvert ([@&#8203;maximepvrt](https://github.com/maximepvrt)) - Leonid ([@&#8203;john-psina](https://github.com/john-psina)) - Wind ([@&#8203;productdevbook](https://github.com/productdevbook)) - Arkadiusz Sygulski ([@&#8203;Aareksio](https://github.com/Aareksio)) - Rohan Dhimal ([@&#8203;drowhannn](https://github.com/drowhannn)) - xjccc ([@&#8203;xjccc](https://github.com/xjccc)) - Robin ([@&#8203;OrbisK](https://github.com/OrbisK)) - Alex Liu ([@&#8203;Mini-ghost](https://github.com/Mini-ghost)) - Daniel Kelly ([@&#8203;danielkellyio](https://github.com/danielkellyio)) - Jeffrey van den Hondel ([@&#8203;jeffreyvdhondel](https://github.com/jeffreyvdhondel)) - Alexander Lichter ([@&#8203;TheAlexLichter](https://github.com/TheAlexLichter)) - Sébastien Chopin ([@&#8203;atinux](https://github.com/atinux)) - Yizack Rangel ([@&#8203;Yizack](https://github.com/Yizack)) - Joaquín Sánchez ([@&#8203;userquin](https://github.com/userquin)) - IlyaL ([@&#8203;ilyaliao](https://github.com/ilyaliao)) - Ben McCann ([@&#8203;benmccann](https://github.com/benmccann)) - Anthony Fu ([@&#8203;antfu](https://github.com/antfu)) - Alexandru Ungureanu ([@&#8203;unguul](https://github.com/unguul)) ### [`v3.16.2`](https://github.com/nuxt/nuxt/releases/tag/v3.16.2) [Compare Source](https://github.com/nuxt/nuxt/compare/v3.16.1...v3.16.2) > 3.16.2 is the next patch release. #### ✅ Upgrading Our recommendation for upgrading is to run: ```sh npx nuxi@latest 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 [compare changes](https://github.com/nuxt/nuxt/compare/v3.16.1...v3.16.2) ##### 🔥 Performance - **nuxt:** Improve tree-shaking of `useRequestEvent` on client ([#&#8203;31586](https://github.com/nuxt/nuxt/pull/31586)) ##### 🩹 Fixes - **nuxt:** Pass down attrs to `<Body>` and `<Html>` ([#&#8203;31513](https://github.com/nuxt/nuxt/pull/31513)) - **nuxt:** Use greedy catchall when `/index` is the last segment ([#&#8203;31528](https://github.com/nuxt/nuxt/pull/31528)) - **nuxt:** Reset `page:loading:end` hook before navigation ([#&#8203;31504](https://github.com/nuxt/nuxt/pull/31504)) - **nuxt:** Write initial cookie value if different from `document.cookie` ([#&#8203;31517](https://github.com/nuxt/nuxt/pull/31517)) - **nuxt:** Support template string quotes in `resolveComponent` ([#&#8203;31526](https://github.com/nuxt/nuxt/pull/31526)) - **nuxt:** Show fatal errors thrown in middleware ([#&#8203;31518](https://github.com/nuxt/nuxt/pull/31518)) - **nuxt:** Use name to index route providers in dev ([#&#8203;31544](https://github.com/nuxt/nuxt/pull/31544)) - **nuxt:** Improve default scroll behaviour ([#&#8203;31545](https://github.com/nuxt/nuxt/pull/31545)) - **vite:** Return 404 for non-existent `_nuxt/` paths in development ([#&#8203;31543](https://github.com/nuxt/nuxt/pull/31543)) - **nuxt:** Pass error data to `error.vue` ([#&#8203;31573](https://github.com/nuxt/nuxt/pull/31573)) - **nuxt:** Use `unhead` v2 api in default welcome + error pages ([#&#8203;31584](https://github.com/nuxt/nuxt/pull/31584)) - **nuxt:** Improve consistency of page metadata extraction ([#&#8203;31306](https://github.com/nuxt/nuxt/pull/31306)) - **nuxt:** Do not remove meta when `scanPageMeta` is disabled ([0ba454b21](https://github.com/nuxt/nuxt/commit/0ba454b21)) ##### 💅 Refactors - **nuxt:** Simplify conditional branches of `<NuxtPage>` ([#&#8203;31561](https://github.com/nuxt/nuxt/pull/31561)) - Replace `useServerHead` in `onPrehydrate` with `useHead` ([#&#8203;31585](https://github.com/nuxt/nuxt/pull/31585)) ##### 📖 Documentation - Move custom directories note to the correct place ([#&#8203;29100](https://github.com/nuxt/nuxt/pull/29100)) - Update example to `useTemplateRef` ([#&#8203;31458](https://github.com/nuxt/nuxt/pull/31458)) - Provide async function for `$fetch` ([#&#8203;31459](https://github.com/nuxt/nuxt/pull/31459)) - Mention the possibility to scan pages based on a pattern ([#&#8203;31462](https://github.com/nuxt/nuxt/pull/31462)) - Add `dedupe` flag ([#&#8203;31467](https://github.com/nuxt/nuxt/pull/31467)) - Improve `refreshNuxtData` docs ([#&#8203;31448](https://github.com/nuxt/nuxt/pull/31448)) - Add missing `--` before `--template` ([#&#8203;31469](https://github.com/nuxt/nuxt/pull/31469)) - Migrate to [@&#8203;nuxt/content](https://github.com/nuxt/content) v3 ([#&#8203;31150](https://github.com/nuxt/nuxt/pull/31150)) - Fix icon for main docs ([e7828d9c6](https://github.com/nuxt/nuxt/commit/e7828d9c6)) - Save selected package manager ([#&#8203;31520](https://github.com/nuxt/nuxt/pull/31520)) - Improve refresh nuxt data example ([#&#8203;31487](https://github.com/nuxt/nuxt/pull/31487)) - Note that middleware runs on error pages as well ([df14c0263](https://github.com/nuxt/nuxt/commit/df14c0263)) - Replace all 'Nuxt 3' with 'Nuxt' in documentation ([#&#8203;31519](https://github.com/nuxt/nuxt/pull/31519)) - `resolveComponent` only auto-imports components with literal strings ([#&#8203;31511](https://github.com/nuxt/nuxt/pull/31511)) - Add ticks around `tsconfig.json` ([#&#8203;31473](https://github.com/nuxt/nuxt/pull/31473)) - Capitalize heading ([#&#8203;31523](https://github.com/nuxt/nuxt/pull/31523)) - Update links to unhead.unjs.io ([1913febbb](https://github.com/nuxt/nuxt/commit/1913febbb)) - Document that props are passed via server components via query ([db7688219](https://github.com/nuxt/nuxt/commit/db7688219)) - Improve description of `page:start` and `page:finish` hooks ([#&#8203;31570](https://github.com/nuxt/nuxt/pull/31570)) ##### 🏡 Chore - Ignore builds ([e34ae380d](https://github.com/nuxt/nuxt/commit/e34ae380d)) ##### ✅ Tests - Avoid invalid nested font face ([#&#8203;31524](https://github.com/nuxt/nuxt/pull/31524)) - Add test for loading indicator with custom key ([25ca9b819](https://github.com/nuxt/nuxt/commit/25ca9b819)) - Add test for custom prop + loading indicator ([94bfed031](https://github.com/nuxt/nuxt/commit/94bfed031)) - Update snapshot ([55134fc2a](https://github.com/nuxt/nuxt/commit/55134fc2a)) ##### ❤️ Contributors - Daniel Roe ([@&#8203;danielroe](https://github.com/danielroe)) - Julien Huang ([@&#8203;huang-julien](https://github.com/huang-julien)) - Bobbie Goede ([@&#8203;BobbieGoede](https://github.com/BobbieGoede)) - Alex Liu ([@&#8203;Mini-ghost](https://github.com/Mini-ghost)) - Dennis Adriaansen ([@&#8203;dennisadriaans](https://github.com/dennisadriaans)) - Guillaume Chau ([@&#8203;Akryum](https://github.com/Akryum)) - [@&#8203;beer](https://github.com/beer) ([@&#8203;iiio2](https://github.com/iiio2)) - 翠 / green ([@&#8203;sapphi-red](https://github.com/sapphi-red)) - xjccc ([@&#8203;xjccc](https://github.com/xjccc)) - Hugo Richard ([@&#8203;HugoRCD](https://github.com/HugoRCD)) - Sébastien Chopin ([@&#8203;atinux](https://github.com/atinux)) - Johannes Buchholz ([@&#8203;jhony1104](https://github.com/jhony1104)) - Alexander Lichter ([@&#8203;TheAlexLichter](https://github.com/TheAlexLichter)) - Matej Černý ([@&#8203;cernymatej](https://github.com/cernymatej)) - Claudiu ([@&#8203;sofuxro](https://github.com/sofuxro)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNDAuMSIsInVwZGF0ZWRJblZlciI6IjQxLjE0MC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
tommy closed this pull request 2025-12-10 22:57:57 +00:00
Commenting is not possible because the repository is archived.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pub/status-web!70
No description provided.