nuxt/nuxt (@nuxt/kit)
### [`v3.13.1`](https://redirect.github.com/nuxt/nuxt/releases/tag/v3.13.1)
[Compare Source](https://redirect.github.com/nuxt/nuxt/compare/v3.13.0...v3.13.1)
> 3.12.4 is the next regularly scheduled patch release.
#### ๐ Highlights
Although this is a patch release, there are two features I'd love to draw your attention to.
1. ๐ `useId` now uses a built-in Vue composable for stable ids between server + client! [https://github.com/nuxt/nuxt/pull/28285](https://redirect.github.com/nuxt/nuxt/pull/28285)
2. ๐ฅ a new `experimental.buildCache` feature now allows for quicker app rebuilds [https://github.com/nuxt/nuxt/pull/28726](https://redirect.github.com/nuxt/nuxt/pull/28726)
As always, feedback is appreciated ๐ โค๏ธ
#### โ Upgrading
As usual, our recommendation for upgrading is to run:
```sh
npx nuxi@latest upgrade --force
```
This will refresh your lockfile as well, and ensures that you pull in updates from other dependencies that Nuxt relies on, particularly in the unjs ecosystem.
#### ๐ Changelog
[compare changes](https://redirect.github.com/nuxt/nuxt/compare/v3.13.0...v3.13.1)
##### ๐ฅ Performance
- **nuxt:** Cache vue app build outputs ([#28726](https://redirect.github.com/nuxt/nuxt/pull/28726))
- **nuxt:** Use `ServerPlaceholder` for ssr client components ([#28563](https://redirect.github.com/nuxt/nuxt/pull/28563))
- **nuxt:** Use reducer array + handle modified proto ([#28768](https://redirect.github.com/nuxt/nuxt/pull/28768))
##### ๐ฉน Fixes
- **schema:** Resolve user-provided `serverDir` relative to root ([#28700](https://redirect.github.com/nuxt/nuxt/pull/28700))
- **nuxt:** Handle mismatching declaration/plugin extensions ([#28709](https://redirect.github.com/nuxt/nuxt/pull/28709))
- **nuxt:** Do not accept arbitrary strings for `MiddlewareKey` ([#28676](https://redirect.github.com/nuxt/nuxt/pull/28676))
- **nuxt:** Do not pass listeners to custom `NuxtLink` ([#28738](https://redirect.github.com/nuxt/nuxt/pull/28738))
- **nuxt:** Generate basic jsdoc for module config entry ([#27689](https://redirect.github.com/nuxt/nuxt/pull/27689))
- **nuxt:** Augment `NuxtOptions` as well as config ([#28747](https://redirect.github.com/nuxt/nuxt/pull/28747))
- **nuxt:** Improve error logging in import protections ([#28753](https://redirect.github.com/nuxt/nuxt/pull/28753))
- **nuxt:** Handle deleted cookies from `CookieStore` events ([#28760](https://redirect.github.com/nuxt/nuxt/pull/28760))
- **nuxt:** Allow updating `appConfig` with non-iterable objects ([#28773](https://redirect.github.com/nuxt/nuxt/pull/28773))
- **nuxt:** Improve `isNuxtError` type inference ([#28814](https://redirect.github.com/nuxt/nuxt/pull/28814))
##### ๐ Refactors
- **nuxt:** Update to vue v3.5 + native `useId` ([#28285](https://redirect.github.com/nuxt/nuxt/pull/28285))
##### ๐ Documentation
- Fix typo ([#28724](https://redirect.github.com/nuxt/nuxt/pull/28724))
- Update broken/redirected links ([#28739](https://redirect.github.com/nuxt/nuxt/pull/28739))
- Capitalize text ([#28734](https://redirect.github.com/nuxt/nuxt/pull/28734))
- Updated line number for nuxt build-time hooks ([#28746](https://redirect.github.com/nuxt/nuxt/pull/28746))
- Add missing `query` returned value from `useRoute()` ([#28743](https://redirect.github.com/nuxt/nuxt/pull/28743))
- Persist package manager choice in code blocks ([#28514](https://redirect.github.com/nuxt/nuxt/pull/28514))
- Fix postcss codeblock typo ([#28801](https://redirect.github.com/nuxt/nuxt/pull/28801))
- Include `--frozen-lockfile` when installing dependencies ([#28794](https://redirect.github.com/nuxt/nuxt/pull/28794))
##### ๐ก Chore
- Use `tinyexec` internally ([#28684](https://redirect.github.com/nuxt/nuxt/pull/28684))
- Use `tinyglobby` internally ([#28686](https://redirect.github.com/nuxt/nuxt/pull/28686))
- Trim tag ([#28687](https://redirect.github.com/nuxt/nuxt/pull/28687))
- Fix ci typo ([#28721](https://redirect.github.com/nuxt/nuxt/pull/28721))
- Tidying workflows + add sherif workflow ([#28793](https://redirect.github.com/nuxt/nuxt/pull/28793))
- Ignore eslint warnings about console logging ([#28795](https://redirect.github.com/nuxt/nuxt/pull/28795))
##### โ Tests
- Update bundle size ([99df4c222](https://redirect.github.com/nuxt/nuxt/commit/99df4c222))
##### โค๏ธ Contributors
- Gianluca Di Francesco ([@gianlucadifrancesco](https://redirect.github.com/gianlucadifrancesco))
- Daniel Roe ([@danielroe](https://redirect.github.com/danielroe))
- Joaquรญn Sรกnchez ([@userquin](https://redirect.github.com/userquin))
- Heb ([@Hebilicious](https://redirect.github.com/Hebilicious))
- Eckhardt (Kaizen) Dreyer ([@Eckhardt-D](https://redirect.github.com/Eckhardt-D))
- Gustav Odinger ([@gustavwilliam](https://redirect.github.com/gustavwilliam))
- Julien Huang ([@huang-julien](https://redirect.github.com/huang-julien))
- Ismail Sabet ([@ismailsabet](https://redirect.github.com/ismailsabet))
- Max ([@onmax](https://redirect.github.com/onmax))
- Anthony Fu ([@antfu](https://redirect.github.com/antfu))
- [@beer](https://redirect.github.com/beer) ([@iiio2](https://redirect.github.com/iiio2))
- riskrole ([@riskrole](https://redirect.github.com/riskrole))
- Thimo Sietsma ([@th1m0](https://redirect.github.com/th1m0))
### [`v3.13.0`](https://redirect.github.com/nuxt/nuxt/releases/tag/v3.13.0)
[Compare Source](https://redirect.github.com/nuxt/nuxt/compare/v3.12.4...v3.13.0)
##### ๐ Highlights
I'm pretty excited about this release - we've ported some features we had planned for Nuxt v4 back to v3, as well as a raft of bug fixes and performance improvements - as usual.
Here are a few of things I'm most excited about.
##### ๐๏ธ Route Groups
We now support naming directories with parentheses/brackets to organise your routes without affecting the path.
For example:
```bash [Directory structure]
-| pages/
---| index.vue
---| (marketing)/
-----| about.vue
-----| contact.vue
```
This will produce `/`, `/about` and `/contact` pages in your app. The `marketing` group is ignored for purposes of your URL structure.
Read more in [the original PR](https://redirect.github.com/nuxt/nuxt/pull/28276).
##### ๐๏ธ Islands and Head Metadata
It's now possible for server component islands to manipulate the head, such as by adding SEO metadata when rendering.
Read more in [#27987](https://redirect.github.com/nuxt/nuxt/pull/27987).
##### ๐ช Custom Prefetch Triggers
We now support custom prefetch triggers for `NuxtLink` ([#27846](https://redirect.github.com/nuxt/nuxt/pull/27846)).
For example:
```vue [pages/index.vue]
This will prefetch when hovered or when it gains focus
This will prefetch when hovered/focus - or when it becomes visible
```
It's also possible to enable/disable these globally for your app and override them per link.
For example:
```ts [nuxt.config.ts]
export default defineNuxtConfig({
experimental: {
defaults: {
nuxtLink: {
prefetch: true,
prefetchOn: { visibility: false, interaction: true }
}
}
}
})
```
##### ๐บ๏ธ Better Server Source Maps
When running with `node --enable-source-maps`, you may have noticed that the source maps for the Vue files in your server build pointed to the Vite build output (something like `.nuxt/dist/server/_nuxt/index-O15BBwZ3.js`).
Now, even after your Nitro build, your server source maps will reference your original source files ([#28521](https://redirect.github.com/nuxt/nuxt/pull/28521)).
Note that one of the easiest ways of improving your build performance is to turn off source maps if you aren't using them, which you can do easily in your `nuxt.config`:
```ts [nuxt.config.ts]
export default defineNuxtConfig({
sourcemap: {
server: false,
client: true,
},
})
```
##### ๐ New Features for Module Authors
In the run-up to Nuxt v4, we're working on adding some key functionality for module authors, including a new `isNuxtMajorVersion` utility where required ([#27579](https://redirect.github.com/nuxt/nuxt/pull/27579)) and better inferred typing for merged module options using the new `defineNuxtModule().with()` method ([#27520](https://redirect.github.com/nuxt/nuxt/pull/27520)).
##### โจ Improved Dev Warnings
We no longer warn when using data fetching composables in middleware ([#28604](https://redirect.github.com/nuxt/nuxt/pull/28604)) and we warn when user components' names begin with Lazy ([#27838](https://redirect.github.com/nuxt/nuxt/pull/27838)).
##### ๐จ Vue TypeScript Changes
For a while, in the Vue ecosystem, we've been augmenting `@vue/runtime-core` to add custom properties and more to `vue`. However, this inadvertently breaks the types for projects that augment `vue` - which is now the officially recommended in the docs way to augment these interfaces (for example, [ComponentCustomProperties](https://vuejs.org/api/utility-types.html#componentcustomproperties), [GlobalComponents](https://vuejs.org/guide/extras/web-components.html#web-components-and-typescript) and [so on](https://vuejs.org/guide/typescript/options-api.html#augmenting-global-properties)).
This means *all* libraries must update their code (or it will break the types of libraries that augment `vue` instead).
We've updated our types in Nuxt along these lines but you may experience issues with the latest `vue-router` when used with libraries which haven't yet done so.
Please create an issue with a reproduction - I'll happily help create a PR to resolve in the upstream library in question. Or you may be able to work around the issue by creating a `declarations.d.ts` in the root of your project with the following code ([credit]()):
```ts [declarations.d.ts]
import type {
ComponentCustomOptions as _ComponentCustomOptions,
ComponentCustomProperties as _ComponentCustomProperties,
} from 'vue';
declare module '@vue/runtime-core' {
interface ComponentCustomProperties extends _ComponentCustomProperties {}
interface ComponentCustomOptions extends _ComponentCustomOptions {}
}
```
##### โ Upgrading
As usual, our recommendation for upgrading is to run:
```sh
npx nuxi@latest upgrade --force
```
This will refresh your lockfile as well, and ensures that you pull in updates from other dependencies that Nuxt relies on, particularly in the unjs ecosystem.
##### ๐ Changelog
[compare changes](https://redirect.github.com/nuxt/nuxt/compare/v3.12.4...v3.13.0)
##### ๐ Enhancements
- **nuxt:** Await custom `routes` function in `router.options` ([#27644](https://redirect.github.com/nuxt/nuxt/pull/27644))
- **kit:** Add new `isNuxtMajorVersion` compatibility util ([#27579](https://redirect.github.com/nuxt/nuxt/pull/27579))
- **kit,schema:** Add `.with` for better module options types ([#27520](https://redirect.github.com/nuxt/nuxt/pull/27520))
- **nuxt:** Warn when user components' names begin with `Lazy` ([#27838](https://redirect.github.com/nuxt/nuxt/pull/27838))
- **nuxt:** Allow specifying app id when creating a nuxt app ([#28392](https://redirect.github.com/nuxt/nuxt/pull/28392))
- **nuxt:** Custom enable/disable hooks for `usePreviewMode` ([#28371](https://redirect.github.com/nuxt/nuxt/pull/28371))
- **kit:** Add `prepend` option to `addRouteMiddleware` ([#28496](https://redirect.github.com/nuxt/nuxt/pull/28496))
- **nuxt:** Allow organising pages within route groups ([#28276](https://redirect.github.com/nuxt/nuxt/pull/28276))
- **vite:** Preserve vite sourcemaps for nitro build ([#28521](https://redirect.github.com/nuxt/nuxt/pull/28521))
- **nuxt:** Allow defining triggers for prefetching links ([#27846](https://redirect.github.com/nuxt/nuxt/pull/27846))
- **nuxt:** Namespace `__NUXT__` when using multi-app ([#27263](https://redirect.github.com/nuxt/nuxt/pull/27263))
- **nuxt:** Allow server islands to manipulate head ([#27987](https://redirect.github.com/nuxt/nuxt/pull/27987))
##### ๐ฅ Performance
- **nuxt:** Call cookie `decode` function only for named cookie ([#28215](https://redirect.github.com/nuxt/nuxt/pull/28215))
- **nuxt:** Avoid making client-only component setup async ([#28334](https://redirect.github.com/nuxt/nuxt/pull/28334))
- **nuxt:** Avoid multiple calls to `getCachedData` ([#28472](https://redirect.github.com/nuxt/nuxt/pull/28472))
##### ๐ฉน Fixes
- **nuxt:** Don't warn for `definePageMeta` in client-only pages ([#28246](https://redirect.github.com/nuxt/nuxt/pull/28246))
- **kit:** Include module `dist/runtime/` in tsconfig includes ([#28237](https://redirect.github.com/nuxt/nuxt/pull/28237))
- **schema:** Support absolute/relative paths for `assetsDir` ([59f0099f4](https://redirect.github.com/nuxt/nuxt/commit/59f0099f4))
- **schema:** Do not override user `serverDir` ([#28249](https://redirect.github.com/nuxt/nuxt/pull/28249))
- **schema:** Use new options syntax for `vite-plugin-vue` ([#28307](https://redirect.github.com/nuxt/nuxt/pull/28307))
- **schema:** Export new module return types ([c0ad8db93](https://redirect.github.com/nuxt/nuxt/commit/c0ad8db93))
- **kit:** Add missing type import ([1a60b4541](https://redirect.github.com/nuxt/nuxt/commit/1a60b4541))
- **vite,webpack:** Handle local postcss plugins ([#28481](https://redirect.github.com/nuxt/nuxt/pull/28481))
- **nuxt:** Handle `scroll-padding-top: auto` in scrollBehavior ([#28320](https://redirect.github.com/nuxt/nuxt/pull/28320))
- **nuxt:** Ensure `runtimeConfig.public` is reactive on client ([#28443](https://redirect.github.com/nuxt/nuxt/pull/28443))
- **nuxt:** Update renamed stub composables from `nuxt/scripts` ([#28449](https://redirect.github.com/nuxt/nuxt/pull/28449))
- **nuxt:** Augment `@vue/runtime-core` and `@vue/runtime-dom` ([#28446](https://redirect.github.com/nuxt/nuxt/pull/28446))
- **nuxt:** Scan jsx pages for page metadata ([#28479](https://redirect.github.com/nuxt/nuxt/pull/28479))
- **nuxt:** Handle plugin type extensions more correctly ([#28480](https://redirect.github.com/nuxt/nuxt/pull/28480))
- **vite:** Respect `baseURL` for public assets in dev ([#28482](https://redirect.github.com/nuxt/nuxt/pull/28482))
- **vite:** Add transformation result to log for parse errors ([#28508](https://redirect.github.com/nuxt/nuxt/pull/28508))
- **vite:** Include module symbols in generated code ([#28509](https://redirect.github.com/nuxt/nuxt/pull/28509))
- **nuxt:** Add reason when aborting request in `useFetch` ([#28517](https://redirect.github.com/nuxt/nuxt/pull/28517))
- **nuxt:** Only augment `vue`, not sub-packages ([#28542](https://redirect.github.com/nuxt/nuxt/pull/28542))
- **nuxt:** Avoid stripping js extensions in plugin injections ([#28593](https://redirect.github.com/nuxt/nuxt/pull/28593))
- **nuxt:** Preserve route-specific metadata on `route.meta` ([#28441](https://redirect.github.com/nuxt/nuxt/pull/28441))
- **nuxt:** Don't warn when data fetching in middleware ([#28604](https://redirect.github.com/nuxt/nuxt/pull/28604))
- **nuxt:** Extract route rules/page meta in 2+ script blocks ([#28625](https://redirect.github.com/nuxt/nuxt/pull/28625))
- **nuxt:** Allow customising status code in `validate` method ([#28612](https://redirect.github.com/nuxt/nuxt/pull/28612))
- **nuxt:** Do not provide default `prefetchOn` prop ([#28630](https://redirect.github.com/nuxt/nuxt/pull/28630))
- **nuxt:** Revert back to object syntax for island head ([#28656](https://redirect.github.com/nuxt/nuxt/pull/28656))
##### ๐ Documentation
- Fix issue in cookie passing example ([#28223](https://redirect.github.com/nuxt/nuxt/pull/28223))
- Fix note in layers usage chapter ([#28236](https://redirect.github.com/nuxt/nuxt/pull/28236))
- Fix spaces ([#28233](https://redirect.github.com/nuxt/nuxt/pull/28233))
- Add `vue` lang to sample code ([#28247](https://redirect.github.com/nuxt/nuxt/pull/28247))
- Use `splitSetCookieString` from `cookie-es` ([29f95ae0d](https://redirect.github.com/nuxt/nuxt/commit/29f95ae0d))
- Use `headers.getSetCookie` ([45c6df9a4](https://redirect.github.com/nuxt/nuxt/commit/45c6df9a4))
- Fix codemod command typos ([#28279](https://redirect.github.com/nuxt/nuxt/pull/28279))
- `bunx` -> `bun x` ([#28277](https://redirect.github.com/nuxt/nuxt/pull/28277))
- Add missing comma to example ([#28300](https://redirect.github.com/nuxt/nuxt/pull/28300))
- Add language to example schema codeblock ([#28294](https://redirect.github.com/nuxt/nuxt/pull/28294))
- Update link to RuntimeNuxtHooks ([#28336](https://redirect.github.com/nuxt/nuxt/pull/28336))
- Update links to social media ([cd5195047](https://redirect.github.com/nuxt/nuxt/commit/cd5195047))
- Setup host property and usage example ([#28331](https://redirect.github.com/nuxt/nuxt/pull/28331))
- Fix TypeScript errors for examples ([#28403](https://redirect.github.com/nuxt/nuxt/pull/28403))
- Improve readability of link to mdn ([#28327](https://redirect.github.com/nuxt/nuxt/pull/28327))
- Use ts for create-error example ([#28411](https://redirect.github.com/nuxt/nuxt/pull/28411))
- Alias links in jsdoc `@see` blocks ([#28270](https://redirect.github.com/nuxt/nuxt/pull/28270))
- Link to vue test utils docs for `mountSuspended` ([#28463](https://redirect.github.com/nuxt/nuxt/pull/28463))
- Remove vue-tsc major version constraint ([#28484](https://redirect.github.com/nuxt/nuxt/pull/28484))
- Recommend '#teleports' target instead of 'body' ([#28489](https://redirect.github.com/nuxt/nuxt/pull/28489))
- Correct custom routing link ([#28497](https://redirect.github.com/nuxt/nuxt/pull/28497))
- Improve typing of default exports ([#28520](https://redirect.github.com/nuxt/nuxt/pull/28520))
- Fix `options` type in custom useFetch recipe ([#28389](https://redirect.github.com/nuxt/nuxt/pull/28389))
- Update useRuntimeConfig source path ([#28553](https://redirect.github.com/nuxt/nuxt/pull/28553))
- Add line-breaks to tips in Module Author Guide ([#28587](https://redirect.github.com/nuxt/nuxt/pull/28587))
- Update nuxt scripts status ([#28629](https://redirect.github.com/nuxt/nuxt/pull/28629))
##### ๐ก Chore
- **schema:** Fix typo ([#28377](https://redirect.github.com/nuxt/nuxt/pull/28377))
- **nuxt:** Use router code reference permalink ([#28356](https://redirect.github.com/nuxt/nuxt/pull/28356))
- **nuxt:** Remove unnecessary await ([#28407](https://redirect.github.com/nuxt/nuxt/pull/28407))
- Upgrade vue in a separate pr ([#28414](https://redirect.github.com/nuxt/nuxt/pull/28414))
- Update docs typecheck command ([49de5f731](https://redirect.github.com/nuxt/nuxt/commit/49de5f731))
- Lint ([cab9e5c35](https://redirect.github.com/nuxt/nuxt/commit/cab9e5c35))
- Fix some typos in comments ([#28501](https://redirect.github.com/nuxt/nuxt/pull/28501))
##### โ Tests
- Disable `pageTransition` in client-only page ([#27839](https://redirect.github.com/nuxt/nuxt/pull/27839))
- Ignore `SharedComponent` in server head ([510f3e28f](https://redirect.github.com/nuxt/nuxt/commit/510f3e28f))
- Update bundle size ([3ecb95a7c](https://redirect.github.com/nuxt/nuxt/commit/3ecb95a7c))
##### ๐ค CI
- Add reproduire-sur-stackblitz workflow ([#28531](https://redirect.github.com/nuxt/nuxt/pull/28531))
##### โค๏ธ Contributors
- Daniel Roe ([@danielroe](https://redirect.github.com/danielroe))
- Julien Huang ([@huang-julien](https://redirect.github.com/huang-julien))
- Maxime Pauvert ([@maximepvrt](https://redirect.github.com/maximepvrt))
- felix-dolderer ([@felix-dolderer](https://redirect.github.com/felix-dolderer))
- Nicolas Payot ([@nicolaspayot](https://redirect.github.com/nicolaspayot))
- Kewin Szlezingier ([@kewinzaq1](https://redirect.github.com/kewinzaq1))
- Vasily Kuzin ([@ExEr7um](https://redirect.github.com/ExEr7um))
- xjccc ([@xjccc](https://redirect.github.com/xjccc))
- Martin Andrรฉ ([@Martichou](https://redirect.github.com/Martichou))
- Mike Laumann Bellika ([@MikeBellika](https://redirect.github.com/MikeBellika))
- Typed SIGTERM ([@typed-sigterm](https://redirect.github.com/typed-sigterm))
- Horu ([@HigherOrderLogic](https://redirect.github.com/HigherOrderLogic))
- Son Tran ([@trandaison](https://redirect.github.com/trandaison))
- rubyisrust ([@rubyisrust](https://redirect.github.com/rubyisrust))
- Matej ฤernรฝ ([@CernyMatej](https://redirect.github.com/CernyMatej))
- Riley Ho ([@rileychh](https://redirect.github.com/rileychh))
- Adam DeHaven ([@adamdehaven](https://redirect.github.com/adamdehaven))
- Potter ([@yxw007](https://redirect.github.com/yxw007))
- Martin Masevski ([@Archetipo95](https://redirect.github.com/Archetipo95))
- BoogieBen. ([@boogie-ben](https://redirect.github.com/boogie-ben))
- Tobias Diez ([@tobiasdiez](https://redirect.github.com/tobiasdiez))
- Michael Brevard ([@GalacticHypernova](https://redirect.github.com/GalacticHypernova))
- Damian Gลowala ([@DamianGlowala](https://redirect.github.com/DamianGlowala))
- Lucie ([@lihbr](https://redirect.github.com/lihbr))
- Yasser Lahbibi ([@yassilah](https://redirect.github.com/yassilah))
- Sรฉbastien Chopin ([@atinux](https://redirect.github.com/atinux))
- [@beer](https://redirect.github.com/beer) ([@iiio2](https://redirect.github.com/iiio2))
- AuroraTea ([@AuroraTea](https://redirect.github.com/AuroraTea))
- Bobbie Goede ([@BobbieGoede](https://redirect.github.com/BobbieGoede))
- Alexander Lichter ([@manniL](https://redirect.github.com/manniL))
- nuxt-studio\[bot] ([@nuxt-studio](https://redirect.github.com/nuxt-studio)\[bot])
- Vaci ([@vacijj](https://redirect.github.com/vacijj))
- FELIPE COSTA DE OLIVEIRA ([@FelipeO16](https://redirect.github.com/FelipeO16))
- ไธ็บธๅฟๅฟง ([@ikxin](https://redirect.github.com/ikxin))
- Meo ([@miaobuao](https://redirect.github.com/miaobuao))
- Mohab Sameh ([@mohab-sameh](https://redirect.github.com/mohab-sameh))
- Quentin Macq ([@quentinmcq](https://redirect.github.com/quentinmcq))
- Johan Krijt ([@johankrijt](https://redirect.github.com/johankrijt))
### [`v3.12.4`](https://redirect.github.com/nuxt/nuxt/releases/tag/v3.12.4)
[Compare Source](https://redirect.github.com/nuxt/nuxt/compare/v3.12.3...v3.12.4)
> 3.12.4 is the next regularly scheduled patch release.
#### ๐ Changelog
[compare changes](https://redirect.github.com/nuxt/nuxt/compare/v3.12.3...v3.12.4)
##### ๐ฅ Performance
- **vite:** Start warmups after nitro build ([#27963](https://redirect.github.com/nuxt/nuxt/pull/27963))
- **vite:** Avoid extra resolve call for `resolveId` in layers ([#27971](https://redirect.github.com/nuxt/nuxt/pull/27971))
- **kit,nuxt,schema,vite,webpack:** Use explicit exports ([#27998](https://redirect.github.com/nuxt/nuxt/pull/27998))
##### ๐ฉน Fixes
- **schema:** Resolve public alias correctly ([#27975](https://redirect.github.com/nuxt/nuxt/pull/27975))
- **nuxt:** Omit rendering payload prefetch when `noScripts` ([#27972](https://redirect.github.com/nuxt/nuxt/pull/27972))
- **nuxt:** Add `/` as fallback if page can't be identified ([e6109b226](https://redirect.github.com/nuxt/nuxt/commit/e6109b226))
- **ui-templates:** Validate templates with `html-validate` ([#28024](https://redirect.github.com/nuxt/nuxt/pull/28024))
- **schema:** Don't constrain postcss plugin options ([#28045](https://redirect.github.com/nuxt/nuxt/pull/28045))
- **kit:** Remove exports from v4 branch ([5c8312e9b](https://redirect.github.com/nuxt/nuxt/commit/5c8312e9b))
- **nuxt:** Use `unhead` key for ad-hoc module options ([#28088](https://redirect.github.com/nuxt/nuxt/pull/28088))
- **nuxt:** Use native vue-router composables ([#28114](https://redirect.github.com/nuxt/nuxt/pull/28114))
- **kit:** Ensure `getNuxtVersion` returns `string` ([#28125](https://redirect.github.com/nuxt/nuxt/pull/28125))
- **nuxt:** Always prerender at least one page with crawler ([#28131](https://redirect.github.com/nuxt/nuxt/pull/28131))
- **nuxt:** Consider doc `scroll-padding-top` in scrollBehavior ([#28083](https://redirect.github.com/nuxt/nuxt/pull/28083))
- **nuxt:** Only warn when `useAsyncData` returns undefined ([#28154](https://redirect.github.com/nuxt/nuxt/pull/28154))
- **nuxt:** Revert change to `getCachedData` null response ([d10cea11b](https://redirect.github.com/nuxt/nuxt/commit/d10cea11b))
- **schema:** Don't use `app/` as `srcDir` if it doesn't exist ([#28176](https://redirect.github.com/nuxt/nuxt/pull/28176))
- **kit:** Normalise `serverDir` within layers using v4 compat ([#28177](https://redirect.github.com/nuxt/nuxt/pull/28177))
- **nuxt:** Allow `getCachedData` to return undefined ([#28187](https://redirect.github.com/nuxt/nuxt/pull/28187))
- **nuxt:** Use `addEventListener` to register cookie store listener ([#28193](https://redirect.github.com/nuxt/nuxt/pull/28193))
- **nuxt:** Merge route meta properties with scanned meta ([#28170](https://redirect.github.com/nuxt/nuxt/pull/28170))
- **nuxt:** Prevent duplicate `set-cookie` headers ([#28211](https://redirect.github.com/nuxt/nuxt/pull/28211))
##### ๐ Refactors
- **schema,vite,webpack:** Rework `postcss` module loading ([#27946](https://redirect.github.com/nuxt/nuxt/pull/27946))
- **nuxt:** Remove `_registeredComponents` from ssrContext ([#27819](https://redirect.github.com/nuxt/nuxt/pull/27819))
- **nuxt:** Use `errx` to handle dev log traces ([#28027](https://redirect.github.com/nuxt/nuxt/pull/28027))
##### ๐ Documentation
- Fix link ([83bd4fde9](https://redirect.github.com/nuxt/nuxt/commit/83bd4fde9))
- Fix Cloudflare spelling ([#27989](https://redirect.github.com/nuxt/nuxt/pull/27989))
- Update example to use `nuxtApp.runWithContext` ([#28000](https://redirect.github.com/nuxt/nuxt/pull/28000))
- Remove deprecated `pending` variable from data fetching docs ([#28011](https://redirect.github.com/nuxt/nuxt/pull/28011))
- Clarify xrsp danger ([#28053](https://redirect.github.com/nuxt/nuxt/pull/28053))
- Deprecate pending and emphasis undefined ([#28113](https://redirect.github.com/nuxt/nuxt/pull/28113))
- Update phrasing in route announcer ([#28108](https://redirect.github.com/nuxt/nuxt/pull/28108))
- Use code groups for install commands in module guide ([#28094](https://redirect.github.com/nuxt/nuxt/pull/28094))
- Capitalize text ([#28056](https://redirect.github.com/nuxt/nuxt/pull/28056))
- Mention content in upgrade guide v4 folder structure ([#28090](https://redirect.github.com/nuxt/nuxt/pull/28090))
- Remove a resolved issue from view transition docs ([#28091](https://redirect.github.com/nuxt/nuxt/pull/28091))
- Clarify navigateTo is not for nitro routes ([#28092](https://redirect.github.com/nuxt/nuxt/pull/28092))
- Warn about nested islands ([#28062](https://redirect.github.com/nuxt/nuxt/pull/28062))
- Add info about `layers/` directory ([#28128](https://redirect.github.com/nuxt/nuxt/pull/28128))
- Codemods for migrating to Nuxt 4 ([#28072](https://redirect.github.com/nuxt/nuxt/pull/28072))
##### โ Tests
- Add `typeCheck` test in minimal build ([#28166](https://redirect.github.com/nuxt/nuxt/pull/28166))
##### ๐ค CI
- Run prepare step before linting docs ([f8fbefb42](https://redirect.github.com/nuxt/nuxt/commit/f8fbefb42))
- Run prepare step before linting docs ([d629b82b3](https://redirect.github.com/nuxt/nuxt/commit/d629b82b3))
##### โค๏ธ Contributors
- Daniel Roe ([@danielroe](https://redirect.github.com/danielroe))
- arshcodemod ([@arshcodemod](https://redirect.github.com/arshcodemod))
- xjccc ([@xjccc](https://redirect.github.com/xjccc))
- Julien Huang ([@huang-julien](https://redirect.github.com/huang-julien))
- BoogieBen ([@boogie-ben](https://redirect.github.com/boogie-ben))
- Santiago A ([@santiagoaloi](https://redirect.github.com/santiagoaloi))
- Bobbie Goede ([@BobbieGoede](https://redirect.github.com/BobbieGoede))
- John Tanzer ([@moshetanzer](https://redirect.github.com/moshetanzer))
- Thomas ([@ThomasWT](https://redirect.github.com/ThomasWT))
- [@beer](https://redirect.github.com/beer) ([@iiio2](https://redirect.github.com/iiio2))
- Dominic ([@rexhent](https://redirect.github.com/rexhent))
- Alex Liu ([@Mini-ghost](https://redirect.github.com/Mini-ghost))
- Florian Metz ([@Timeraa](https://redirect.github.com/Timeraa))
- Liran Tal ([@lirantal](https://redirect.github.com/lirantal))
- Daniel Kelly ([@danielkellyio](https://redirect.github.com/danielkellyio))
- Daniel Flanagan ([@FlantasticDan](https://redirect.github.com/FlantasticDan))
- ๅฑฑๅน่ฒๅพกๅฎ ([@KazariEX](https://redirect.github.com/KazariEX))
- izzy goldman ([@izzygld](https://redirect.github.com/izzygld))
- Anthony Fu ([@antfu](https://redirect.github.com/antfu))
### [`v3.12.3`](https://redirect.github.com/nuxt/nuxt/releases/tag/v3.12.3)
[Compare Source](https://redirect.github.com/nuxt/nuxt/compare/v3.12.2...v3.12.3)
> 3.12.3 is the next regularly scheduled patch release.
#### ๐ Changelog
[compare changes](https://redirect.github.com/nuxt/nuxt/compare/v3.12.2...v3.12.3)
##### ๐ฅ Performance
- **nuxt,vite:** Use native fs utils rather than `fs-extra` ([#27787](https://redirect.github.com/nuxt/nuxt/pull/27787))
- **schema:** Use `chokidar` when a custom `srcDir` is provided ([#27871](https://redirect.github.com/nuxt/nuxt/pull/27871))
- **nuxt:** Ensure `prefetchComponents` is treeshaken on server ([#27905](https://redirect.github.com/nuxt/nuxt/pull/27905))
##### ๐ฉน Fixes
- **nuxt:** Flag async data promise as cancelled only if defined ([#27690](https://redirect.github.com/nuxt/nuxt/pull/27690))
- **schema:** Handle backwards compat for `dir.app` ([0c73cb734](https://redirect.github.com/nuxt/nuxt/commit/0c73cb734))
- **nuxt:** Support hoisting types of subpath imports ([#27720](https://redirect.github.com/nuxt/nuxt/pull/27720))
- **nuxt:** Resolve routes when `navigateTo` called with `open` ([#27742](https://redirect.github.com/nuxt/nuxt/pull/27742))
- **nuxt:** Handle subpaths more correctly ([d7402a799](https://redirect.github.com/nuxt/nuxt/commit/d7402a799))
- **nuxt:** Delay navigation until user input is acknowledged ([#27743](https://redirect.github.com/nuxt/nuxt/pull/27743))
- **nuxt:** Resolve aliases used in nitro plugin paths ([#27741](https://redirect.github.com/nuxt/nuxt/pull/27741))
- **schema:** Do not use full path assets/public aliases ([d0518650f](https://redirect.github.com/nuxt/nuxt/commit/d0518650f))
- **nuxt:** Defer registering inp handler until nuxt is mounted ([866a5319a](https://redirect.github.com/nuxt/nuxt/commit/866a5319a))
- **nuxt:** Add `refresh` type in server component refs ([#27778](https://redirect.github.com/nuxt/nuxt/pull/27778))
- **nuxt:** Extract all-literal page meta ([#27821](https://redirect.github.com/nuxt/nuxt/pull/27821))
- **kit:** Handle loading nuxt 4+ ([cf251bd48](https://redirect.github.com/nuxt/nuxt/commit/cf251bd48))
- **nuxt:** Handle external links to named route objects ([#27829](https://redirect.github.com/nuxt/nuxt/pull/27829))
- **nuxt:** Use URL to encode redirected URLs ([#27822](https://redirect.github.com/nuxt/nuxt/pull/27822))
- **nuxt:** Don't use app version when verifying nuxt deps ([#27864](https://redirect.github.com/nuxt/nuxt/pull/27864))
- **nuxt:** Prompt to set compatibility date with latest nitro ([#27893](https://redirect.github.com/nuxt/nuxt/pull/27893))
- **nuxt:** Add `#vue-router` alias for backwards compat ([#27896](https://redirect.github.com/nuxt/nuxt/pull/27896))
- **nuxt:** Move app augments to core `nuxt` types ([#27900](https://redirect.github.com/nuxt/nuxt/pull/27900))
- **nuxt:** Pass augmented pages to child paths ([ecb35d3a2](https://redirect.github.com/nuxt/nuxt/commit/ecb35d3a2))
- **nuxt:** Use pascal name when loading server component ([#27928](https://redirect.github.com/nuxt/nuxt/pull/27928))
- **nuxt:** Improve async data warning ([#27874](https://redirect.github.com/nuxt/nuxt/pull/27874), [#27934](https://redirect.github.com/nuxt/nuxt/pull/27934))
- **nuxt:** Allow configuring server components in modules ([#27936](https://redirect.github.com/nuxt/nuxt/pull/27936))
- **vite:** Omit css `?raw` from head when in dev mode ([#27940](https://redirect.github.com/nuxt/nuxt/pull/27940))
- **kit,nuxt:** Ensure webworker types are available ([4cab71d66](https://redirect.github.com/nuxt/nuxt/commit/4cab71d66))
- **nuxt:** Seed crawler when prerendering pages ([#27955](https://redirect.github.com/nuxt/nuxt/pull/27955))
- **vite:** Fix type issue with legacy dev bundler ([f9fa1a3e9](https://redirect.github.com/nuxt/nuxt/commit/f9fa1a3e9))
- **nuxt:** Improve dx around compatibility date prompt ([#27965](https://redirect.github.com/nuxt/nuxt/pull/27965))
##### ๐ Refactors
- **kit,nuxt:** Use `performance.now` to measure time ([d14f7ec46](https://redirect.github.com/nuxt/nuxt/commit/d14f7ec46))
##### ๐ Documentation
- Add referral query variable to Vue School Links ([#27670](https://redirect.github.com/nuxt/nuxt/pull/27670))
- Fix variable name ([#27675](https://redirect.github.com/nuxt/nuxt/pull/27675))
- Clarify how transitions are configured globally ([#27679](https://redirect.github.com/nuxt/nuxt/pull/27679))
- Remove outdated recommendation ([#27691](https://redirect.github.com/nuxt/nuxt/pull/27691))
- Add `refreshCookie` on `useCookie` doc page ([#27744](https://redirect.github.com/nuxt/nuxt/pull/27744))
- Sync changes from `main` branch ([e7fbc9f81](https://redirect.github.com/nuxt/nuxt/commit/e7fbc9f81))
- Remove outdated tip ([#27773](https://redirect.github.com/nuxt/nuxt/pull/27773))
- Warn about awaiting `useFetch`/`AsyncData` in wrappers ([#27785](https://redirect.github.com/nuxt/nuxt/pull/27785))
- Update some code groups with package manager examples ([#27791](https://redirect.github.com/nuxt/nuxt/pull/27791))
- Hint to use runtime config ([#27859](https://redirect.github.com/nuxt/nuxt/pull/27859))
- Use internal link ([#27883](https://redirect.github.com/nuxt/nuxt/pull/27883))
- Update links to `vue-router` docs ([#27895](https://redirect.github.com/nuxt/nuxt/pull/27895))
- Use internal link ([#27894](https://redirect.github.com/nuxt/nuxt/pull/27894))
- Remove warning about type checking ([#27911](https://redirect.github.com/nuxt/nuxt/pull/27911))
- `compatibilityVersion` is available in the latest release ([#27919](https://redirect.github.com/nuxt/nuxt/pull/27919))
- Update roadmap + readme ([748bc751d](https://redirect.github.com/nuxt/nuxt/commit/748bc751d))
- Update `Nuxt 3` -> `Nuxt` or `Nuxt 3+` ([3c16c890c](https://redirect.github.com/nuxt/nuxt/commit/3c16c890c))
- Update reference to nightly release for testing nuxt 4 ([5d2dc9714](https://redirect.github.com/nuxt/nuxt/commit/5d2dc9714))
- Remove duplicate server-side notice in runtime config ([#27929](https://redirect.github.com/nuxt/nuxt/pull/27929))
- Warn about ref unwrapping when auto-importing `ref`s ([#27933](https://redirect.github.com/nuxt/nuxt/pull/27933))
- Mention layers in directory guide ([c222fe7aa](https://redirect.github.com/nuxt/nuxt/commit/c222fe7aa))
##### ๐ก Chore
- Use absolute urls for sources to assets in readme ([5ef305cec](https://redirect.github.com/nuxt/nuxt/commit/5ef305cec))
- Use relative links and update in build script ([7dd15186e](https://redirect.github.com/nuxt/nuxt/commit/7dd15186e))
- Use backup file extension ([a42a3869b](https://redirect.github.com/nuxt/nuxt/commit/a42a3869b))
- Allow changelogs with breaking changes ([e11587189](https://redirect.github.com/nuxt/nuxt/commit/e11587189))
- Allow major bumps ([dea0b86c7](https://redirect.github.com/nuxt/nuxt/commit/dea0b86c7))
- Add `4x` tag for v4 nightly releases ([9d5dd5494](https://redirect.github.com/nuxt/nuxt/commit/9d5dd5494))
- **vite:** Restore utils required for `dev-bundler` ([e3448fa0d](https://redirect.github.com/nuxt/nuxt/commit/e3448fa0d))
- Remove nitro/h3 from renovate, and reenable vitejs/vue ([9037b0d2c](https://redirect.github.com/nuxt/nuxt/commit/9037b0d2c))
- Improve type safety with indexed access ([#27626](https://redirect.github.com/nuxt/nuxt/pull/27626))
- Add [@danielroe](https://redirect.github.com/danielroe) to code owners ([7fa957729](https://redirect.github.com/nuxt/nuxt/commit/7fa957729))
- Remove renovate configuration from `2.x` branch ([8003cf72f](https://redirect.github.com/nuxt/nuxt/commit/8003cf72f))
- Remove issue template for 2.x ([9f9fb9251](https://redirect.github.com/nuxt/nuxt/commit/9f9fb9251))
- Remove unused variable ([f07969d88](https://redirect.github.com/nuxt/nuxt/commit/f07969d88))
##### โ Tests
- **schema:** Normalize snapshot paths for windows ([#27654](https://redirect.github.com/nuxt/nuxt/pull/27654))
- **nuxt:** Normalize paths for windows ([#27653](https://redirect.github.com/nuxt/nuxt/pull/27653))
- Bump timeout for node-compat test ([228b8b889](https://redirect.github.com/nuxt/nuxt/commit/228b8b889))
- Slightly improve test reliability ([#27811](https://redirect.github.com/nuxt/nuxt/pull/27811))
##### ๐ค CI
- Update changelog from 3.x branch updates ([2b6967fbb](https://redirect.github.com/nuxt/nuxt/commit/2b6967fbb))
- Add 3x tag instead ([c0ef279f2](https://redirect.github.com/nuxt/nuxt/commit/c0ef279f2))
- Run workflows against 3.x branch as well ([31255a14d](https://redirect.github.com/nuxt/nuxt/commit/31255a14d))
- Use correct SHA calculation for release-pr action ([#27604](https://redirect.github.com/nuxt/nuxt/pull/27604))
- Resolve bash syntax error ([#27789](https://redirect.github.com/nuxt/nuxt/pull/27789))
- Only run scorecards against `main` branch ([7abd982f8](https://redirect.github.com/nuxt/nuxt/commit/7abd982f8))
- Raise renovate prs against 3.x branch too ([f176c150a](https://redirect.github.com/nuxt/nuxt/commit/f176c150a))
- Ignore `@vitejs/plugin-vue` again ([56660cbdd](https://redirect.github.com/nuxt/nuxt/commit/56660cbdd))
- Prevent more than one release from occurring at same time ([71705550f](https://redirect.github.com/nuxt/nuxt/commit/71705550f))
- Don't run changelog update on 2.x branch ([1be639364](https://redirect.github.com/nuxt/nuxt/commit/1be639364))
##### โค๏ธ Contributors
- Daniel Roe ([@danielroe](https://redirect.github.com/danielroe))
- Typed SIGTERM ([@typed-sigterm](https://redirect.github.com/typed-sigterm))
- Seno ([@s-en-o](https://redirect.github.com/s-en-o))
- Julien Huang ([@huang-julien](https://redirect.github.com/huang-julien))
- Michael Brevard ([@GalacticHypernova](https://redirect.github.com/GalacticHypernova))
- Ryota Watanabe ([@wattanx](https://redirect.github.com/wattanx))
- Martin Masevski ([@Archetipo95](https://redirect.github.com/Archetipo95))
- Alex Liu ([@Mini-ghost](https://redirect.github.com/Mini-ghost))
- Bochkarev Ivan ([@Ibochkarev](https://redirect.github.com/Ibochkarev))
- Alexander Lichter ([@manniL](https://redirect.github.com/manniL))
- Dominic ([@rexhent](https://redirect.github.com/rexhent))
- Aviv Keller ([@RedYetiDev](https://redirect.github.com/RedYetiDev))
- Maxime Pauvert ([@maximepvrt](https://redirect.github.com/maximepvrt))
- Daniel Kelly ([@danielkellyio](https://redirect.github.com/danielkellyio))
- Damian Gลowala ([@DamianGlowala](https://redirect.github.com/DamianGlowala))
- Idorenyin Udoh ([@idorenyinudoh](https://redirect.github.com/idorenyinudoh))
### [`v3.12.2`](https://redirect.github.com/nuxt/nuxt/releases/tag/v3.12.2)
[Compare Source](https://redirect.github.com/nuxt/nuxt/compare/v3.12.1...v3.12.2)
> 3.12.2 is the a regularly scheduled patch release.
##### โ Upgrading
As usual, our recommendation for upgrading is to run:
```sh
npx nuxi@latest upgrade --force
```
This will refresh your lockfile as well, and ensures that you pull in updates from other dependencies that Nuxt relies on, particularly in the unjs ecosystem.
##### ๐ Changelog
[compare changes](https://redirect.github.com/nuxt/nuxt/compare/v3.12.1...v3.12.2)
##### ๐ฅ Performance
- **kit:** Deduplicate layers before resolving config ([#27582](https://redirect.github.com/nuxt/nuxt/pull/27582))
- **webpack:** Decrease assets map iterations ([d929cd4ef](https://redirect.github.com/nuxt/nuxt/commit/d929cd4ef))
- **kit:** Various performance improvements ([#27600](https://redirect.github.com/nuxt/nuxt/pull/27600))
- **vite:** Various performance improvements ([#27601](https://redirect.github.com/nuxt/nuxt/pull/27601))
- **nuxt:** Don't wait for key deps check ([#27638](https://redirect.github.com/nuxt/nuxt/pull/27638))
##### ๐ฉน Fixes
- **nuxt:** Call `onNuxtReady` callback without arguments ([#27428](https://redirect.github.com/nuxt/nuxt/pull/27428))
- **schema:** Don't narrow head string types to literals ([#27540](https://redirect.github.com/nuxt/nuxt/pull/27540))
- **schema:** `app/` dir backwards compatibility ([#27529](https://redirect.github.com/nuxt/nuxt/pull/27529))
- **nuxt:** Manually assign payload reactivity when `ssr: false` ([#27542](https://redirect.github.com/nuxt/nuxt/pull/27542))
- **nuxt:** Only log warning once per `runtimeConfig` key ([9e56b60c6](https://redirect.github.com/nuxt/nuxt/commit/9e56b60c6))
- **nuxt:** Overwrite `#app/defaults` rather than augmenting ([#27567](https://redirect.github.com/nuxt/nuxt/pull/27567))
- **nuxt:** Export `useRouteAnnouncer` ([#27562](https://redirect.github.com/nuxt/nuxt/pull/27562))
- **nuxt:** Remove backticks around runtimeConfig warning log ([#27549](https://redirect.github.com/nuxt/nuxt/pull/27549))
- **nuxt:** Close top-level watcher on nuxt 'close' ([#27571](https://redirect.github.com/nuxt/nuxt/pull/27571))
- **nuxt:** Handle tsx code when extracting pageMeta/routeRules ([#27583](https://redirect.github.com/nuxt/nuxt/pull/27583))
- **nuxt:** Handle more edge cases with external/custom links ([#27487](https://redirect.github.com/nuxt/nuxt/pull/27487))
- **nuxt:** Preserve route metadata assigned outside page ([#27587](https://redirect.github.com/nuxt/nuxt/pull/27587))
- **nuxt:** Use portal to sync nitro/nuxt runtimeConfig + routeRules ([#27596](https://redirect.github.com/nuxt/nuxt/pull/27596))
- **nuxt,schema:** Add types for `_installedModules` ([e4bfea642](https://redirect.github.com/nuxt/nuxt/commit/e4bfea642))
- **nuxt:** Include build-time pages in prerender routes ([#27569](https://redirect.github.com/nuxt/nuxt/pull/27569))
- **nuxt:** Warn when async data doesn't return a value ([#27599](https://redirect.github.com/nuxt/nuxt/pull/27599))
- **nuxt:** Replace deprecated `app.rootId` with `app.rootAttrs.id` ([#27630](https://redirect.github.com/nuxt/nuxt/pull/27630))
- **nuxt:** Add `mergeProps` import in islands transform ([#27622](https://redirect.github.com/nuxt/nuxt/pull/27622))
- **nuxt:** Reset cookie timeoutLength after expiration ([#27632](https://redirect.github.com/nuxt/nuxt/pull/27632))
- **nuxt:** Add missing island uid for selective client components ([#27633](https://redirect.github.com/nuxt/nuxt/pull/27633))
- **schema,vite:** Respect `vite.cacheDir` if defined ([#27628](https://redirect.github.com/nuxt/nuxt/pull/27628))
- **nuxt:** Unregister hooks the moment `close` is called ([#27637](https://redirect.github.com/nuxt/nuxt/pull/27637))
- **nuxt:** Add missing script stubs ([#27640](https://redirect.github.com/nuxt/nuxt/pull/27640))
- **nuxt:** Only inject root path in prerender ([44cada95a](https://redirect.github.com/nuxt/nuxt/commit/44cada95a))
- **nuxt:** Reduce usage of cjs utilities ([#27642](https://redirect.github.com/nuxt/nuxt/pull/27642))
- **nuxt:** Add `/` even if pages module isn't enabled ([dabcb5ecc](https://redirect.github.com/nuxt/nuxt/commit/dabcb5ecc))
##### ๐ Documentation
- Add warning about bridge migration with `head` ([#27575](https://redirect.github.com/nuxt/nuxt/pull/27575))
- Update compatibility example ([4b28d2628](https://redirect.github.com/nuxt/nuxt/commit/4b28d2628))
- Document new `clear()` function added in 3.11 ([#27615](https://redirect.github.com/nuxt/nuxt/pull/27615))
- String vs object errors + accessing data of server-thrown errors ([#27398](https://redirect.github.com/nuxt/nuxt/pull/27398))
- Correct Cloudflare deployment recommendations ([#27641](https://redirect.github.com/nuxt/nuxt/pull/27641))
##### ๐ก Chore
- Add extra types for empty array definitions ([02945b9fa](https://redirect.github.com/nuxt/nuxt/commit/02945b9fa))
- Remove stub types file for `webpack-virtual-modules` ([58dd7f3a6](https://redirect.github.com/nuxt/nuxt/commit/58dd7f3a6))
- Lint ([cb77ddc30](https://redirect.github.com/nuxt/nuxt/commit/cb77ddc30))
##### โ Tests
- Add type test for nuxt module resolved types ([115fc2d18](https://redirect.github.com/nuxt/nuxt/commit/115fc2d18))
##### ๐ค CI
- Improve generated changelog ([d20266961](https://redirect.github.com/nuxt/nuxt/commit/d20266961))
##### โค๏ธ Contributors
- Daniel Roe ([@danielroe](https://redirect.github.com/danielroe))
- Julien Huang ([@huang-julien](https://redirect.github.com/huang-julien))
- Alexandru Ungureanu ([@unguul](https://redirect.github.com/unguul))
- Josh Dean ([@jdbdnz](https://redirect.github.com/jdbdnz))
- Yusuf Mansur รzer ([@ymansurozer](https://redirect.github.com/ymansurozer))
- Matteo Rigoni ([@Rigo-m](https://redirect.github.com/Rigo-m))
- Leo Osa ([@leoosa](https://redirect.github.com/leoosa))
- Levi (Nguyแป n Lฦฐฦกng Huy) ([@huynl-96](https://redirect.github.com/huynl-96))
- David Nahodyl ([@Smef](https://redirect.github.com/Smef))
- Michael Brevard ([@GalacticHypernova](https://redirect.github.com/GalacticHypernova))
- garthreckers ([@garthreckers](https://redirect.github.com/garthreckers))
- Valerii Strilets ([@letstri](https://redirect.github.com/letstri))
- Okuto Oyama ([@yamanoku](https://redirect.github.com/yamanoku))
- Harlan Wilton ([@harlan-zw](https://redirect.github.com/harlan-zw))
### [`v3.12.1`](https://redirect.github.com/nuxt/nuxt/releases/tag/v3.12.1)
[Compare Source](https://redirect.github.com/nuxt/nuxt/compare/v3.12.0...v3.12.1)
> 3.12.1 is a hotfix release to address a typo in the nuxt/script stub auto-imports.
#### ๐ Changelog
[compare changes](https://redirect.github.com/nuxt/nuxt/compare/v3.12.0...v3.12.1)
##### ๐ฉน Fixes
- **nuxt:** Update registry list for `@nuxt/scripts` ([0252000d7](https://redirect.github.com/nuxt/nuxt/commit/0252000d7))
##### ๐ Refactors
- **schema:** Use `CompatibilityDateSpec` ([#27521](https://redirect.github.com/nuxt/nuxt/pull/27521))
##### ๐ Documentation
- Update more references to v3.12 ([1d2eee00d](https://redirect.github.com/nuxt/nuxt/commit/1d2eee00d))
- Mention 3.12 for testing nuxt 4 ([#27525](https://redirect.github.com/nuxt/nuxt/pull/27525))
##### ๐ก Chore
- Fix release script ([7777f0564](https://redirect.github.com/nuxt/nuxt/commit/7777f0564))
- Lint ([24b8533e7](https://redirect.github.com/nuxt/nuxt/commit/24b8533e7))
- Bump `nuxi` dependency ([#27526](https://redirect.github.com/nuxt/nuxt/pull/27526))
##### โ Tests
- Update scrolling test ([52b85a886](https://redirect.github.com/nuxt/nuxt/commit/52b85a886))
##### โค๏ธ Contributors
- Daniel Roe ([@danielroe](https://redirect.github.com/danielroe))
- Pooya Parsa ([@pi0](https://redirect.github.com/pi0))
- Alexander Lichter ([@manniL](https://redirect.github.com/manniL))
### [`v3.12.0`](https://redirect.github.com/nuxt/nuxt/releases/tag/v3.12.0)
[Compare Source](https://redirect.github.com/nuxt/nuxt/compare/v3.11.2...v3.12.0)
#### ๐ Highlights
We're on the road to the release of Nuxt 4, but we've not held back in Nuxt v3.12. A huge thank you to the 75+ Nuxt contributors and community members who have been part of this release. โค๏ธ
##### ๐ Testing Nuxt 4 changes
Nuxt 4 is on the horizon, and it's now possible to test out the behaviour changes that will be coming in the next major release ([#26925](https://redirect.github.com/nuxt/nuxt/pull/26925)) by setting an option in your `nuxt.config` file:
```ts
export default defineNuxtConfig({
future: {
compatibilityVersion: 4,
},
})
```
As we've been merging PRs for Nuxt 4, we've been enabling them behind this flag. As much as possible we're aiming for backwards compatibility - our test matrix is running the same fixtures in both v3 and v4 compatibility mode.
There is a lot to say here, with 10+ different PRs and behaviour changes documented and testable, but for full details, including migration steps, see [the v4 upgrade documentation](https://nuxt.com/docs/getting-started/upgrade#testing-nuxt-4).
We'd be very grateful for early testing of what's coming in Nuxt 4! ๐
##### ๐ Nuxt Scripts auto-install
We've been gradually working to release [Nuxt Scripts](https://scripts.nuxt.com/). It's currently in public preview, but we're near a public release, so we've added some stubs for composables that (when used) will prompt installing the `@nuxt/scripts` module.
๐ Watch out for the launch - and an article explaining more!
##### ๐ Layer auto-registration and bugfixes
Just like `~/modules`, any layers within your project in the `~/layers` directory will now be automatically registered as layers in your project ([#27221](https://redirect.github.com/nuxt/nuxt/pull/27221)).
We also now correctly load layer dependencies, which should resolve a range of issues with monorepos and git installations ([#27338](https://redirect.github.com/nuxt/nuxt/pull/27338)).
##### ๐ Built-in accessibility improvements
We now have a built-in [``](https://nuxt.com/docs/api/components/nuxt-route-announcer) component and corresponding [`useRouteAnnouncer`](https://nuxt.com/docs/api/composables/use-route-announcer) composable, which will be added by default to new Nuxt templates going forward.
For full details, see [the original PR (#25741)](https://redirect.github.com/nuxt/nuxt/pull/25741) and [documentation](https://nuxt.com/docs/api/components/nuxt-route-announcer).
We're continuing to work on `nuxt/a11y` - expect to hear more on that in future!
##### ๐ฅ Performance improvements
We've landed some performance improvements as well, many of which are behind the `compatibilityVersion: 4` flag, such as a move away from deeply reactive asyncData payloads.
Significant improvements include deduplicating modules ([#27475](https://redirect.github.com/nuxt/nuxt/pull/27475)) - which will apply mostly to layer users who specify modules in their layers. In one project, we saw 30s+ improvement in starting Nuxt.
We've also improved Vite dev server start up time by excluding common ESM dependencies from pre-bundling, and would suggest module authors consider doing the same ([#27372](https://redirect.github.com/nuxt/nuxt/pull/27372)).
We improved chunk determinism, so sequential builds should be less likely to have *completely* different chunk hashes ([#27258](https://redirect.github.com/nuxt/nuxt/pull/27258)).
And we tree shake more client-only composables from your server builds ([#27044](https://redirect.github.com/nuxt/nuxt/pull/27044)), and have reduced the size of server component payloads ([#26863](https://redirect.github.com/nuxt/nuxt/pull/26863)).
##### ๐จโ๐ฉโ๐งโ๐ฆ Multi-app support
We've landed a couple of changes that take us toward a place of supporting multi-app natively in Nuxt, including a `multiApp` experimental flag ([#27291](https://redirect.github.com/nuxt/nuxt/pull/27291)) and the ability to have multiple Nuxt app instances running in parallel at runtime ([#27068](https://redirect.github.com/nuxt/nuxt/pull/27068)).
While it's not yet ready, please do follow along on [the tracker issue](https://redirect.github.com/nuxt/nuxt/issues/21635), and feel free to pitch in if this is interesting to you.
##### โ๏ธ DX wins
We now serialise more things in your dev server logs, including VNodes ([#27309](https://redirect.github.com/nuxt/nuxt/pull/27309)) and [URLs](https://redirect.github.com/nuxt/nuxt/commit/a549b46e9). We also addressed a bug that could lead to a frozen dev server.
When accessing private runtime config in the browser, we now let you know with a more informative error message ([#26441](https://redirect.github.com/nuxt/nuxt/pull/26441)).
##### ๐ชจ Stabilising features
We've removed some experimental options that have been stabilised and which we feel no longer need to be configurable:
- `experimental.treeshakeClientOnly` (enabled by default since v3.0.0)
- `experimental.configSchema` (enabled by default since v3.3.0)
- `experimental.polyfillVueUseHead` (disabled since v3.4.0) - implementable in user-land with [plugin](https://redirect.github.com/nuxt/nuxt/blob/f209158352b09d1986aa320e29ff36353b91c358/packages/nuxt/src/head/runtime/plugins/vueuse-head-polyfill.ts#L10-L11)
- `experimental.respectNoSSRHeader` (disabled since v3.4.0) - implementable in user-land with [server middleware](https://redirect.github.com/nuxt/nuxt/blob/c660b39447f0d5b8790c0826092638d321cd6821/packages/nuxt/src/core/runtime/nitro/no-ssr.ts#L8-L9)
We've also enabled `scanPageMeta` by default ([#27134](https://redirect.github.com/nuxt/nuxt/pull/27134)). This pulls out any page metadata in your `definePageMeta` macro, and makes it available to modules (like `@nuxtjs/i18n`) so they can augment it.
This unlocks much better module/typed routing integration, but has a potential performance cost - so please file an issue if you experience any problems.
##### ๐ช Type improvements
We now have support for typed `#fallback` slots in server components ([#27097](https://redirect.github.com/nuxt/nuxt/pull/27097)).
We've also improved some defaults in your generated `tsconfig.json`, including setting `module: 'preserve'` if you have a locally installed TypeScript v5.4 version ([see docs](https://www.typescriptlang.org/tsconfig/#preserve)) - see [#26667](https://redirect.github.com/nuxt/nuxt/26667), [#27485](https://redirect.github.com/nuxt/nuxt/27485).
###
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.
๐ป Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
^3.11.2
->^3.13.1
^3.12.1
->^3.14.1
^3.11.2
->^3.13.1
Release Notes
nuxt/nuxt (@nuxt/kit)
### [`v3.13.1`](https://redirect.github.com/nuxt/nuxt/releases/tag/v3.13.1) [Compare Source](https://redirect.github.com/nuxt/nuxt/compare/v3.13.0...v3.13.1) > 3.12.4 is the next regularly scheduled patch release. #### ๐ Highlights Although this is a patch release, there are two features I'd love to draw your attention to. 1. ๐ `useId` now uses a built-in Vue composable for stable ids between server + client! [https://github.com/nuxt/nuxt/pull/28285](https://redirect.github.com/nuxt/nuxt/pull/28285) 2. ๐ฅ a new `experimental.buildCache` feature now allows for quicker app rebuilds [https://github.com/nuxt/nuxt/pull/28726](https://redirect.github.com/nuxt/nuxt/pull/28726) As always, feedback is appreciated ๐ โค๏ธ #### โ Upgrading As usual, our recommendation for upgrading is to run: ```sh npx nuxi@latest upgrade --force ``` This will refresh your lockfile as well, and ensures that you pull in updates from other dependencies that Nuxt relies on, particularly in the unjs ecosystem. #### ๐ Changelog [compare changes](https://redirect.github.com/nuxt/nuxt/compare/v3.13.0...v3.13.1) ##### ๐ฅ Performance - **nuxt:** Cache vue app build outputs ([#28726](https://redirect.github.com/nuxt/nuxt/pull/28726)) - **nuxt:** Use `ServerPlaceholder` for ssr client components ([#28563](https://redirect.github.com/nuxt/nuxt/pull/28563)) - **nuxt:** Use reducer array + handle modified proto ([#28768](https://redirect.github.com/nuxt/nuxt/pull/28768)) ##### ๐ฉน Fixes - **schema:** Resolve user-provided `serverDir` relative to root ([#28700](https://redirect.github.com/nuxt/nuxt/pull/28700)) - **nuxt:** Handle mismatching declaration/plugin extensions ([#28709](https://redirect.github.com/nuxt/nuxt/pull/28709)) - **nuxt:** Do not accept arbitrary strings for `MiddlewareKey` ([#28676](https://redirect.github.com/nuxt/nuxt/pull/28676)) - **nuxt:** Do not pass listeners to custom `NuxtLink` ([#28738](https://redirect.github.com/nuxt/nuxt/pull/28738)) - **nuxt:** Generate basic jsdoc for module config entry ([#27689](https://redirect.github.com/nuxt/nuxt/pull/27689)) - **nuxt:** Augment `NuxtOptions` as well as config ([#28747](https://redirect.github.com/nuxt/nuxt/pull/28747)) - **nuxt:** Improve error logging in import protections ([#28753](https://redirect.github.com/nuxt/nuxt/pull/28753)) - **nuxt:** Handle deleted cookies from `CookieStore` events ([#28760](https://redirect.github.com/nuxt/nuxt/pull/28760)) - **nuxt:** Allow updating `appConfig` with non-iterable objects ([#28773](https://redirect.github.com/nuxt/nuxt/pull/28773)) - **nuxt:** Improve `isNuxtError` type inference ([#28814](https://redirect.github.com/nuxt/nuxt/pull/28814)) ##### ๐ Refactors - **nuxt:** Update to vue v3.5 + native `useId` ([#28285](https://redirect.github.com/nuxt/nuxt/pull/28285)) ##### ๐ Documentation - Fix typo ([#28724](https://redirect.github.com/nuxt/nuxt/pull/28724)) - Update broken/redirected links ([#28739](https://redirect.github.com/nuxt/nuxt/pull/28739)) - Capitalize text ([#28734](https://redirect.github.com/nuxt/nuxt/pull/28734)) - Updated line number for nuxt build-time hooks ([#28746](https://redirect.github.com/nuxt/nuxt/pull/28746)) - Add missing `query` returned value from `useRoute()` ([#28743](https://redirect.github.com/nuxt/nuxt/pull/28743)) - Persist package manager choice in code blocks ([#28514](https://redirect.github.com/nuxt/nuxt/pull/28514)) - Fix postcss codeblock typo ([#28801](https://redirect.github.com/nuxt/nuxt/pull/28801)) - Include `--frozen-lockfile` when installing dependencies ([#28794](https://redirect.github.com/nuxt/nuxt/pull/28794)) ##### ๐ก Chore - Use `tinyexec` internally ([#28684](https://redirect.github.com/nuxt/nuxt/pull/28684)) - Use `tinyglobby` internally ([#28686](https://redirect.github.com/nuxt/nuxt/pull/28686)) - Trim tag ([#28687](https://redirect.github.com/nuxt/nuxt/pull/28687)) - Fix ci typo ([#28721](https://redirect.github.com/nuxt/nuxt/pull/28721)) - Tidying workflows + add sherif workflow ([#28793](https://redirect.github.com/nuxt/nuxt/pull/28793)) - Ignore eslint warnings about console logging ([#28795](https://redirect.github.com/nuxt/nuxt/pull/28795)) ##### โ Tests - Update bundle size ([99df4c222](https://redirect.github.com/nuxt/nuxt/commit/99df4c222)) ##### โค๏ธ Contributors - Gianluca Di Francesco ([@gianlucadifrancesco](https://redirect.github.com/gianlucadifrancesco)) - Daniel Roe ([@danielroe](https://redirect.github.com/danielroe)) - Joaquรญn Sรกnchez ([@userquin](https://redirect.github.com/userquin)) - Heb ([@Hebilicious](https://redirect.github.com/Hebilicious)) - Eckhardt (Kaizen) Dreyer ([@Eckhardt-D](https://redirect.github.com/Eckhardt-D)) - Gustav Odinger ([@gustavwilliam](https://redirect.github.com/gustavwilliam)) - Julien Huang ([@huang-julien](https://redirect.github.com/huang-julien)) - Ismail Sabet ([@ismailsabet](https://redirect.github.com/ismailsabet)) - Max ([@onmax](https://redirect.github.com/onmax)) - Anthony Fu ([@antfu](https://redirect.github.com/antfu)) - [@beer](https://redirect.github.com/beer) ([@iiio2](https://redirect.github.com/iiio2)) - riskrole ([@riskrole](https://redirect.github.com/riskrole)) - Thimo Sietsma ([@th1m0](https://redirect.github.com/th1m0)) ### [`v3.13.0`](https://redirect.github.com/nuxt/nuxt/releases/tag/v3.13.0) [Compare Source](https://redirect.github.com/nuxt/nuxt/compare/v3.12.4...v3.13.0) ##### ๐ Highlights I'm pretty excited about this release - we've ported some features we had planned for Nuxt v4 back to v3, as well as a raft of bug fixes and performance improvements - as usual. Here are a few of things I'm most excited about. ##### ๐๏ธ Route Groups We now support naming directories with parentheses/brackets to organise your routes without affecting the path. For example: ```bash [Directory structure] -| pages/ ---| index.vue ---| (marketing)/ -----| about.vue -----| contact.vue ``` This will produce `/`, `/about` and `/contact` pages in your app. The `marketing` group is ignored for purposes of your URL structure. Read more in [the original PR](https://redirect.github.com/nuxt/nuxt/pull/28276). ##### ๐๏ธ Islands and Head Metadata It's now possible for server component islands to manipulate the head, such as by adding SEO metadata when rendering. Read more in [#27987](https://redirect.github.com/nuxt/nuxt/pull/27987). ##### ๐ช Custom Prefetch Triggers We now support custom prefetch triggers for `NuxtLink` ([#27846](https://redirect.github.com/nuxt/nuxt/pull/27846)). For example: ```vue [pages/index.vue]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.
๐ป Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.