-
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit 9882c75
authored
chore(deps): update devdependency nuxt to v3.16.0 [security] (#83)
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [nuxt](https://nuxt.com)
([source](https://redirect.github.com/nuxt/nuxt/tree/HEAD/packages/nuxt))
| [`3.14.1592` ->
`3.16.0`](https://renovatebot.com/diffs/npm/nuxt/3.14.1592/3.16.0) |
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
### GitHub Vulnerability Alerts
####
[CVE-2025-27415](https://redirect.github.com/nuxt/nuxt/security/advisories/GHSA-jvhm-gjrh-3h93)
### Summary
By sending a crafted HTTP request to a server behind an CDN, it is
possible in some circumstances to poison the CDN cache and highly
impacts the availability of a site.
It is possible to craft a request, such as
`https://mysite.com/?/_payload.json` which will be rendered as JSON. If
the CDN in front of a Nuxt site ignores the query string when
determining whether to cache a route, then this JSON response could be
served to future visitors to the site.
### Impact
An attacker can perform this attack to a vulnerable site in order to
make a site unavailable indefinitely. It is also possible in the case
where the cache will be reset to make a small script to send a request
each X seconds (=caching duration) so that the cache is permanently
poisoned making the site completely unavailable.
## Conclusion :
This is similar to a vulnerability in Next.js that resulted in
CVE-2024-46982 (and see [this
article](https://zhero-web-sec.github.io/research-and-things/nextjs-cache-and-chains-the-stale-elixir),
in particular the "Internal URL parameter and pageProps" part, the
latter being very similar to the one concerning us here.)
---
### Release Notes
<details>
<summary>nuxt/nuxt (nuxt)</summary>
###
[`v3.16.0`](https://redirect.github.com/nuxt/nuxt/releases/tag/v3.16.0)
[Compare
Source](https://redirect.github.com/nuxt/nuxt/compare/v3.15.4...v3.16.0)
##### π Highlights
There's a lot in this one!
##### β‘οΈ A New New Nuxt
Say hello to `create-nuxt`, a new tool for starting Nuxt projects (big
thanks to [@​devgar](https://redirect.github.com/devgar) for
donating the package name)!
It's a streamlined version of `nuxi init` - just a sixth of the size and
bundled as a single file with all dependencies inlined, to get you going
as fast as possible.
Starting a new project is as simple as:
```bash
npm create nuxt
```

Special thanks to [@​cmang](https://redirect.github.com/cmang) for
the [beautiful
ASCII-art](https://bsky.app/profile/durdraw.org/post/3liadod3gv22a). β€οΈ
Want to learn more about where we're headed with the Nuxt CLI? Check out
our roadmap [here](https://redirect.github.com/nuxt/cli/issues/648),
including our plans for an [interactive modules
selector](https://redirect.github.com/nuxt/cli/issues/754).
##### π Unhead v2
We've upgraded to `unhead` v2, the engine behind Nuxt's `<head>`
management. This major version removes deprecations and improves how
context works:
- For Nuxt 3 users, we're shipping a legacy compatibility build so
nothing breaks
- The context implementation is now more direct via Nuxt itself
```ts
// Nuxt now re-exports composables while properly resolving the context
export function useHead(input, options = {}) {
const unhead = injectHead(options.nuxt)
return head(input, { head: unhead, ...options })
}
```
If you're using Unhead directly in your app, keep in mind:
1. Import from Nuxt's auto-imports or `#app/composables/head` instead of
`@unhead/vue`
2. Importing directly from `@unhead/vue` might lose async context
Don't worry though - we've maintained backward compatibility in Nuxt 3,
so most users won't need to change anything!
If you've opted into `compatibilityVersion: 4`, check out [our upgrade
guide](https://nuxt.com/docs/getting-started/upgrade#unhead-v2) for
additional changes.
##### π§ Devtools v2 Upgrade
Nuxt Devtools has leveled up to v2
([#​30889](https://redirect.github.com/nuxt/nuxt/pull/30889))!
You'll love the new features like custom editor selection, Discovery.js
for inspecting resolved configs (perfect for debugging), the return of
the schema generator, and slimmer dependencies.
One of our favorite improvements is the ability to track how modules
modify your Nuxt configuration - giving you X-ray vision into what's
happening under the hood.
π Discover all the details in the [Nuxt DevTools release
notes](https://redirect.github.com/nuxt/devtools/releases).
##### β‘οΈ Performance Improvements
We're continuing to make Nuxt faster, and there are a number of
improvements in v3.16:
1. Using [`exsolve`](https://redirect.github.com/unjs/exsolve) for
module resolution
([#​31124](https://redirect.github.com/nuxt/nuxt/pull/31124))
along with the rest of the unjs ecosystem (nitro, c12, pkg-types, and
more) - which dramatically speeds up module resolution
2. Smarter module resolution paths
([#​31037](https://redirect.github.com/nuxt/nuxt/pull/31037)) -
prioritizes direct imports for better efficiency
3. Eliminated duplicated Nitro alias resolution
([#​31088](https://redirect.github.com/nuxt/nuxt/pull/31088)) -
leaner file handling
4. Streamlined `loadNuxt` by skipping unnecessary resolution steps
([#​31176](https://redirect.github.com/nuxt/nuxt/pull/31176)) -
faster startups
5. Adopt `oxc-parser` for parsing in Nuxt plugins
([#​30066](https://redirect.github.com/nuxt/nuxt/pull/30066))
All these speed boosts happen automatically - no configuration needed!
Shout out to [CodSpeed](https://codspeed.io/) with [Vitest
benchmarking](https://vitest.dev/guide/features.html#benchmarking) to
measure these improvements in CI - it has been really helpful.
To add some anecdotal evidence, my personal site at
[roe.dev](https://redirect.github.com/danielroe/roe.dev) loads 32%
faster with v3.16, and
[nuxt.com](https://redirect.github.com/nuxt/nuxt.com) is 28% faster. I
hope you see similar results! β‘οΈ
##### π°οΈ Delayed Hydration Support
We're very pleased to bring you native delayed/lazy hydration support
([#​26468](https://redirect.github.com/nuxt/nuxt/pull/26468))!
This lets you control exactly when components hydrate, which can improve
initial load performance and time-to-interactive. We're leveraging Vue's
built-in hydration strategies - [check them out in the Vue
docs](https://vuejs.org/guide/components/async.html#lazy-hydration).
```vue
<template>
<!-- Hydrate when component becomes visible in viewport -->
<LazyExpensiveComponent hydrate-on-visible />
<!-- Hydrate when browser is idle -->
<LazyHeavyComponent hydrate-on-idle />
<!-- Hydrate on interaction (mouseover in this case) -->
<LazyDropdown hydrate-on-interaction="mouseover" />
<!-- Hydrate when media query matches -->
<LazyMobileMenu hydrate-on-media-query="(max-width: 768px)" />
<!-- Hydrate after a specific delay in milliseconds -->
<LazyFooter :hydrate-after="2000" />
</template>
```
You can also listen for when hydration happens with the `@hydrated`
event:
```vue
<LazyComponent hydrate-on-visible @​hydrated="onComponentHydrated" />
```
Learn more about lazy hydration in [our components
documentation](https://nuxt.com/docs/guide/directory-structure/components#delayed-or-lazy-hydration).
##### π§© Advanced Pages Configuration
You can now fine-tune which files Nuxt scans for pages
([#​31090](https://redirect.github.com/nuxt/nuxt/pull/31090)),
giving you more control over your project structure:
```ts [nuxt.config.ts]
export default defineNuxtConfig({
pages: {
// Filter specific files or directories
pattern: ['**/*.vue'],
}
})
```
##### π Enhanced Debugging
We've made debugging with the `debug` option more flexible! Now you can
enable just the debug logs you need
([#​30578](https://redirect.github.com/nuxt/nuxt/pull/30578)):
```ts [nuxt.config.ts]
export default defineNuxtConfig({
debug: {
// Enable specific debugging features
templates: true,
modules: true,
watchers: true,
hooks: {
client: true,
server: true,
},
nitro: true,
router: true,
hydration: true,
}
})
```
Or keep it simple with `debug: true` to enable all these debugging
features.
##### π¨ Decorators Support
For the decorator fans out there (whoever you are!), we've added
experimental support
([#​27672](https://redirect.github.com/nuxt/nuxt/pull/27672)). As
with all experimental features, feedback is much appreciated.
```ts [nuxt.config.ts]
export default defineNuxtConfig({
experimental: {
decorators: true
}
})
```
```ts
function something (_method: () => unknown) {
return () => 'decorated'
}
class SomeClass {
@​something
public someMethod () {
return 'initial'
}
}
const value = new SomeClass().someMethod()
// returns 'decorated'
```
##### π Named Layer Aliases
It's been much requested, and it's here! Auto-scanned local layers (from
your `~~/layers` directory) now automatically create aliases. You can
access your `~~/layers/test` layer via `#layers/test`
([#​30948](https://redirect.github.com/nuxt/nuxt/pull/30948)) - no
configuration needed.
If you want named aliases for other layers, you can add a name to your
layer configuration:
```ts [nuxt.config.ts]
export default defineNuxtConfig({
$meta: {
name: 'example-layer',
},
})
```
This creates the alias `#layers/example-layer` pointing to your layer -
making imports cleaner and more intuitive.
##### π§ͺ Error Handling Improvements
We've greatly improved error messages and source tracking
([#​31144](https://redirect.github.com/nuxt/nuxt/pull/31144)):
1. Better warnings for undefined `useAsyncData` calls with precise file
location information
2. Error pages now appear correctly on island page errors
([#​31081](https://redirect.github.com/nuxt/nuxt/pull/31081))
Plus, we're now using Nitro's beautiful error handling (powered by
[youch](https://redirect.github.com/poppinss/youch)) to provide more
helpful error messages in the terminal, complete with stacktrace
support.
Nitro now also automatically applies source maps without requiring extra
Node options, and we set appropriate security headers when rendering
error pages.
##### π¦ Module Development Improvements
For module authors, we've added the ability to augment Nitro types with
`addTypeTemplate`
([#​31079](https://redirect.github.com/nuxt/nuxt/pull/31079)):
```ts
// Inside your Nuxt module
export default defineNuxtModule({
setup(options, nuxt) {
addTypeTemplate({
filename: 'types/my-module.d.ts',
getContents: () => `
declare module 'nitropack' {
interface NitroRouteConfig {
myCustomOption?: boolean
}
}
`
}, { nitro: true })
}
})
```
##### βοΈ Nitro v2.11 Upgrade
We've upgraded to Nitro v2.11. There are so many improvements - more
than I can cover in these brief release notes.
π Check out all the details in the [Nitro v2.11.0 release
notes](https://redirect.github.com/nitrojs/nitro/releases/tag/v2.11.0).
##### π¦ New `unjs` Major Versions
This release includes several major version upgrades from the unjs
ecosystem, focused on performance and smaller bundle sizes through
ESM-only distributions:
- unenv upgraded to v2 (full rewrite)
- db0 upgraded to v0.3 (ESM-only, native node:sql, improvements)
- ohash upgraded to v2 (ESM-only, native node:crypto support, much
faster)
- untyped upgraded to v2 (ESM-only, smaller install size)
- unimport upgraded to v4 (improvements)
- c12 upgraded to v3 (ESM-only)
- pathe upgraded to v2 (ESM-only)
- cookie-es upgraded to v2 (ESM-only)
- esbuild upgraded to v0.25
- chokidar upgraded to v4
##### β
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://redirect.github.com/nuxt/nuxt/compare/v3.15.4...v3.16.0)
##### π Enhancements
- **nuxt:** Upgrade `@nuxt/devtools` to v2
([#​30889](https://redirect.github.com/nuxt/nuxt/pull/30889))
- **nuxt:** Granular debug options
([#​30578](https://redirect.github.com/nuxt/nuxt/pull/30578))
- **nuxt:** Add type hints for `NuxtPage`
([#​30704](https://redirect.github.com/nuxt/nuxt/pull/30704))
- **nuxt:** Support tracking changes to nuxt options by modules
([#​30555](https://redirect.github.com/nuxt/nuxt/pull/30555))
- **nuxt:** Allow disabling auto-imported polyfills
([#​30332](https://redirect.github.com/nuxt/nuxt/pull/30332))
- **schema:** Add runtime + internal type validation
([#​30844](https://redirect.github.com/nuxt/nuxt/pull/30844))
- **kit,nuxt,schema:** Support experimental decorators syntax
([#​27672](https://redirect.github.com/nuxt/nuxt/pull/27672))
- **kit,nuxt:** Allow multiple nuxts to run in one process
([#​30510](https://redirect.github.com/nuxt/nuxt/pull/30510))
- **kit:** Add named layer aliases
([#​30948](https://redirect.github.com/nuxt/nuxt/pull/30948))
- **kit,nuxt,vite:** `directoryToURL` to normalise paths
([#​30986](https://redirect.github.com/nuxt/nuxt/pull/30986))
- **nuxt:** Allow forcing `start`/`set` in loading indicator
([#​30989](https://redirect.github.com/nuxt/nuxt/pull/30989))
- **nuxt:** Allow specifying glob patterns for scanning `pages/`
([#​31090](https://redirect.github.com/nuxt/nuxt/pull/31090))
- **nuxt:** Add types for default `NuxtLink` slot
([#​31104](https://redirect.github.com/nuxt/nuxt/pull/31104))
- **nuxt:** Delayed/lazy hydration support
([#​26468](https://redirect.github.com/nuxt/nuxt/pull/26468))
- **vite:** Add vite's modulepreload polyfill
([#​31164](https://redirect.github.com/nuxt/nuxt/pull/31164))
- **nuxt:** Show source file when warning about undefined useAsyncData
([#​31144](https://redirect.github.com/nuxt/nuxt/pull/31144))
- **kit,nuxt:** Augment nitro types with `addTypeTemplate`
([#​31079](https://redirect.github.com/nuxt/nuxt/pull/31079))
- **kit,nuxt:** Resolve template imports from originating module
([#​31175](https://redirect.github.com/nuxt/nuxt/pull/31175))
- **nuxt:** Use `oxc-parser` instead of esbuild + acorn
([#​30066](https://redirect.github.com/nuxt/nuxt/pull/30066))
- **nuxt:** Upgrade to unhead v2
([#​31169](https://redirect.github.com/nuxt/nuxt/pull/31169))
- **nuxt:** Align nuxt error handling with nitro
([#​31230](https://redirect.github.com/nuxt/nuxt/pull/31230))
##### π₯ Performance
- **nuxt:** Remove duplicated nitro alias resolution
([#​31088](https://redirect.github.com/nuxt/nuxt/pull/31088))
- **kit:** Try non-subpath routes first to resolve nuxt modules
([#​31037](https://redirect.github.com/nuxt/nuxt/pull/31037))
- **nuxt:** Migrate to use `exsolve` for module resolution
([#​31124](https://redirect.github.com/nuxt/nuxt/pull/31124))
- **kit:** Skip extra module resolution step in `loadNuxt`
([#​31176](https://redirect.github.com/nuxt/nuxt/pull/31176))
##### π©Ή Fixes
- **nuxt:** Ensure `<NuxtLayout>` `fallback` prop is typed
([#​30832](https://redirect.github.com/nuxt/nuxt/pull/30832))
- **nuxt:** Assign slot to be rendered for client components
([#​30768](https://redirect.github.com/nuxt/nuxt/pull/30768))
- **nuxt,vite:** Do not override vite import conditions
([#​30887](https://redirect.github.com/nuxt/nuxt/pull/30887))
- **nuxt:** Prevent `keepalive` cache reset
([#​30807](https://redirect.github.com/nuxt/nuxt/pull/30807))
- **nuxt:** Remove `div` wrapper in client-only pages
([#​30425](https://redirect.github.com/nuxt/nuxt/pull/30425))
- **schema:** Update type import to `nitropack`
([aba75bd5a](https://redirect.github.com/nuxt/nuxt/commit/aba75bd5a))
- **vite:** Use resolveId from vite-node to resolve deps
([#​30922](https://redirect.github.com/nuxt/nuxt/pull/30922))
- **schema:** Normalise additional experimental options
([63e0c342c](https://redirect.github.com/nuxt/nuxt/commit/63e0c342c))
- **nuxt:** Delete existing properties in app config HMR
([#​30918](https://redirect.github.com/nuxt/nuxt/pull/30918))
- **schema:** Return `null` from resolve functions
([d68e8ce57](https://redirect.github.com/nuxt/nuxt/commit/d68e8ce57))
- **schema:** Check if `app.head.meta` values are undefined
([#​30959](https://redirect.github.com/nuxt/nuxt/pull/30959))
- **nuxt:** Make `shared/` directories available within layers
([#​30843](https://redirect.github.com/nuxt/nuxt/pull/30843))
- **kit:** Ensure nuxt is loaded from cwd rather than parent dir
([#​30910](https://redirect.github.com/nuxt/nuxt/pull/30910))
- **ui-templates:** Remove extra `<pre>` when rendering dev errors
([9aab69ec4](https://redirect.github.com/nuxt/nuxt/commit/9aab69ec4))
- **nuxt:** Use tsx loader for jsx blocks as well
([#​31014](https://redirect.github.com/nuxt/nuxt/pull/31014))
- Remove unimplemented `page:transition:start` type
([#​31040](https://redirect.github.com/nuxt/nuxt/pull/31040))
- **kit:** Expose module dependency errors
([#​31035](https://redirect.github.com/nuxt/nuxt/pull/31035))
- **nuxt:** Deprioritise layer css imports
([#​31020](https://redirect.github.com/nuxt/nuxt/pull/31020))
- **nuxt:** Ensure `provide` / `inject` work in `setup` of
`defineNuxtComponent`
([#​30982](https://redirect.github.com/nuxt/nuxt/pull/30982))
- **nuxt:** Decode URI components in cache driver methods
([#​30973](https://redirect.github.com/nuxt/nuxt/pull/30973))
- **nuxt:** Use `_` for NuxtIsland name on server pages
([#​31072](https://redirect.github.com/nuxt/nuxt/pull/31072))
- **nuxt:** Use `ohash` to calculate legacy async data key without hash
([#​31087](https://redirect.github.com/nuxt/nuxt/pull/31087))
- **nuxt,schema:** Resolve `shared` dir from config
([#​31091](https://redirect.github.com/nuxt/nuxt/pull/31091))
- **kit,schema:** Set esbuild target for experimental decorators
([#​31089](https://redirect.github.com/nuxt/nuxt/pull/31089))
- **nuxt:** Set `nuxt.options.pages` to detected configuration
([#​31101](https://redirect.github.com/nuxt/nuxt/pull/31101))
- **nuxt:** Warn when `definePageMeta` does not receive an object
([#​31156](https://redirect.github.com/nuxt/nuxt/pull/31156))
- **nuxt:** Fix nitro import statements for v2
([151cf7d49](https://redirect.github.com/nuxt/nuxt/commit/151cf7d49))
- **nuxt:** Update path to `no-ssr` middleware handler
([a99c59fbd](https://redirect.github.com/nuxt/nuxt/commit/a99c59fbd))
- **nuxt:** Align type of custom `navigate` with `vue-router`
([7a1934509](https://redirect.github.com/nuxt/nuxt/commit/7a1934509))
- **nuxt:** Show error page on island page error
([#​31081](https://redirect.github.com/nuxt/nuxt/pull/31081))
- **nuxt:** Do not render payloads if disabled, and correct regexp
([#​31167](https://redirect.github.com/nuxt/nuxt/pull/31167))
- **nuxt:** Add backwards-compatible serialisation for
`nuxt.options.pages`
([fa480e0a0](https://redirect.github.com/nuxt/nuxt/commit/fa480e0a0))
- **ui-templates:** Escape inline scripts correctly in ui templates
([39c2b0a2c](https://redirect.github.com/nuxt/nuxt/commit/39c2b0a2c))
- **nuxt:** Add back fallback nuxtlink type signature
([a8856de59](https://redirect.github.com/nuxt/nuxt/commit/a8856de59))
- **kit:** Provide default extensions in `resolveModule`
([6fb5c9c15](https://redirect.github.com/nuxt/nuxt/commit/6fb5c9c15))
- **nuxt:** Provide default extensions in `resolveTypePath`
([a0f9ddfe2](https://redirect.github.com/nuxt/nuxt/commit/a0f9ddfe2))
- **nuxt:** Strip query before generating payload url
([34ddc2d2f](https://redirect.github.com/nuxt/nuxt/commit/34ddc2d2f))
- **schema:** Resolve workspaceDir to closest git config
([7a2fbce01](https://redirect.github.com/nuxt/nuxt/commit/7a2fbce01))
- **kit:** Include declaration files when resolving
`compilerOptions.paths`
([835e89404](https://redirect.github.com/nuxt/nuxt/commit/835e89404))
- **nuxt:** Consolidate head component context
([#​31209](https://redirect.github.com/nuxt/nuxt/pull/31209))
- **nuxt:** Resolve shared externals to absolute paths
([#​31227](https://redirect.github.com/nuxt/nuxt/pull/31227))
- **nuxt:** Skip deep merge in dev mode for prototype keys
([#​31205](https://redirect.github.com/nuxt/nuxt/pull/31205))
- **schema:** Use `RawVueCompilerOptions` for unresolved `tsconfig`
([#​31202](https://redirect.github.com/nuxt/nuxt/pull/31202))
- **nuxt:** Ensure externals are resolved first
([#​31235](https://redirect.github.com/nuxt/nuxt/pull/31235))
- **nuxt:** Ensure we strip all chars in payload url
([4f067f601](https://redirect.github.com/nuxt/nuxt/commit/4f067f601))
- **nuxt:** Exempt nitro from import protections
([#​31246](https://redirect.github.com/nuxt/nuxt/pull/31246))
- **nuxt:** Normalise error url to pathname
([87b69c9ae](https://redirect.github.com/nuxt/nuxt/commit/87b69c9ae))
- **nuxt:** Ensure head components are reactive
([#​31248](https://redirect.github.com/nuxt/nuxt/pull/31248))
- **nuxt:** Preserve query/hash when calling `navigateTo` with replace
([#​31244](https://redirect.github.com/nuxt/nuxt/pull/31244))
- **nuxt:** Apply ignore rules to nitro `devStorage`
([#​31233](https://redirect.github.com/nuxt/nuxt/pull/31233))
- **nuxt:** Fall back to wasm if oxc native bindings are missing
([#​31190](https://redirect.github.com/nuxt/nuxt/pull/31190))
- **nuxt:** Pass `useFetch` function name on server for warning
([#​31213](https://redirect.github.com/nuxt/nuxt/pull/31213))
- **vite:** Prevent overriding server build chunks
([89a29e760](https://redirect.github.com/nuxt/nuxt/commit/89a29e760))
- **nuxt:** Strip query in `x-nitro-prerender` header
([2476cab9a](https://redirect.github.com/nuxt/nuxt/commit/2476cab9a))
##### π
Refactors
- **nuxt:** Prefer logical assignment operators
([#​31004](https://redirect.github.com/nuxt/nuxt/pull/31004))
- **nuxt:** Use `isEqual` from `ohash/utils`
([2e27cd30c](https://redirect.github.com/nuxt/nuxt/commit/2e27cd30c))
- **nuxt:** Update to `noScripts` route rule
([#​31083](https://redirect.github.com/nuxt/nuxt/pull/31083))
- **nuxt:** Re-organize internal `runtime/nitro` files
([#​31131](https://redirect.github.com/nuxt/nuxt/pull/31131))
- **nuxt:** Explicitly type internal request fetch
([54cb80319](https://redirect.github.com/nuxt/nuxt/commit/54cb80319))
- **nuxt:** Use relative imports
([1bce3dc3b](https://redirect.github.com/nuxt/nuxt/commit/1bce3dc3b))
- **nuxt:** Early return island response
([#​31094](https://redirect.github.com/nuxt/nuxt/pull/31094))
##### π Documentation
- Tiny typo
([#​30799](https://redirect.github.com/nuxt/nuxt/pull/30799))
- Fix typo
([#​30817](https://redirect.github.com/nuxt/nuxt/pull/30817))
- Remove backslashes in `spaLoadingTemplate` example
([#​30830](https://redirect.github.com/nuxt/nuxt/pull/30830))
- Update path to nuxt binary
([8992c4ea0](https://redirect.github.com/nuxt/nuxt/commit/8992c4ea0))
- Add nuxt lifecycle
([#​30726](https://redirect.github.com/nuxt/nuxt/pull/30726))
- Add additional information about `NuxtPage`
([#​30781](https://redirect.github.com/nuxt/nuxt/pull/30781))
- Improve `navigateTo` docs with clearer structure and examples
([#​30876](https://redirect.github.com/nuxt/nuxt/pull/30876))
- Add auto import info about shared utils
([#​30858](https://redirect.github.com/nuxt/nuxt/pull/30858))
- Fix typo and improve data fetching examples
([#​30935](https://redirect.github.com/nuxt/nuxt/pull/30935))
- Clarify that local layers are scanned from `rootDir`
([27e356fe6](https://redirect.github.com/nuxt/nuxt/commit/27e356fe6))
- Fix typo
([#​30963](https://redirect.github.com/nuxt/nuxt/pull/30963))
- Update links to unhead sources
([6c520ef74](https://redirect.github.com/nuxt/nuxt/commit/6c520ef74))
- Fix typo
([#​30971](https://redirect.github.com/nuxt/nuxt/pull/30971))
- Add tips on how to override layers aliases
([#​30970](https://redirect.github.com/nuxt/nuxt/pull/30970))
- Add description for `vue:setup` and `app:data:refresh` hooks
([#​31001](https://redirect.github.com/nuxt/nuxt/pull/31001))
- Mention requirement to wrap middleware in `defineNuxtRouteMiddleware`
([#​31005](https://redirect.github.com/nuxt/nuxt/pull/31005))
- Add `port` option to preview command
([#​30999](https://redirect.github.com/nuxt/nuxt/pull/30999))
- Remove link to deleted nuxt 2 section
([#​31077](https://redirect.github.com/nuxt/nuxt/pull/31077))
- Link to the scripts releases page
([#​31095](https://redirect.github.com/nuxt/nuxt/pull/31095))
- Add `.nuxtrc` documentation
([#​31093](https://redirect.github.com/nuxt/nuxt/pull/31093))
- Fix typo in example command
([#​31112](https://redirect.github.com/nuxt/nuxt/pull/31112))
- Explain why headers not forwarded when using `$fetch` on the server
([#​31114](https://redirect.github.com/nuxt/nuxt/pull/31114))
- Fix links to nitro directory structure
([5a696176d](https://redirect.github.com/nuxt/nuxt/commit/5a696176d))
- Update to use `create nuxt` command
([fe82af4c9](https://redirect.github.com/nuxt/nuxt/commit/fe82af4c9))
- Update getCachedData types
([#​31208](https://redirect.github.com/nuxt/nuxt/pull/31208))
- Update code example for nightly release to default to `3x`
([a243f8fcf](https://redirect.github.com/nuxt/nuxt/commit/a243f8fcf))
- Clarify lifecycle behavior of `<NuxtPage>` during page changes
([#​31116](https://redirect.github.com/nuxt/nuxt/pull/31116))
- Mention workaround for `typedPages` in unhoisted pnpm setups
([#​31262](https://redirect.github.com/nuxt/nuxt/pull/31262))
##### π¦ Build
- **nuxt:** Add subpath imports for type support
([8ef3fcc4d](https://redirect.github.com/nuxt/nuxt/commit/8ef3fcc4d))
##### π‘ Chore
- Remove second version of vitest
([bc9ac7349](https://redirect.github.com/nuxt/nuxt/commit/bc9ac7349))
- Bump bundle size
([c5e191165](https://redirect.github.com/nuxt/nuxt/commit/c5e191165))
- Add basic copilot instructions
([d47b830d3](https://redirect.github.com/nuxt/nuxt/commit/d47b830d3))
- Handle undefined author
([0161985c0](https://redirect.github.com/nuxt/nuxt/commit/0161985c0))
- Use logical or assignment
([#​30992](https://redirect.github.com/nuxt/nuxt/pull/30992))
- Reorder options object
([11e6b8398](https://redirect.github.com/nuxt/nuxt/commit/11e6b8398))
- Lint
([86c960c6f](https://redirect.github.com/nuxt/nuxt/commit/86c960c6f))
- Fix broken lockfile
([05501d2c8](https://redirect.github.com/nuxt/nuxt/commit/05501d2c8))
- Add `errx` dependency
([566418177](https://redirect.github.com/nuxt/nuxt/commit/566418177))
- Add additional dummy url to ignore
([bc101e4ae](https://redirect.github.com/nuxt/nuxt/commit/bc101e4ae))
- Ignore internal resolution errors in nuxt types
([0d54dc3f4](https://redirect.github.com/nuxt/nuxt/commit/0d54dc3f4))
- Bump octokit patch versions
([a477065b4](https://redirect.github.com/nuxt/nuxt/commit/a477065b4))
- Bump `@nuxtjs/mdc` typechecking dep
([f23683b26](https://redirect.github.com/nuxt/nuxt/commit/f23683b26))
- Ignore `nitro/renderer` templates
([b29c0e86b](https://redirect.github.com/nuxt/nuxt/commit/b29c0e86b))
##### β
Tests
- Add benchmarks for dev server initial build
([#​30742](https://redirect.github.com/nuxt/nuxt/pull/30742))
- Exclude urls from lychee crawler used in test suite
([8e2d9a640](https://redirect.github.com/nuxt/nuxt/commit/8e2d9a640))
- Prepare environment to ensure more reproducible dev tests
([bc89ef867](https://redirect.github.com/nuxt/nuxt/commit/bc89ef867))
- Update unit test
([5a71ef8ac](https://redirect.github.com/nuxt/nuxt/commit/5a71ef8ac))
- Add major version to unit test
([676447239](https://redirect.github.com/nuxt/nuxt/commit/676447239))
- Slightly improve coverage
([d992c0da9](https://redirect.github.com/nuxt/nuxt/commit/d992c0da9))
- Bump timeout for route hmr
([cbe38cf52](https://redirect.github.com/nuxt/nuxt/commit/cbe38cf52))
- Update unit test snapshot for jsx
([4910959b9](https://redirect.github.com/nuxt/nuxt/commit/4910959b9))
- Disable codspeed outside of ci
([71de708a0](https://redirect.github.com/nuxt/nuxt/commit/71de708a0))
- Add some more stability in hmr tests
([9a9fcdab5](https://redirect.github.com/nuxt/nuxt/commit/9a9fcdab5))
- Skip testing spa-preloader in dev
([6cf97bfe5](https://redirect.github.com/nuxt/nuxt/commit/6cf97bfe5))
- Fix time-based hydration test
([da3b39d67](https://redirect.github.com/nuxt/nuxt/commit/da3b39d67))
- Simplify further
([ad306f472](https://redirect.github.com/nuxt/nuxt/commit/ad306f472))
- Filter out dev server logs π
([ee040eea3](https://redirect.github.com/nuxt/nuxt/commit/ee040eea3))
- Update unit test snapshot
([97ec3143a](https://redirect.github.com/nuxt/nuxt/commit/97ec3143a))
- Provide nuxt extensions in unit test
([358729e96](https://redirect.github.com/nuxt/nuxt/commit/358729e96))
- Add benchmark for vite client build
([#​31118](https://redirect.github.com/nuxt/nuxt/pull/31118))
- Update build benchmark
([82ca08f93](https://redirect.github.com/nuxt/nuxt/commit/82ca08f93))
- Ensure dev tests have separate buildDirs
([d7623f884](https://redirect.github.com/nuxt/nuxt/commit/d7623f884))
- Update nitro type import
([8f61d0090](https://redirect.github.com/nuxt/nuxt/commit/8f61d0090))
- Update import to `#internal/nitro/app`
([a1b855cc5](https://redirect.github.com/nuxt/nuxt/commit/a1b855cc5))
- Try to improve dev test stability
([#​31218](https://redirect.github.com/nuxt/nuxt/pull/31218))
- Migrate hmr test to use playwright runner
([#​31241](https://redirect.github.com/nuxt/nuxt/pull/31241))
##### β€οΈ Contributors
- Anoesj Sadraee ([@​Anoesj](https://redirect.github.com/Anoesj))
- Daniel Roe
([@​danielroe](https://redirect.github.com/danielroe))
- John Tanzer
([@​moshetanzer](https://redirect.github.com/moshetanzer))
- Connor Pearson
([@​cjpearson](https://redirect.github.com/cjpearson))
- Connor Roberts
([@​murshex](https://redirect.github.com/murshex))
- Harlan Wilton
([@​harlan-zw](https://redirect.github.com/harlan-zw))
- Alex Liu
([@​Mini-ghost](https://redirect.github.com/Mini-ghost))
- Kevin Deng δΈε²ζΊε ([@​sxzz](https://redirect.github.com/sxzz))
- xjccc ([@​xjccc](https://redirect.github.com/xjccc))
- Julien Huang
([@​huang-julien](https://redirect.github.com/huang-julien))
- Michael Brevard
([@​GalacticHypernova](https://redirect.github.com/GalacticHypernova))
- Maik Kowol ([@​94726](https://redirect.github.com/94726))
- Anthony Fu ([@​antfu](https://redirect.github.com/antfu))
- Bobbie Goede
([@​BobbieGoede](https://redirect.github.com/BobbieGoede))
- Clayton Chew
([@​claytonchew](https://redirect.github.com/claytonchew))
- awfulness ([@​awfulness](https://redirect.github.com/awfulness))
- SΓ©bastien Chopin
([@​atinux](https://redirect.github.com/atinux))
- Saeid Zareie
([@​Saeid-Za](https://redirect.github.com/Saeid-Za))
- Vahagn Zaqaryan
([@​Vahagn-Zaqaryan](https://redirect.github.com/Vahagn-Zaqaryan))
- Idorenyin Udoh
([@​idorenyinudoh](https://redirect.github.com/idorenyinudoh))
- Jonas Thelemann
([@​dargmuesli](https://redirect.github.com/dargmuesli))
- Ryota Watanabe
([@​wattanx](https://redirect.github.com/wattanx))
- Horu
([@​HigherOrderLogic](https://redirect.github.com/HigherOrderLogic))
- Nolhan
([@​Nonolanlan1007](https://redirect.github.com/Nonolanlan1007))
- Typed SIGTERM
([@​typed-sigterm](https://redirect.github.com/typed-sigterm))
- Hans Tu ([@​ChiaHanTu](https://redirect.github.com/ChiaHanTu))
- Damian GΕowala
([@​DamianGlowala](https://redirect.github.com/DamianGlowala))
- David Marr ([@​marr](https://redirect.github.com/marr))
- Camille Coutens ([@​Kamsou](https://redirect.github.com/Kamsou))
- Charlie β¨ ([@​CharleeWa](https://redirect.github.com/CharleeWa))
- Hussain Panahy ([@​HP8585](https://redirect.github.com/HP8585))
- [@​beer](https://redirect.github.com/beer)
([@​iiio2](https://redirect.github.com/iiio2))
###
[`v3.15.4`](https://redirect.github.com/nuxt/nuxt/releases/tag/v3.15.4)
[Compare
Source](https://redirect.github.com/nuxt/nuxt/compare/v3.15.3...v3.15.4)
> 3.15.4 is the next 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.15.3...v3.15.4)
##### π©Ή Fixes
- **nuxt:** Improve error logging when parsing with `acorn`
([#​30754](https://redirect.github.com/nuxt/nuxt/pull/30754))
- **nuxt:** Clear island uid before saving into the payload
([#​30767](https://redirect.github.com/nuxt/nuxt/pull/30767))
- **kit:** Load `@nuxt/schema` from `nuxt` package dir
([#​30774](https://redirect.github.com/nuxt/nuxt/pull/30774))
- **nuxt:** Allow restarting nuxt on paths outside `srcDir`
([#​30771](https://redirect.github.com/nuxt/nuxt/pull/30771))
- **nuxt:** Don't warn about calling `useRoute` in SFC setup
([#​30788](https://redirect.github.com/nuxt/nuxt/pull/30788))
- **webpack:** Disallow cross-site requests in no-cors mode
([#​30757](https://redirect.github.com/nuxt/nuxt/pull/30757))
- **vite:** Restore `externality` for dev server externals
([#​30802](https://redirect.github.com/nuxt/nuxt/pull/30802))
##### π
Refactors
- **vite:** Use new rollup `chunk.names` for asset names
([#​30780](https://redirect.github.com/nuxt/nuxt/pull/30780))
##### β€οΈ Contributors
- Daniel Roe
([@​danielroe](https://redirect.github.com/danielroe))
- Peter Radko ([@​Gwynerva](https://redirect.github.com/Gwynerva))
- Lansi ([@​lansi951](https://redirect.github.com/lansi951))
- Julien Huang
([@​huang-julien](https://redirect.github.com/huang-julien))
- Norbiros ([@​Norbiros](https://redirect.github.com/Norbiros))
###
[`v3.15.3`](https://redirect.github.com/nuxt/nuxt/releases/tag/v3.15.3)
[Compare
Source](https://redirect.github.com/nuxt/nuxt/compare/v3.15.2...v3.15.3)
> 3.15.3 is the next regularly scheduled patch release.
#### π Highlights
##### CORS configuration for dev server
Alongside a range of improvements, we've also shipped a significant fix
to impose [CORS origin restrictions on the dev
server](https://redirect.github.com/nuxt/nuxt/commit/406db5b4d). This
applies to your Vite or Webpack/Rspack dev middleware only.
This is a significant/breaking change we would not normally ship in a
patch but it is a security fix (see
https://github.com/nuxt/nuxt/security/advisories/GHSA-4gf7-ff8x-hq99 and
https://github.com/nuxt/nuxt/security/advisories/GHSA-2452-6xj8-jh47)
and we urge you to update ASAP.
You can configure the allowed origins and other CORS options via the
`devServer.cors` options in your `nuxt.config`, which may be relevant if
you are developing with a custom hostname:
```ts
export default defineNuxtConfig({
devServer: {
cors: {
origin: ['https://custom-origin.com'],
},
},
})
```
#### β
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.15.2...v3.15.3)
##### π₯ Performance
- **kit,nuxt:** Don't resolve paths from local layers/modules
([#​30650](https://redirect.github.com/nuxt/nuxt/pull/30650))
- **nuxt:** Reduce number of `mkdirSync` calls
([#​30651](https://redirect.github.com/nuxt/nuxt/pull/30651))
- **nuxt:** Reduce unnecessary template updating
([#​30684](https://redirect.github.com/nuxt/nuxt/pull/30684))
- **kit:** Reduce duplication between `findPath` and `resolvePath`
([#​30682](https://redirect.github.com/nuxt/nuxt/pull/30682))
- **kit:** Run components compat check synchronously
([#​30685](https://redirect.github.com/nuxt/nuxt/pull/30685))
- **nuxt:** Early return from annotation for non-object syntax plugins
([#​30683](https://redirect.github.com/nuxt/nuxt/pull/30683))
- **nuxt:** Enable `Transition` component only on client side
([#​30720](https://redirect.github.com/nuxt/nuxt/pull/30720))
##### π©Ή Fixes
- **vite:** Override previous `#app-manifest` alias
([#​30618](https://redirect.github.com/nuxt/nuxt/pull/30618))
- **kit,nuxt,schema,vite:** Improve watching behaviour
([#​30620](https://redirect.github.com/nuxt/nuxt/pull/30620))
- **nuxt:** Fall back to `plugin.src` for variable name generation
([#​30649](https://redirect.github.com/nuxt/nuxt/pull/30649))
- **schema:** Allow overriding `dev`/`test` environment value
([#​30667](https://redirect.github.com/nuxt/nuxt/pull/30667))
- **vite:** Drop unneeded call to invalidate module
([d2a95c542](https://redirect.github.com/nuxt/nuxt/commit/d2a95c542))
- **vite:** Add back `invalidateModule` call
([9bd71e498](https://redirect.github.com/nuxt/nuxt/commit/9bd71e498))
- **nuxt:** Do not warn about `[[` optional dynamic params
([#​30619](https://redirect.github.com/nuxt/nuxt/pull/30619))
- **vite:** Inline shared folder in dev mode
([#​30690](https://redirect.github.com/nuxt/nuxt/pull/30690))
- **nuxt:** Deep clone extracted page meta
([#​30717](https://redirect.github.com/nuxt/nuxt/pull/30717))
- **vite,webpack:** Restrict access via cors to local origins + allow
configuration via `devServer.cors`
([406db5b4d](https://redirect.github.com/nuxt/nuxt/commit/406db5b4d))
##### π
Refactors
- **vite:** Drop `externality` and use vite internal config
([#​30634](https://redirect.github.com/nuxt/nuxt/pull/30634))
##### π Documentation
- Add link to custom `useFetch` example
([#​30629](https://redirect.github.com/nuxt/nuxt/pull/30629))
- Fix example command
([#​30628](https://redirect.github.com/nuxt/nuxt/pull/30628))
- Fix links to `nuxi` source code
([4fabe0025](https://redirect.github.com/nuxt/nuxt/commit/4fabe0025))
- Add description for prefetch and other details of `NuxtLink`
([#​30614](https://redirect.github.com/nuxt/nuxt/pull/30614))
- Update nuxt/content example
([542987627](https://redirect.github.com/nuxt/nuxt/commit/542987627))
- Adjust examples, type and description for `addRouteMiddleware`
([#​30656](https://redirect.github.com/nuxt/nuxt/pull/30656))
- Explain how to use `ClientOnly` with `onMounted` hook
([#​30670](https://redirect.github.com/nuxt/nuxt/pull/30670))
- Update links to unhead source
([eb5344b43](https://redirect.github.com/nuxt/nuxt/commit/eb5344b43))
- Add more context about `navigation` mode in `callOnce` composable
([#​30612](https://redirect.github.com/nuxt/nuxt/pull/30612))
- Add example on how to disable default routes for ssg
([#​30729](https://redirect.github.com/nuxt/nuxt/pull/30729))
##### π¦ Build
- **schema:** Use new `inlineDependencies` option
([01adefcec](https://redirect.github.com/nuxt/nuxt/commit/01adefcec))
##### π‘ Chore
- **kit:** Explicitly inline `lodash-es`
([0c01273f5](https://redirect.github.com/nuxt/nuxt/commit/0c01273f5))
- Add debug timing jiti/unbuild plugins
([#​30648](https://redirect.github.com/nuxt/nuxt/pull/30648))
- Do not clobber global tracker objects
([df8554331](https://redirect.github.com/nuxt/nuxt/commit/df8554331))
- Remove stray console log
([47c40f310](https://redirect.github.com/nuxt/nuxt/commit/47c40f310))
- Improve debugging plugins
([492b1ec65](https://redirect.github.com/nuxt/nuxt/commit/492b1ec65))
- Write metrics to disk for better diffing
([c5c6b8105](https://redirect.github.com/nuxt/nuxt/commit/c5c6b8105))
- Lint
([86aff854c](https://redirect.github.com/nuxt/nuxt/commit/86aff854c))
##### π€ CI
- Run bundle size assertion outside of matrix
([#​30688](https://redirect.github.com/nuxt/nuxt/pull/30688))
- Reenable nuxt benchmarking
([#​30711](https://redirect.github.com/nuxt/nuxt/pull/30711))
##### β€οΈ Contributors
- Alex Liu
([@​Mini-ghost](https://redirect.github.com/Mini-ghost))
- Daniel Roe
([@​danielroe](https://redirect.github.com/danielroe))
- Alan Schio ([@​schirrel](https://redirect.github.com/schirrel))
- xjccc ([@​xjccc](https://redirect.github.com/xjccc))
- Saeid Zareie
([@​Saeid-Za](https://redirect.github.com/Saeid-Za))
- Zakhar Shymanchyk
([@​zshimanchik](https://redirect.github.com/zshimanchik))
- Arturs Jansons ([@​iegik](https://redirect.github.com/iegik))
- Maxime Pauvert
([@​maximepvrt](https://redirect.github.com/maximepvrt))
###
[`v3.15.2`](https://redirect.github.com/nuxt/nuxt/releases/tag/v3.15.2)
[Compare
Source](https://redirect.github.com/nuxt/nuxt/compare/v3.15.1...v3.15.2)
> 3.15.2 is the next regularly scheduled patch release.
#### π Highlights
##### π₯ Startup performance improvements
It is worth noting that this release includes some pretty significant
performance improvements which you should notice particularly in the
startup time. In my tests in the nuxt monorepo,
| fixture | time to vite build complete (v3.15.1) | time to vite build
complete (v3.15.2) |
| - | - | - |
| minimal | 850ms | 710ms |
| everything bagel | 3,021ms | 1,690ms |
There's more improvement to do here but hopefully these are good
numbers!
##### π¦ CLI refactor
To improve performance within Nuxt projects, we've published a new
`@nuxt/cli` distribution of `nuxi`, which is used under-the-hood in
`nuxt` (see [issue](https://redirect.github.com/nuxt/cli/issues/648)).
This should behave exactly the same and nothing needs to be updated in
your projects (for example, you will continue to use the `nuxi` or
`nuxt` commands). The only significant change is that it no longer
inlines dependencies. Feedback is welcome π
#### β
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.15.1...v3.15.2)
##### π₯ Performance
- **nuxt:** Remove code duplication in client-only
([#​30460](https://redirect.github.com/nuxt/nuxt/pull/30460))
- **nuxt:** Use lighter `@nuxt/cli` dependency
([#​30526](https://redirect.github.com/nuxt/nuxt/pull/30526))
- **kit:** Remove iterations when resolving module path
([#​30562](https://redirect.github.com/nuxt/nuxt/pull/30562))
- **nuxt:** Avoid checking fs for existence of scanned pages
([#​30581](https://redirect.github.com/nuxt/nuxt/pull/30581))
- **nuxt:** Defer version/config warnings to after build
([#​30567](https://redirect.github.com/nuxt/nuxt/pull/30567))
##### π©Ή Fixes
- **nuxt:** Collect all identifiers before extracting page metadata
([#​30478](https://redirect.github.com/nuxt/nuxt/pull/30478))
- **nuxt:** Don't hoist identifiers declared locally in `definePageMeta`
when extracting page metadata
([#​30490](https://redirect.github.com/nuxt/nuxt/pull/30490))
- **kit:** Reorder `#build` to the end of `tsConfig` paths
([#​30520](https://redirect.github.com/nuxt/nuxt/pull/30520))
- **nuxt:** Use `fullPath` instead of empty string in router hmr
([#​30500](https://redirect.github.com/nuxt/nuxt/pull/30500))
- Relax nuxt version constraints to current
([23b968289](https://redirect.github.com/nuxt/nuxt/commit/23b968289))
- **nuxt:** Add import protection for `@nuxt/cli`
([618bbc6da](https://redirect.github.com/nuxt/nuxt/commit/618bbc6da))
- **kit:** Fully resolve plugin paths when normalising them
([#​30540](https://redirect.github.com/nuxt/nuxt/pull/30540))
- **nuxt:** Call `page:loading:end` only once with nested pages
([#​29009](https://redirect.github.com/nuxt/nuxt/pull/29009))
- **nuxt:** Warn about ignored char while parsing route segment
([#​30396](https://redirect.github.com/nuxt/nuxt/pull/30396))
- **nuxt:** Allow url-specific chars in vfs
([#​30584](https://redirect.github.com/nuxt/nuxt/pull/30584))
- **nuxt:** Do not warn about invalid characters in route
groups/catchalls
([0249c74bc](https://redirect.github.com/nuxt/nuxt/commit/0249c74bc))
- **vite:** Provide fallback alias for `#app-manifest`
([#​30587](https://redirect.github.com/nuxt/nuxt/pull/30587))
- **nuxt:** Avoid invoking `shouldPrefetch` on the server side
([#​30591](https://redirect.github.com/nuxt/nuxt/pull/30591))
- **nuxt:** Decode id before resolving relative imports
([#​30599](https://redirect.github.com/nuxt/nuxt/pull/30599))
##### π
Refactors
- **kit,nuxt,webpack:** Reduce reassignments
([#​30589](https://redirect.github.com/nuxt/nuxt/pull/30589))
##### π Documentation
- Document `--dev` option for the module command
([#​30477](https://redirect.github.com/nuxt/nuxt/pull/30477))
- Document the add layer command
([#​30476](https://redirect.github.com/nuxt/nuxt/pull/30476))
- Update v4 release date
([#​30514](https://redirect.github.com/nuxt/nuxt/pull/30514))
- Ensure correct type for `url` in `useFetch`
([#​30531](https://redirect.github.com/nuxt/nuxt/pull/30531))
- Update link to `@nuxt/module-builder` source
([509cf4a5c](https://redirect.github.com/nuxt/nuxt/commit/509cf4a5c))
- Add `status` detail and enhance `getCachedData` readability
([#​30536](https://redirect.github.com/nuxt/nuxt/pull/30536))
- Update hash link to correct heading
([#​30543](https://redirect.github.com/nuxt/nuxt/pull/30543))
- Update links to unhead source
([fef3a59bb](https://redirect.github.com/nuxt/nuxt/commit/fef3a59bb))
- Adjust example and additional instructions of `useNuxtData`
([#​30570](https://redirect.github.com/nuxt/nuxt/pull/30570))
- Resolve many twoslash errors
([#​30573](https://redirect.github.com/nuxt/nuxt/pull/30573))
- Add context for `useAsyncData` side effects
([#​30479](https://redirect.github.com/nuxt/nuxt/pull/30479))
- Update examples to use function declarations for clarity
([#​30588](https://redirect.github.com/nuxt/nuxt/pull/30588))
##### π‘ Chore
- Control dependency import into `nuxt/app`
([1adf3e31f](https://redirect.github.com/nuxt/nuxt/commit/1adf3e31f))
- Ignore automated renovate node engines updates
([6895993fb](https://redirect.github.com/nuxt/nuxt/commit/6895993fb))
##### π€ CI
- Don't block release on fixtures + add pkg.pr.new
([#​30548](https://redirect.github.com/nuxt/nuxt/pull/30548))
- Remove concurrency group from release-pr job
([8ac54ff10](https://redirect.github.com/nuxt/nuxt/commit/8ac54ff10))
##### β€οΈ Contributors
- Daniel Roe
([@​danielroe](https://redirect.github.com/danielroe))
- Alex Liu
([@​Mini-ghost](https://redirect.github.com/Mini-ghost))
- Anthony Fu ([@​antfu](https://redirect.github.com/antfu))
- Camille Coutens ([@​Kamsou](https://redirect.github.com/Kamsou))
- Julien Huang
([@​huang-julien](https://redirect.github.com/huang-julien))
- Peter Buglavecz
([@​buglavecz](https://redirect.github.com/buglavecz))
- ikxin ([@​ikxin](https://redirect.github.com/ikxin))
- Guspan Tanadi
([@​guspan-tanadi](https://redirect.github.com/guspan-tanadi))
- Vuk Marjanovic
([@​vmrjnvc](https://redirect.github.com/vmrjnvc))
- Saeid Zareie
([@​Saeid-Za](https://redirect.github.com/Saeid-Za))
- Matej ΔernΓ½
([@​cernymatej](https://redirect.github.com/cernymatej))
- ClΓ©ment Ollivier
([@​clemcode](https://redirect.github.com/clemcode))
###
[`v3.15.1`](https://redirect.github.com/nuxt/nuxt/releases/tag/v3.15.1)
[Compare
Source](https://redirect.github.com/nuxt/nuxt/compare/v3.15.0...v3.15.1)
> 3.15.1 is the next 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.15.0...v3.15.1)
##### π₯ Performance
- **nuxt:** Skip experimental async context transform in client build
([#​30360](https://redirect.github.com/nuxt/nuxt/pull/30360))
- **schema:** Drop unneeded type-only schema dependencies
([#​30411](https://redirect.github.com/nuxt/nuxt/pull/30411))
- **rspack,webpack:** Drop `lodash-es` dependency
([#​30409](https://redirect.github.com/nuxt/nuxt/pull/30409))
- **nuxt:** Drop `pathe` browser dep for deep server components
([#​30456](https://redirect.github.com/nuxt/nuxt/pull/30456))
##### π©Ή Fixes
- **nuxt:** Update module path for defaults
([#​30371](https://redirect.github.com/nuxt/nuxt/pull/30371))
- **nuxt:** Ignore non-reference identifiers when extracting page
metadata
([#​30381](https://redirect.github.com/nuxt/nuxt/pull/30381))
- **nuxt:** Pass `nuxt` instance to `resolvePagesRoutes`
([e4a372e12](https://redirect.github.com/nuxt/nuxt/commit/e4a372e12))
- **schema:** Support pfx certificate for dev server
([#​30412](https://redirect.github.com/nuxt/nuxt/pull/30412))
- **nuxt:** Use node `location` instead of `range` for route meta
property extraction
([#​30447](https://redirect.github.com/nuxt/nuxt/pull/30447))
- **schema:** Override `vueCompilerOptions.plugins` type
([#​30454](https://redirect.github.com/nuxt/nuxt/pull/30454))
- **nuxt:** Respect `baseURL` when ignoring prerendered manifest
([#​30446](https://redirect.github.com/nuxt/nuxt/pull/30446))
- **nuxt:** Respect `router.options` when hmring routes
([#​30455](https://redirect.github.com/nuxt/nuxt/pull/30455))
##### π
Refactors
- **nuxt:** Use `consola` with `nuxt` tag instead of console
([#​30408](https://redirect.github.com/nuxt/nuxt/pull/30408))
##### π Documentation
- Update references to `lodash` and recommend `es-toolkit`
([8e2ca5bdc](https://redirect.github.com/nuxt/nuxt/commit/8e2ca5bdc))
- Add warning about prerendering
([#​30437](https://redirect.github.com/nuxt/nuxt/pull/30437))
##### π‘ Chore
- Add configuration for JetBrains IDEs
([#​30380](https://redirect.github.com/nuxt/nuxt/pull/30380))
- Update lockfile
([db65a703b](https://redirect.github.com/nuxt/nuxt/commit/db65a703b))
- Dedupe lockfile + bump nanoid
([c5eb6a81d](https://redirect.github.com/nuxt/nuxt/commit/c5eb6a81d))
##### β€οΈ Contributors
- Daniel Roe
([@​danielroe](https://redirect.github.com/danielroe))
- Anders Bootsmann Larsen
([@​bootsmann1995](https://redirect.github.com/bootsmann1995))
- Alexander Lichter
([@​TheAlexLichter](https://redirect.github.com/TheAlexLichter))
- Matej ΔernΓ½
([@​cernymatej](https://redirect.github.com/cernymatej))
- Connor Roberts
([@​murshex](https://redirect.github.com/murshex))
- Julien Huang
([@​huang-julien](https://redirect.github.com/huang-julien))
###
[`v3.15.0`](https://redirect.github.com/nuxt/nuxt/releases/tag/v3.15.0)
[Compare
Source](https://redirect.github.com/nuxt/nuxt/compare/v3.14.1592...v3.15.0)
#### π Highlights
##### βοΈ Snowfall!
Happy holidays! You'll notice when you start Nuxt that (if you're in the
Northern Hemisphere) there's some snow on the loading screen
([#​29871](https://redirect.github.com/nuxt/nuxt/pull/29871)).
##### β‘οΈ Vite 6 included
Nuxt v3.15 includes [Vite 6](https://vite.dev/blog/announcing-vite6) for
the first time. Although this is a major version, we expect that this
won't be a breaking change for Nuxt users (see full [migration
guide](https://vite.dev/guide/migration.html)). However, please take
care if you have dependencies that rely on a particular Vite version.
One of the most significant changes with Vite 6 is the new Environment
API, which we hope to use in conjunction with Nitro to improve the
server dev environment. Watch this space!
You can read the full list of changes in the [Vite 6
changelog](https://redirect.github.com/vitejs/vite/blob/v6.0.0/packages/vite/CHANGELOG.md).
##### πͺ΅ Chromium devtools improvements
We talk a lot about the Nuxt DevTools, but v3.15 ships with better
integration in dev mode for Chromium-based browser devtools.
We now use the [Chrome DevTools extensibility
API](https://developer.chrome.com/docs/devtools/performance/extension)
to add support for printing nuxt hook timings in the browser devtools
performance panel.

##### πΊοΈ Navigation mode for `callOnce`
`callOnce` is a built-in Nuxt composable for running code only once. For
example, if the code runs on the server it won't run again on the
client. But sometimes you do want code to run on *every navigation* -
just avoid the initial server/client double load. For this, there's a
new `mode: 'navigation'` option that will run the code only once *per
navigation*. (See
[#​30260](https://redirect.github.com/nuxt/nuxt/pull/30260) for
more info.)
```ts
await callOnce(() => counter.value++, { mode: 'navigation' })
```
##### π₯΅ HMR for templates, pages + page metadata
We now implement hot module reloading for Nuxt's virtual files (like
routes, plugins, generated files) as well as for the content of page
metadata (within a `definePageMeta` macro)
([#​30113](https://redirect.github.com/nuxt/nuxt/pull/30113)).
This should mean you have a faster experience in development, as well as
not needing to reload the page when making changes to your routes.
##### π Page meta enhancements
We now support extracting extra page meta keys (likely used by module
authors) via `experimental.extraPageMetaExtractionKeys`
([#​30015](https://redirect.github.com/nuxt/nuxt/pull/30015)).
This enables module authors to use this information at build time, in
the `pages:resolved` hook.
We also now support local functions in `definePageMeta`
([#​30241](https://redirect.github.com/nuxt/nuxt/pull/30241)).
This means you can do something like this:
```ts
function validateIdParam(route) {
return !!(route.params.id && !isNaN(Number(route.params.id)))
}
definePageMeta({
validate: validateIdParam,
})
```
##### π₯ Performance improvements
We now preload the app manifest in the browser if it will be used when
hydrating the app
([#​30017](https://redirect.github.com/nuxt/nuxt/pull/30017)).
We'll also tree shake vue-router's hash mode history out of your bundle
if we can - specifically, if you haven't customised your
`app/router.options.ts`
([#​30297](https://redirect.github.com/nuxt/nuxt/pull/30297)).
##### π£ v4 updates
A few more changes shipped for the new defaults for v4, including only
inlining styles by default for Vue components
([#​30305](https://redirect.github.com/nuxt/nuxt/pull/30305)).
#### β
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.14.1592...v3.15.0)
##### π Enhancements
- **deps:** Update dependency vite to v6 (3.x)
([#​30044](https://redirect.github.com/nuxt/nuxt/pull/30044))
- **kit:** Allow module default options to be async
([#​29980](https://redirect.github.com/nuxt/nuxt/pull/29980))
- **nuxt:** Add new types to vue preset
([#​29819](https://redirect.github.com/nuxt/nuxt/pull/29819))
- **nuxt:** Experimental `extraPageMetaExtractionKeys`
([#​30015](https://redirect.github.com/nuxt/nuxt/pull/30015))
- **nuxt,schema:** Allow setting serialisable vue app config
([#​28873](https://redirect.github.com/nuxt/nuxt/pull/28873))
- **nuxt:** Print nuxt hook timings in browser devtools
([#​29922](https://redirect.github.com/nuxt/nuxt/pull/29922))
- **nuxt:** Support vue directive auto-imports within unimport
([#​29818](https://redirect.github.com/nuxt/nuxt/pull/29818))
- **schema:** Add snow effect on loading screen in winter
([#​29871](https://redirect.github.com/nuxt/nuxt/pull/29871))
- **nuxt:** Support local functions in `definePageMeta`
([#​30241](https://redirect.github.com/nuxt/nuxt/pull/30241))
- **nuxt:** Add `mode: 'navigation'` to `callOnce`
([#​30260](https://redirect.github.com/nuxt/nuxt/pull/30260))
##### π₯ Performance
- **nuxt:** Preload app manifest
([#​30017](https://redirect.github.com/nuxt/nuxt/pull/30017))
- **nuxt:** Use static `hashMode` option
([#​30297](https://redirect.github.com/nuxt/nuxt/pull/30297))
- **vite:** Use vite to clear screen
([#​30315](https://redirect.github.com/nuxt/nuxt/pull/30315))
- **schema:** Only inline styles for vue components
([#​30305](https://redirect.github.com/nuxt/nuxt/pull/30305))
- **nuxt:** Remove useId from composable key plugin
([#​30328](https://redirect.github.com/nuxt/nuxt/pull/30328))
##### π©Ή Fixes
- **nuxt:** Check if nuxt link observer is null
([#​30038](https://redirect.github.com/nuxt/nuxt/pull/30038))
- **nuxt:** Unref the default value of asyncData when clearing
([#​30041](https://redirect.github.com/nuxt/nuxt/pull/30041))
- **kit:** Re-export `
</details>
---
### Configuration
π
**Schedule**: Branch creation - "" (UTC), Automerge - At any time (no
schedule defined).
π¦ **Automerge**: Enabled.
β» **Rebasing**: Whenever PR is behind base branch, 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 was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/Hebilicious/nuxt-module-template).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>1 parent 4075513 commit 9882c75Copy full SHA for 9882c75
File tree
Expand file treeCollapse file tree
1 file changed
+72
-7
lines changedFilter options
Expand file treeCollapse file tree
1 file changed
+72
-7
lines changed+72-7Lines changed: 72 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
0 commit comments