Skip to content

Commit 9882c75

Browse files
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) | [![age](https://developer.mend.io/api/mc/badges/age/npm/nuxt/3.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/nuxt/3.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/nuxt/3.14.1592/3.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nuxt/3.14.1592/3.16.0?slim=true)](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 [@&#8203;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 ``` ![screenshot of create nuxt app](https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:qrygjljnajqwxbld3k7uvyms/bafkreifkhnzbwxgkgjw6jpqg6j6z6abylvfyynca3r7jh5b63fcromj2ia@jpeg) Special thanks to [@&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;31037](https://redirect.github.com/nuxt/nuxt/pull/31037)) - prioritizes direct imports for better efficiency 3. Eliminated duplicated Nitro alias resolution ([#&#8203;31088](https://redirect.github.com/nuxt/nuxt/pull/31088)) - leaner file handling 4. Streamlined `loadNuxt` by skipping unnecessary resolution steps ([#&#8203;31176](https://redirect.github.com/nuxt/nuxt/pull/31176)) - faster startups 5. Adopt `oxc-parser` for parsing in Nuxt plugins ([#&#8203;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 ([#&#8203;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 @&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 { @&#8203;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` ([#&#8203;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 ([#&#8203;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 ([#&#8203;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` ([#&#8203;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 ([#&#8203;30889](https://redirect.github.com/nuxt/nuxt/pull/30889)) - **nuxt:** Granular debug options ([#&#8203;30578](https://redirect.github.com/nuxt/nuxt/pull/30578)) - **nuxt:** Add type hints for `NuxtPage` ([#&#8203;30704](https://redirect.github.com/nuxt/nuxt/pull/30704)) - **nuxt:** Support tracking changes to nuxt options by modules ([#&#8203;30555](https://redirect.github.com/nuxt/nuxt/pull/30555)) - **nuxt:** Allow disabling auto-imported polyfills ([#&#8203;30332](https://redirect.github.com/nuxt/nuxt/pull/30332)) - **schema:** Add runtime + internal type validation ([#&#8203;30844](https://redirect.github.com/nuxt/nuxt/pull/30844)) - **kit,nuxt,schema:** Support experimental decorators syntax ([#&#8203;27672](https://redirect.github.com/nuxt/nuxt/pull/27672)) - **kit,nuxt:** Allow multiple nuxts to run in one process ([#&#8203;30510](https://redirect.github.com/nuxt/nuxt/pull/30510)) - **kit:** Add named layer aliases ([#&#8203;30948](https://redirect.github.com/nuxt/nuxt/pull/30948)) - **kit,nuxt,vite:** `directoryToURL` to normalise paths ([#&#8203;30986](https://redirect.github.com/nuxt/nuxt/pull/30986)) - **nuxt:** Allow forcing `start`/`set` in loading indicator ([#&#8203;30989](https://redirect.github.com/nuxt/nuxt/pull/30989)) - **nuxt:** Allow specifying glob patterns for scanning `pages/` ([#&#8203;31090](https://redirect.github.com/nuxt/nuxt/pull/31090)) - **nuxt:** Add types for default `NuxtLink` slot ([#&#8203;31104](https://redirect.github.com/nuxt/nuxt/pull/31104)) - **nuxt:** Delayed/lazy hydration support ([#&#8203;26468](https://redirect.github.com/nuxt/nuxt/pull/26468)) - **vite:** Add vite's modulepreload polyfill ([#&#8203;31164](https://redirect.github.com/nuxt/nuxt/pull/31164)) - **nuxt:** Show source file when warning about undefined useAsyncData ([#&#8203;31144](https://redirect.github.com/nuxt/nuxt/pull/31144)) - **kit,nuxt:** Augment nitro types with `addTypeTemplate` ([#&#8203;31079](https://redirect.github.com/nuxt/nuxt/pull/31079)) - **kit,nuxt:** Resolve template imports from originating module ([#&#8203;31175](https://redirect.github.com/nuxt/nuxt/pull/31175)) - **nuxt:** Use `oxc-parser` instead of esbuild + acorn ([#&#8203;30066](https://redirect.github.com/nuxt/nuxt/pull/30066)) - **nuxt:** Upgrade to unhead v2 ([#&#8203;31169](https://redirect.github.com/nuxt/nuxt/pull/31169)) - **nuxt:** Align nuxt error handling with nitro ([#&#8203;31230](https://redirect.github.com/nuxt/nuxt/pull/31230)) ##### πŸ”₯ Performance - **nuxt:** Remove duplicated nitro alias resolution ([#&#8203;31088](https://redirect.github.com/nuxt/nuxt/pull/31088)) - **kit:** Try non-subpath routes first to resolve nuxt modules ([#&#8203;31037](https://redirect.github.com/nuxt/nuxt/pull/31037)) - **nuxt:** Migrate to use `exsolve` for module resolution ([#&#8203;31124](https://redirect.github.com/nuxt/nuxt/pull/31124)) - **kit:** Skip extra module resolution step in `loadNuxt` ([#&#8203;31176](https://redirect.github.com/nuxt/nuxt/pull/31176)) ##### 🩹 Fixes - **nuxt:** Ensure `<NuxtLayout>` `fallback` prop is typed ([#&#8203;30832](https://redirect.github.com/nuxt/nuxt/pull/30832)) - **nuxt:** Assign slot to be rendered for client components ([#&#8203;30768](https://redirect.github.com/nuxt/nuxt/pull/30768)) - **nuxt,vite:** Do not override vite import conditions ([#&#8203;30887](https://redirect.github.com/nuxt/nuxt/pull/30887)) - **nuxt:** Prevent `keepalive` cache reset ([#&#8203;30807](https://redirect.github.com/nuxt/nuxt/pull/30807)) - **nuxt:** Remove `div` wrapper in client-only pages ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;30959](https://redirect.github.com/nuxt/nuxt/pull/30959)) - **nuxt:** Make `shared/` directories available within layers ([#&#8203;30843](https://redirect.github.com/nuxt/nuxt/pull/30843)) - **kit:** Ensure nuxt is loaded from cwd rather than parent dir ([#&#8203;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 ([#&#8203;31014](https://redirect.github.com/nuxt/nuxt/pull/31014)) - Remove unimplemented `page:transition:start` type ([#&#8203;31040](https://redirect.github.com/nuxt/nuxt/pull/31040)) - **kit:** Expose module dependency errors ([#&#8203;31035](https://redirect.github.com/nuxt/nuxt/pull/31035)) - **nuxt:** Deprioritise layer css imports ([#&#8203;31020](https://redirect.github.com/nuxt/nuxt/pull/31020)) - **nuxt:** Ensure `provide` / `inject` work in `setup` of `defineNuxtComponent` ([#&#8203;30982](https://redirect.github.com/nuxt/nuxt/pull/30982)) - **nuxt:** Decode URI components in cache driver methods ([#&#8203;30973](https://redirect.github.com/nuxt/nuxt/pull/30973)) - **nuxt:** Use `_` for NuxtIsland name on server pages ([#&#8203;31072](https://redirect.github.com/nuxt/nuxt/pull/31072)) - **nuxt:** Use `ohash` to calculate legacy async data key without hash ([#&#8203;31087](https://redirect.github.com/nuxt/nuxt/pull/31087)) - **nuxt,schema:** Resolve `shared` dir from config ([#&#8203;31091](https://redirect.github.com/nuxt/nuxt/pull/31091)) - **kit,schema:** Set esbuild target for experimental decorators ([#&#8203;31089](https://redirect.github.com/nuxt/nuxt/pull/31089)) - **nuxt:** Set `nuxt.options.pages` to detected configuration ([#&#8203;31101](https://redirect.github.com/nuxt/nuxt/pull/31101)) - **nuxt:** Warn when `definePageMeta` does not receive an object ([#&#8203;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 ([#&#8203;31081](https://redirect.github.com/nuxt/nuxt/pull/31081)) - **nuxt:** Do not render payloads if disabled, and correct regexp ([#&#8203;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 ([#&#8203;31209](https://redirect.github.com/nuxt/nuxt/pull/31209)) - **nuxt:** Resolve shared externals to absolute paths ([#&#8203;31227](https://redirect.github.com/nuxt/nuxt/pull/31227)) - **nuxt:** Skip deep merge in dev mode for prototype keys ([#&#8203;31205](https://redirect.github.com/nuxt/nuxt/pull/31205)) - **schema:** Use `RawVueCompilerOptions` for unresolved `tsconfig` ([#&#8203;31202](https://redirect.github.com/nuxt/nuxt/pull/31202)) - **nuxt:** Ensure externals are resolved first ([#&#8203;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 ([#&#8203;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 ([#&#8203;31248](https://redirect.github.com/nuxt/nuxt/pull/31248)) - **nuxt:** Preserve query/hash when calling `navigateTo` with replace ([#&#8203;31244](https://redirect.github.com/nuxt/nuxt/pull/31244)) - **nuxt:** Apply ignore rules to nitro `devStorage` ([#&#8203;31233](https://redirect.github.com/nuxt/nuxt/pull/31233)) - **nuxt:** Fall back to wasm if oxc native bindings are missing ([#&#8203;31190](https://redirect.github.com/nuxt/nuxt/pull/31190)) - **nuxt:** Pass `useFetch` function name on server for warning ([#&#8203;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 ([#&#8203;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 ([#&#8203;31083](https://redirect.github.com/nuxt/nuxt/pull/31083)) - **nuxt:** Re-organize internal `runtime/nitro` files ([#&#8203;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 ([#&#8203;31094](https://redirect.github.com/nuxt/nuxt/pull/31094)) ##### πŸ“– Documentation - Tiny typo ([#&#8203;30799](https://redirect.github.com/nuxt/nuxt/pull/30799)) - Fix typo ([#&#8203;30817](https://redirect.github.com/nuxt/nuxt/pull/30817)) - Remove backslashes in `spaLoadingTemplate` example ([#&#8203;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 ([#&#8203;30726](https://redirect.github.com/nuxt/nuxt/pull/30726)) - Add additional information about `NuxtPage` ([#&#8203;30781](https://redirect.github.com/nuxt/nuxt/pull/30781)) - Improve `navigateTo` docs with clearer structure and examples ([#&#8203;30876](https://redirect.github.com/nuxt/nuxt/pull/30876)) - Add auto import info about shared utils ([#&#8203;30858](https://redirect.github.com/nuxt/nuxt/pull/30858)) - Fix typo and improve data fetching examples ([#&#8203;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 ([#&#8203;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 ([#&#8203;30971](https://redirect.github.com/nuxt/nuxt/pull/30971)) - Add tips on how to override layers aliases ([#&#8203;30970](https://redirect.github.com/nuxt/nuxt/pull/30970)) - Add description for `vue:setup` and `app:data:refresh` hooks ([#&#8203;31001](https://redirect.github.com/nuxt/nuxt/pull/31001)) - Mention requirement to wrap middleware in `defineNuxtRouteMiddleware` ([#&#8203;31005](https://redirect.github.com/nuxt/nuxt/pull/31005)) - Add `port` option to preview command ([#&#8203;30999](https://redirect.github.com/nuxt/nuxt/pull/30999)) - Remove link to deleted nuxt 2 section ([#&#8203;31077](https://redirect.github.com/nuxt/nuxt/pull/31077)) - Link to the scripts releases page ([#&#8203;31095](https://redirect.github.com/nuxt/nuxt/pull/31095)) - Add `.nuxtrc` documentation ([#&#8203;31093](https://redirect.github.com/nuxt/nuxt/pull/31093)) - Fix typo in example command ([#&#8203;31112](https://redirect.github.com/nuxt/nuxt/pull/31112)) - Explain why headers not forwarded when using `$fetch` on the server ([#&#8203;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 ([#&#8203;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 ([#&#8203;31116](https://redirect.github.com/nuxt/nuxt/pull/31116)) - Mention workaround for `typedPages` in unhoisted pnpm setups ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;31218](https://redirect.github.com/nuxt/nuxt/pull/31218)) - Migrate hmr test to use playwright runner ([#&#8203;31241](https://redirect.github.com/nuxt/nuxt/pull/31241)) ##### ❀️ Contributors - Anoesj Sadraee ([@&#8203;Anoesj](https://redirect.github.com/Anoesj)) - Daniel Roe ([@&#8203;danielroe](https://redirect.github.com/danielroe)) - John Tanzer ([@&#8203;moshetanzer](https://redirect.github.com/moshetanzer)) - Connor Pearson ([@&#8203;cjpearson](https://redirect.github.com/cjpearson)) - Connor Roberts ([@&#8203;murshex](https://redirect.github.com/murshex)) - Harlan Wilton ([@&#8203;harlan-zw](https://redirect.github.com/harlan-zw)) - Alex Liu ([@&#8203;Mini-ghost](https://redirect.github.com/Mini-ghost)) - Kevin Deng 三咲智子 ([@&#8203;sxzz](https://redirect.github.com/sxzz)) - xjccc ([@&#8203;xjccc](https://redirect.github.com/xjccc)) - Julien Huang ([@&#8203;huang-julien](https://redirect.github.com/huang-julien)) - Michael Brevard ([@&#8203;GalacticHypernova](https://redirect.github.com/GalacticHypernova)) - Maik Kowol ([@&#8203;94726](https://redirect.github.com/94726)) - Anthony Fu ([@&#8203;antfu](https://redirect.github.com/antfu)) - Bobbie Goede ([@&#8203;BobbieGoede](https://redirect.github.com/BobbieGoede)) - Clayton Chew ([@&#8203;claytonchew](https://redirect.github.com/claytonchew)) - awfulness ([@&#8203;awfulness](https://redirect.github.com/awfulness)) - SΓ©bastien Chopin ([@&#8203;atinux](https://redirect.github.com/atinux)) - Saeid Zareie ([@&#8203;Saeid-Za](https://redirect.github.com/Saeid-Za)) - Vahagn Zaqaryan ([@&#8203;Vahagn-Zaqaryan](https://redirect.github.com/Vahagn-Zaqaryan)) - Idorenyin Udoh ([@&#8203;idorenyinudoh](https://redirect.github.com/idorenyinudoh)) - Jonas Thelemann ([@&#8203;dargmuesli](https://redirect.github.com/dargmuesli)) - Ryota Watanabe ([@&#8203;wattanx](https://redirect.github.com/wattanx)) - Horu ([@&#8203;HigherOrderLogic](https://redirect.github.com/HigherOrderLogic)) - Nolhan ([@&#8203;Nonolanlan1007](https://redirect.github.com/Nonolanlan1007)) - Typed SIGTERM ([@&#8203;typed-sigterm](https://redirect.github.com/typed-sigterm)) - Hans Tu ([@&#8203;ChiaHanTu](https://redirect.github.com/ChiaHanTu)) - Damian GΕ‚owala ([@&#8203;DamianGlowala](https://redirect.github.com/DamianGlowala)) - David Marr ([@&#8203;marr](https://redirect.github.com/marr)) - Camille Coutens ([@&#8203;Kamsou](https://redirect.github.com/Kamsou)) - Charlie ✨ ([@&#8203;CharleeWa](https://redirect.github.com/CharleeWa)) - Hussain Panahy ([@&#8203;HP8585](https://redirect.github.com/HP8585)) - [@&#8203;beer](https://redirect.github.com/beer) ([@&#8203;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` ([#&#8203;30754](https://redirect.github.com/nuxt/nuxt/pull/30754)) - **nuxt:** Clear island uid before saving into the payload ([#&#8203;30767](https://redirect.github.com/nuxt/nuxt/pull/30767)) - **kit:** Load `@nuxt/schema` from `nuxt` package dir ([#&#8203;30774](https://redirect.github.com/nuxt/nuxt/pull/30774)) - **nuxt:** Allow restarting nuxt on paths outside `srcDir` ([#&#8203;30771](https://redirect.github.com/nuxt/nuxt/pull/30771)) - **nuxt:** Don't warn about calling `useRoute` in SFC setup ([#&#8203;30788](https://redirect.github.com/nuxt/nuxt/pull/30788)) - **webpack:** Disallow cross-site requests in no-cors mode ([#&#8203;30757](https://redirect.github.com/nuxt/nuxt/pull/30757)) - **vite:** Restore `externality` for dev server externals ([#&#8203;30802](https://redirect.github.com/nuxt/nuxt/pull/30802)) ##### πŸ’… Refactors - **vite:** Use new rollup `chunk.names` for asset names ([#&#8203;30780](https://redirect.github.com/nuxt/nuxt/pull/30780)) ##### ❀️ Contributors - Daniel Roe ([@&#8203;danielroe](https://redirect.github.com/danielroe)) - Peter Radko ([@&#8203;Gwynerva](https://redirect.github.com/Gwynerva)) - Lansi ([@&#8203;lansi951](https://redirect.github.com/lansi951)) - Julien Huang ([@&#8203;huang-julien](https://redirect.github.com/huang-julien)) - Norbiros ([@&#8203;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 ([#&#8203;30650](https://redirect.github.com/nuxt/nuxt/pull/30650)) - **nuxt:** Reduce number of `mkdirSync` calls ([#&#8203;30651](https://redirect.github.com/nuxt/nuxt/pull/30651)) - **nuxt:** Reduce unnecessary template updating ([#&#8203;30684](https://redirect.github.com/nuxt/nuxt/pull/30684)) - **kit:** Reduce duplication between `findPath` and `resolvePath` ([#&#8203;30682](https://redirect.github.com/nuxt/nuxt/pull/30682)) - **kit:** Run components compat check synchronously ([#&#8203;30685](https://redirect.github.com/nuxt/nuxt/pull/30685)) - **nuxt:** Early return from annotation for non-object syntax plugins ([#&#8203;30683](https://redirect.github.com/nuxt/nuxt/pull/30683)) - **nuxt:** Enable `Transition` component only on client side ([#&#8203;30720](https://redirect.github.com/nuxt/nuxt/pull/30720)) ##### 🩹 Fixes - **vite:** Override previous `#app-manifest` alias ([#&#8203;30618](https://redirect.github.com/nuxt/nuxt/pull/30618)) - **kit,nuxt,schema,vite:** Improve watching behaviour ([#&#8203;30620](https://redirect.github.com/nuxt/nuxt/pull/30620)) - **nuxt:** Fall back to `plugin.src` for variable name generation ([#&#8203;30649](https://redirect.github.com/nuxt/nuxt/pull/30649)) - **schema:** Allow overriding `dev`/`test` environment value ([#&#8203;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 ([#&#8203;30619](https://redirect.github.com/nuxt/nuxt/pull/30619)) - **vite:** Inline shared folder in dev mode ([#&#8203;30690](https://redirect.github.com/nuxt/nuxt/pull/30690)) - **nuxt:** Deep clone extracted page meta ([#&#8203;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 ([#&#8203;30634](https://redirect.github.com/nuxt/nuxt/pull/30634)) ##### πŸ“– Documentation - Add link to custom `useFetch` example ([#&#8203;30629](https://redirect.github.com/nuxt/nuxt/pull/30629)) - Fix example command ([#&#8203;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` ([#&#8203;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` ([#&#8203;30656](https://redirect.github.com/nuxt/nuxt/pull/30656)) - Explain how to use `ClientOnly` with `onMounted` hook ([#&#8203;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 ([#&#8203;30612](https://redirect.github.com/nuxt/nuxt/pull/30612)) - Add example on how to disable default routes for ssg ([#&#8203;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 ([#&#8203;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 ([#&#8203;30688](https://redirect.github.com/nuxt/nuxt/pull/30688)) - Reenable nuxt benchmarking ([#&#8203;30711](https://redirect.github.com/nuxt/nuxt/pull/30711)) ##### ❀️ Contributors - Alex Liu ([@&#8203;Mini-ghost](https://redirect.github.com/Mini-ghost)) - Daniel Roe ([@&#8203;danielroe](https://redirect.github.com/danielroe)) - Alan Schio ([@&#8203;schirrel](https://redirect.github.com/schirrel)) - xjccc ([@&#8203;xjccc](https://redirect.github.com/xjccc)) - Saeid Zareie ([@&#8203;Saeid-Za](https://redirect.github.com/Saeid-Za)) - Zakhar Shymanchyk ([@&#8203;zshimanchik](https://redirect.github.com/zshimanchik)) - Arturs Jansons ([@&#8203;iegik](https://redirect.github.com/iegik)) - Maxime Pauvert ([@&#8203;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 ([#&#8203;30460](https://redirect.github.com/nuxt/nuxt/pull/30460)) - **nuxt:** Use lighter `@nuxt/cli` dependency ([#&#8203;30526](https://redirect.github.com/nuxt/nuxt/pull/30526)) - **kit:** Remove iterations when resolving module path ([#&#8203;30562](https://redirect.github.com/nuxt/nuxt/pull/30562)) - **nuxt:** Avoid checking fs for existence of scanned pages ([#&#8203;30581](https://redirect.github.com/nuxt/nuxt/pull/30581)) - **nuxt:** Defer version/config warnings to after build ([#&#8203;30567](https://redirect.github.com/nuxt/nuxt/pull/30567)) ##### 🩹 Fixes - **nuxt:** Collect all identifiers before extracting page metadata ([#&#8203;30478](https://redirect.github.com/nuxt/nuxt/pull/30478)) - **nuxt:** Don't hoist identifiers declared locally in `definePageMeta` when extracting page metadata ([#&#8203;30490](https://redirect.github.com/nuxt/nuxt/pull/30490)) - **kit:** Reorder `#build` to the end of `tsConfig` paths ([#&#8203;30520](https://redirect.github.com/nuxt/nuxt/pull/30520)) - **nuxt:** Use `fullPath` instead of empty string in router hmr ([#&#8203;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 ([#&#8203;30540](https://redirect.github.com/nuxt/nuxt/pull/30540)) - **nuxt:** Call `page:loading:end` only once with nested pages ([#&#8203;29009](https://redirect.github.com/nuxt/nuxt/pull/29009)) - **nuxt:** Warn about ignored char while parsing route segment ([#&#8203;30396](https://redirect.github.com/nuxt/nuxt/pull/30396)) - **nuxt:** Allow url-specific chars in vfs ([#&#8203;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` ([#&#8203;30587](https://redirect.github.com/nuxt/nuxt/pull/30587)) - **nuxt:** Avoid invoking `shouldPrefetch` on the server side ([#&#8203;30591](https://redirect.github.com/nuxt/nuxt/pull/30591)) - **nuxt:** Decode id before resolving relative imports ([#&#8203;30599](https://redirect.github.com/nuxt/nuxt/pull/30599)) ##### πŸ’… Refactors - **kit,nuxt,webpack:** Reduce reassignments ([#&#8203;30589](https://redirect.github.com/nuxt/nuxt/pull/30589)) ##### πŸ“– Documentation - Document `--dev` option for the module command ([#&#8203;30477](https://redirect.github.com/nuxt/nuxt/pull/30477)) - Document the add layer command ([#&#8203;30476](https://redirect.github.com/nuxt/nuxt/pull/30476)) - Update v4 release date ([#&#8203;30514](https://redirect.github.com/nuxt/nuxt/pull/30514)) - Ensure correct type for `url` in `useFetch` ([#&#8203;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 ([#&#8203;30536](https://redirect.github.com/nuxt/nuxt/pull/30536)) - Update hash link to correct heading ([#&#8203;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` ([#&#8203;30570](https://redirect.github.com/nuxt/nuxt/pull/30570)) - Resolve many twoslash errors ([#&#8203;30573](https://redirect.github.com/nuxt/nuxt/pull/30573)) - Add context for `useAsyncData` side effects ([#&#8203;30479](https://redirect.github.com/nuxt/nuxt/pull/30479)) - Update examples to use function declarations for clarity ([#&#8203;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 ([#&#8203;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 ([@&#8203;danielroe](https://redirect.github.com/danielroe)) - Alex Liu ([@&#8203;Mini-ghost](https://redirect.github.com/Mini-ghost)) - Anthony Fu ([@&#8203;antfu](https://redirect.github.com/antfu)) - Camille Coutens ([@&#8203;Kamsou](https://redirect.github.com/Kamsou)) - Julien Huang ([@&#8203;huang-julien](https://redirect.github.com/huang-julien)) - Peter Buglavecz ([@&#8203;buglavecz](https://redirect.github.com/buglavecz)) - ikxin ([@&#8203;ikxin](https://redirect.github.com/ikxin)) - Guspan Tanadi ([@&#8203;guspan-tanadi](https://redirect.github.com/guspan-tanadi)) - Vuk Marjanovic ([@&#8203;vmrjnvc](https://redirect.github.com/vmrjnvc)) - Saeid Zareie ([@&#8203;Saeid-Za](https://redirect.github.com/Saeid-Za)) - Matej ČernΓ½ ([@&#8203;cernymatej](https://redirect.github.com/cernymatej)) - ClΓ©ment Ollivier ([@&#8203;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 ([#&#8203;30360](https://redirect.github.com/nuxt/nuxt/pull/30360)) - **schema:** Drop unneeded type-only schema dependencies ([#&#8203;30411](https://redirect.github.com/nuxt/nuxt/pull/30411)) - **rspack,webpack:** Drop `lodash-es` dependency ([#&#8203;30409](https://redirect.github.com/nuxt/nuxt/pull/30409)) - **nuxt:** Drop `pathe` browser dep for deep server components ([#&#8203;30456](https://redirect.github.com/nuxt/nuxt/pull/30456)) ##### 🩹 Fixes - **nuxt:** Update module path for defaults ([#&#8203;30371](https://redirect.github.com/nuxt/nuxt/pull/30371)) - **nuxt:** Ignore non-reference identifiers when extracting page metadata ([#&#8203;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 ([#&#8203;30412](https://redirect.github.com/nuxt/nuxt/pull/30412)) - **nuxt:** Use node `location` instead of `range` for route meta property extraction ([#&#8203;30447](https://redirect.github.com/nuxt/nuxt/pull/30447)) - **schema:** Override `vueCompilerOptions.plugins` type ([#&#8203;30454](https://redirect.github.com/nuxt/nuxt/pull/30454)) - **nuxt:** Respect `baseURL` when ignoring prerendered manifest ([#&#8203;30446](https://redirect.github.com/nuxt/nuxt/pull/30446)) - **nuxt:** Respect `router.options` when hmring routes ([#&#8203;30455](https://redirect.github.com/nuxt/nuxt/pull/30455)) ##### πŸ’… Refactors - **nuxt:** Use `consola` with `nuxt` tag instead of console ([#&#8203;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 ([#&#8203;30437](https://redirect.github.com/nuxt/nuxt/pull/30437)) ##### 🏑 Chore - Add configuration for JetBrains IDEs ([#&#8203;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 ([@&#8203;danielroe](https://redirect.github.com/danielroe)) - Anders Bootsmann Larsen ([@&#8203;bootsmann1995](https://redirect.github.com/bootsmann1995)) - Alexander Lichter ([@&#8203;TheAlexLichter](https://redirect.github.com/TheAlexLichter)) - Matej ČernΓ½ ([@&#8203;cernymatej](https://redirect.github.com/cernymatej)) - Connor Roberts ([@&#8203;murshex](https://redirect.github.com/murshex)) - Julien Huang ([@&#8203;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 ([#&#8203;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. ![CleanShot 2024-11-14 at 15 05 22@&#8203;2x](https://redirect.github.com/user-attachments/assets/57525027-750a-462f-b713-398302aec0cd) ##### πŸ—ΊοΈ 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 [#&#8203;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) ([#&#8203;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` ([#&#8203;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` ([#&#8203;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 ([#&#8203;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` ([#&#8203;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 ([#&#8203;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) ([#&#8203;30044](https://redirect.github.com/nuxt/nuxt/pull/30044)) - **kit:** Allow module default options to be async ([#&#8203;29980](https://redirect.github.com/nuxt/nuxt/pull/29980)) - **nuxt:** Add new types to vue preset ([#&#8203;29819](https://redirect.github.com/nuxt/nuxt/pull/29819)) - **nuxt:** Experimental `extraPageMetaExtractionKeys` ([#&#8203;30015](https://redirect.github.com/nuxt/nuxt/pull/30015)) - **nuxt,schema:** Allow setting serialisable vue app config ([#&#8203;28873](https://redirect.github.com/nuxt/nuxt/pull/28873)) - **nuxt:** Print nuxt hook timings in browser devtools ([#&#8203;29922](https://redirect.github.com/nuxt/nuxt/pull/29922)) - **nuxt:** Support vue directive auto-imports within unimport ([#&#8203;29818](https://redirect.github.com/nuxt/nuxt/pull/29818)) - **schema:** Add snow effect on loading screen in winter ([#&#8203;29871](https://redirect.github.com/nuxt/nuxt/pull/29871)) - **nuxt:** Support local functions in `definePageMeta` ([#&#8203;30241](https://redirect.github.com/nuxt/nuxt/pull/30241)) - **nuxt:** Add `mode: 'navigation'` to `callOnce` ([#&#8203;30260](https://redirect.github.com/nuxt/nuxt/pull/30260)) ##### πŸ”₯ Performance - **nuxt:** Preload app manifest ([#&#8203;30017](https://redirect.github.com/nuxt/nuxt/pull/30017)) - **nuxt:** Use static `hashMode` option ([#&#8203;30297](https://redirect.github.com/nuxt/nuxt/pull/30297)) - **vite:** Use vite to clear screen ([#&#8203;30315](https://redirect.github.com/nuxt/nuxt/pull/30315)) - **schema:** Only inline styles for vue components ([#&#8203;30305](https://redirect.github.com/nuxt/nuxt/pull/30305)) - **nuxt:** Remove useId from composable key plugin ([#&#8203;30328](https://redirect.github.com/nuxt/nuxt/pull/30328)) ##### 🩹 Fixes - **nuxt:** Check if nuxt link observer is null ([#&#8203;30038](https://redirect.github.com/nuxt/nuxt/pull/30038)) - **nuxt:** Unref the default value of asyncData when clearing ([#&#8203;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 9882c75

File tree

1 file changed

+72
-7
lines changed

1 file changed

+72
-7
lines changed

β€Žpnpm-lock.yaml

Lines 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

Comments
Β (0)