chore(deps): update nuxtjs monorepo to v3.15.0 #66
+2,697
−1,719
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
3.12.2
->3.15.0
3.12.2
->3.15.0
Release Notes
nuxt/nuxt (@nuxt/schema)
v3.15.0
Compare Source
👀 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).
⚡️ Vite 6 included
Nuxt v3.15 includes Vite 6 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). 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.
🪵 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 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 for more info.)🥵 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).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). This enables module authors to use this information at build time, in thepages:resolved
hook.We also now support local functions in
definePageMeta
(#30241). This means you can do something like this:🔥 Performance improvements
We now preload the app manifest in the browser if it will be used when hydrating the app (#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).🐣 v4 updates
If A few more changes shipped for the new defaults for v4, including only inlining styles by default for Vue components (#30305).
✅ Upgrading
As usual, our recommendation for upgrading is to run:
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
🚀 Enhancements
extraPageMetaExtractionKeys
(#30015)definePageMeta
(#30241)mode: 'navigation'
tocallOnce
(#30260)🔥 Performance
hashMode
option (#30297)🩹 Fixes
addServerTemplate
(a02af2348)extraExtractionKeys
on runtimeroute.meta
(ae9f42f4a)style
value for head components (#29999)useId
implementation (40f437d25)buildDir
tonormalizeTemplate
(#30115)useRequestFetch
(#30117)nitropack
rather thannitro
import (2d5b53b23)engines.node
to match dependencies (#30139)routerOptions.history
to return null (#30192)useId
for island client component teleport id (#30151)nuxt
andnuxt/app
(#30148)getRouteRules
works with nitro signature (#30277)replace
in middleware withnavigateTo
(#30283)nitropack
(f220314a5)<RouterLink>
for links starting with#
(#30190)#app-manifest
(ec613e533)useId
forclient-fallback
component uid (#30314)@vitest/
(4171a1076)addTemplate
if undefined (#30348)import.meta.hot.data
(b1cf5781d)💅 Refactors
composable-keys
plugin into nuxt core (#30029)nuxt:
(#30028)📖 Documentation
event.waitUntil
(#29583)vite.dev
(#30111)nuxi upgrade
channel flag (#30184)useLazyFetch
(#30171)vite.css.preprocessorMaxWorkers
(eb1ba017c)compatibilityVersion
feature flag (#30274)nuxi
command pages (#30199)inlineStyles
(2660bffbc)🏡 Chore
unimport
(7ee455969)installed-check
dependency (0e84cb9a4)engines.node
to reflect only deps (d3d276919)rimraf
(cf9d82c5a)div
wrapper in client-only page (#30359)✅ Tests
🤖 CI
❤️ Contributors
v3.14.1592
Compare Source
👉 Changelog
compare changes
🩹 Fixes
webpackbar
with support for rspack (#29823)dst
to deduplicate templates when adding them (#29895)dst
to invalidate modules (6cd3352de)change
events (#29954)<NuxtWelcome>
when building (#29956)💅 Refactors
📖 Documentation
🏡 Chore
✅ Tests
🤖 CI
❤️ Contributors
v3.14.159
Compare Source
We're leaning into the π theme - future patch releases of this minor version will just continue adding digits. (Sorry for any inconvenience! 😆)
👉 Changelog
compare changes
🩹 Fixes
module.json
(#29793)mlly
to resolve module paths to avoid cjs fallback (#29799)webpack-dev-middleware
(#29806)📖 Documentation
🏡 Chore
❤️ Contributors
v3.14.0
Compare Source
👀 Highlights
Behind the scenes, a lot has been going on in preparation for the release of Nuxt v4 (particularly on the
unjs
side with preparations for Nitro v3!)⚡️ Faster starts powered by
jiti
Loading the nuxt config file, as well as modules and other build-time code, is now powered by
jiti
v2. You can see more about the release in the jiti v2 release notes, but one of the most important pieces is native node esm import (where possible), which should mean a faster start. ✨📂 Shared folder for code and types shared with client/server
You should never import Vue app code in your nitro code (or the other way around). But this has meant a friction point when it comes to sharing types or utilities that don't rely on the nitro/vue contexts.
For this, we have a new
shared/
folder (#28682). You can't import Vue or nitro code into files in this folder, but it produces auto-imports you can consume throughout the rest of your app.If needed you can use the new
#shared
alias which points to this folder.The shared folder is alongside your
server/
folder. (If you're usingcompatibilityVersion: 4
, this means it's not inside yourapp/
folder.)🦀
rspack
builderWe're excited to announce a new first-class Nuxt builder for
rspack
. It's still experimental but we've refactored the internal Nuxt virtual file system to useunplugin
to make this possible.Let us know if you like it - and feel free to raise any issues you experience with it.
👉 To try it out, you can use this starter - or just install
@nuxt/rspack-builder
and setbuilder: 'rspack'
in your nuxt config file.✨ New composables
We have new
useResponseHeader
anduseRuntimeHook
composables (#27131 and #29741).🔧 New module utilities
We now have a new
addServerTemplate
utility (#29320) for adding virtual files for access inside nitro runtime routes.🚧 v4 changes
We've merged some changes which only take effect with
compatibilityVersion: 4
, but which you can opt-into earlier.previously, if you had a component like
~/components/App/Header.vue
this would be visible in your devtools as<Header>
. From v4 we ensure this is<AppHeader>
, but it's opt-in to avoid breaking any manual<KeepAlive>
you might have implemented. (#28745).Nuxt scans page metadata from your files, before calling
pages:extend
. But this has led to some confusing behaviour, as pages added at this point do not end up having their page metadata respected. So we now do not scan metadata before callingpages:extend
. Instead, we have a newpages:resolved
hook, which is called afterpages:extend
, after all pages have been augmented with their metadata. I'd recommend opting into this by settingexperimental.scanPageMeta
toafter-resolve
, as it solves a number of bugs.🗺️ Roadmap to v3.15
They didn't quite make it in time for v3.14 but for the next minor release you can expect (among other things):
✅ Upgrading
As usual, our recommendation for upgrading is to run:
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
🚀 Enhancements
jiti
(#29073)addServerTemplate
utility (#29320)useResponseHeader
composable (#27131)rspack
builder (#29142)pages:resolved
hook + scan meta post extend (#28861)definePageMeta
(#29586)shared/
folder and#shared
alias (#28682)useRuntimeHook
composable (#29741)🔥 Performance
useNuxtApp
(#29514)🩹 Fixes
InjectionType
template conditional (#29023)webpack
memfs (#29027)DOMException
as fetch abort exception (#29058)devServer.https
(#29049)buildDir
in dev mode (#29068)node_modules/
from parent urls (5bd42c893)crossorigin
attribute for stylesheets (#29138)routeRules
to hint pages to prerender (#29172)link:prefetch
(#29321)ConfigLayer
type fromc12
(#29370)typedPages
(#29352)configFile
as required in layer type (3bbcd7d21)createIsExternal
(686be8168)props
value indefinePageMeta
(#29683)nitropack/types
to ensure api routes are typed (54096875e)💅 Refactors
addBuildPlugin
internally (#29157)📖 Documentation
defineNuxtComponent
instead ofdefineComponent
(#29011)useRequestFetch
andevent.$fetch
(#29099)useFetch
errors (#29253)ofetch
headers for interceptors (#29118).env.test
(#29398)mockImplementation()
call (#29669)$fetch
(#29755)--envName
flag (#28909)📦 Build
beasties
(1b5391182)🏡 Chore
unbuild
update (71e0fb06f)jiti.import
(7ece49f9b)✅ Tests
unctx
transform (d81196122)🤖 CI
❤️ Contributors
v3.13.2
Compare Source
✅ Upgrading
As usual, our recommendation for upgrading is to run:
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
🔥 Performance
🩹 Fixes
propsDestructure
by default (#28830)route
has enumerable keys (#28841)asyncData
(#28842)ssr: false
(#28834)injectAtEnd
to reduce circular auto-imports (#28822)buildDir
for unimport (#28899)<NuxtErrorBoundary>
(#28901)modules
array (#28922)filePath
(#28925)runWithContext
generic (#28926)inheritAttrs: false
for fragment components (#28939)<script>
blocks (4fd24381c)isNuxtMajorVersion
export (#29016)useError
(#28996)💅 Refactors
vite:preloadError
event (#28862)📖 Documentation
useFetch
parameter signature (#28993)🏡 Chore
noUncheckedSideEffectImports
(#28903)pending triage
to blank issues (#28923)htmlnano
+ pin workflow deps (#28946)✅ Tests
route
in template (#28967)🤖 CI
❤️ Contributors
v3.13.1
Compare Source
👀 Highlights
Although this is a patch release, there are two features I'd love to draw your attention to.
useId
now uses a built-in Vue composable for stable ids between server + client! https://github.com/nuxt/nuxt/pull/28285experimental.buildCache
feature now allows for quicker app rebuilds https://github.com/nuxt/nuxt/pull/28726As always, feedback is appreciated 🙏 ❤️
✅ Upgrading
As usual, our recommendation for upgrading is to run:
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
🔥 Performance
ServerPlaceholder
for ssr client components (#28563)🩹 Fixes
serverDir
relative to root (#28700)MiddlewareKey
(#28676)NuxtLink
(#28738)NuxtOptions
as well as config (#28747)CookieStore
events (#28760)appConfig
with non-iterable objects (#28773)isNuxtError
type inference (#28814)💅 Refactors
useId
(#28285)📖 Documentation
query
returned value fromuseRoute()
(#28743)--frozen-lockfile
when installing dependencies (#28794)🏡 Chore
tinyexec
internally (#28684)tinyglobby
internally (#28686)✅ Tests
❤️ Contributors
v3.13.0
Compare Source
👀 Highlights
I'm pretty excited about this release - we've ported some features we had planned for Nuxt v4 back to v3, as well as a raft of bug fixes and performance improvements - as usual.
Here are a few of things I'm most excited about.
🏘️ Route Groups
We now support naming directories with parentheses/brackets to organise your routes without affecting the path.
For example:
This will produce
/
,/about
and/contact
pages in your app. Themarketing
group is ignored for purposes of your URL structure.Read more in the original PR.
🏝️ Islands and Head Metadata
It's now possible for server component islands to manipulate the head, such as by adding SEO metadata when rendering.
Read more in #27987.
🪝 Custom Prefetch Triggers
We now support custom prefetch triggers for
NuxtLink
(#27846).For example:
It's also possible to enable/disable these globally for your app and override them per link.
For example: