nuxt/nuxt (nuxt)
### [`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))
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 contains the following updates:
^3.12.4
->^3.13.1
Release Notes
nuxt/nuxt (nuxt)
### [`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.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.