NuxtJS
v3.9.0
#nuxt3.9.0 is the next minor release.
π Highlights
A very merry Christmas to you and yours from all Nuxters involved in this release! ππ
We have lots of features packed into v3.9.0 and can't wait for you to try them out.
β‘οΈ Vite 5
This release comes with Vite 5 and Rollup 4 support. Module authors may need to check to ensure that any vite plugins you're creating are compatible with these latest releases.
This comes with a whole host of great improvements and bug fixes - check out the Vite changelog for more info.
β¨ Vue 3.4 ready
This release is tested with the latest Vue 3.4 release candidate, and has the necessary configuration to take advantage of new features in Vue 3.4, including debugging hydration errors in production (just set
π To take advantage, just update your
v3.9.0
#nuxt3.9.0 is the next minor release.
π Highlights
A very merry Christmas to you and yours from all Nuxters involved in this release! ππ
We have lots of features packed into v3.9.0 and can't wait for you to try them out.
β‘οΈ Vite 5
This release comes with Vite 5 and Rollup 4 support. Module authors may need to check to ensure that any vite plugins you're creating are compatible with these latest releases.
This comes with a whole host of great improvements and bug fixes - check out the Vite changelog for more info.
β¨ Vue 3.4 ready
This release is tested with the latest Vue 3.4 release candidate, and has the necessary configuration to take advantage of new features in Vue 3.4, including debugging hydration errors in production (just set
debug: true
) in your Nuxt config.π To take advantage, just update your
vue
version once v3.4 is released, or try out the release candidate today:{
"dependencies": {
"nuxt": "3.9.0",
"vue": "3.4.0-rc.1",
"vue-router": "latest"
}
}
Vue Updates
NuxtJS v3.9.0 #nuxt3.9.0 is the next minor release. π Highlights A very merry Christmas to you and yours from all Nuxters involved in this release! ππ We have lots of features packed into v3.9.0 and can't wait for you to try them out. β‘οΈ Vite 5 Thisβ¦
ποΈ Interactive Server Components
This is a highly-experimental update, but it's now possible to play around with interactive components within Nuxt server components. You'll need to enable this new feature additionally to component islands:
Now, within a server component, you can specify components to hydrate by using the
">
We're pretty excited about this one - so do let us know how you're using it! π
π₯ Automatic Server Optimisations
We now use Vite's new AST-aware 'define' to perform more accurate replacements on server-side code, meaning code like this will no longer throw an error:
if (document) { console.log(document.querySelector('div')) } ">
This hasn't been possible until now because we haven't wanted to run the risk of accidentally replacing normal words like
π¦ Granular Loading API
We now have a new hook-based system for , including a
You can read more in the docs and in the original PR (#24010).
π Run single events in
Sometimes you only want to run code once, no matter how many times you load a page - and you don't want to run it again on the client if it ran on the server.
For this, we have a new utility:
Note that this utility is context-aware so it must be called in component setup function or Nuxt plugin, as with other Nuxt composables.
Read more in the docs.
π¨ Error Types
For a while now, errors returned by
We've tried to implement the type change in a backwards compatible way, but you might notice that you need to update the generic if you're manually configuring the generics for these composables. See (#24396) for more information, and do let us know if you experience any issues.
π₯ Schema Performance
We've taken some time in this release to make some minor performance improvements, so you should notice some things are a bit faster. This is an ongoing project and we have ideas for improving initial load time of the Nuxt dev server.
β 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
β nuxt: Warn when page uses a layout without (#24116)
β kit: Support prepend option for
β kit: Allow customising logger options (#24243)
β nuxt: Allow readonly option for
β nuxt: Add path to
β kit: Load
β nuxt: Layers support for spa loading template (#24709)
β nuxt: Expose
β nuxt: Add
This is a highly-experimental update, but it's now possible to play around with interactive components within Nuxt server components. You'll need to enable this new feature additionally to component islands:
export default defineNuxtConfig({
experimental: {
componentIslands: {
selectiveClient: true
}
}
})
Now, within a server component, you can specify components to hydrate by using the
nuxt-client
directive:">
<NuxtLink :to="/" nuxt-client />
We're pretty excited about this one - so do let us know how you're using it! π
π₯ Automatic Server Optimisations
We now use Vite's new AST-aware 'define' to perform more accurate replacements on server-side code, meaning code like this will no longer throw an error:
if (document) { console.log(document.querySelector('div')) } ">
<script setup lang="ts">
if (document) {
console.log(document.querySelector('div'))
}
script>
This hasn't been possible until now because we haven't wanted to run the risk of accidentally replacing normal words like
document
within non-JS parts of your apps. But Vite's new define
functionality is powered by esbuild
and is syntax-aware, so we feel confident in enabling this functionality. Nevertheless, you can opt out if you need to:export default defineNuxtConfig({
hooks: {
'vite:extendConfig' (config) {
delete config.define!.document
}
}
})
π¦ Granular Loading API
We now have a new hook-based system for , including a
useLoadingIndicator
composable that lets you control/stop/start the loading state. You can also hook into page:loading:start
and page:loading:end
if you prefer.You can read more in the docs and in the original PR (#24010).
π Run single events in
callOnce
Sometimes you only want to run code once, no matter how many times you load a page - and you don't want to run it again on the client if it ran on the server.
For this, we have a new utility:
callOnce
(#24787).<script setup>
const websiteConfig = useState('config')
await callOnce(async () => {
console.log('This will only be logged once')
websiteConfig.value = await $fetch('https://my-cms.com/api/website-config')
})
script>
Note that this utility is context-aware so it must be called in component setup function or Nuxt plugin, as with other Nuxt composables.
Read more in the docs.
π¨ Error Types
For a while now, errors returned by
useAsyncData
and useFetch
have been typed pretty generically as Error
. We've significantly improved the type possibilities for them to make them more accurate in terms of what you'll actually receive. (We normalise errors with the h3
createError
utility under the hood, so they can be serialised from server to client, for example.)We've tried to implement the type change in a backwards compatible way, but you might notice that you need to update the generic if you're manually configuring the generics for these composables. See (#24396) for more information, and do let us know if you experience any issues.
π₯ Schema Performance
We've taken some time in this release to make some minor performance improvements, so you should notice some things are a bit faster. This is an ongoing project and we have ideas for improving initial load time of the Nuxt dev server.
β Upgrading
As usual, our recommendation for upgrading is to run:
nuxi 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
π Enhancements
β nuxt: Warn when page uses a layout without (#24116)
β kit: Support prepend option for
addComponentsDir
(#24309)β kit: Allow customising logger options (#24243)
β nuxt: Allow readonly option for
useCookie
(#24503)β nuxt: Add path to
error.data
when throwing 404 errors (#24674)β kit: Load
/module
or /nuxt
module subpath if it exists (#24707)β nuxt: Layers support for spa loading template (#24709)
β nuxt: Expose
refresh
on islands and server components (#24261)β nuxt: Add
dedupe
option for data fetching composables (#24564)
Vue Updates
ποΈ Interactive Server Components This is a highly-experimental update, but it's now possible to play around with interactive components within Nuxt server components. You'll need to enable this new feature additionally to component islands: export defaultβ¦
β vite: Replace browser globals with
β nuxt: Allow plugins to specify dependencies (#24127)
β kit: Add new
β nuxt: Transform
β nuxt: Allow customising fallback layout (#24777)
β nuxt:
β nuxt: Move loading api behind hooks (#24010)
β nuxt: Add
β nuxt: Allow client components within
β schema: Default to
β kit,nuxt,vite,webpack: Add
π₯ Performance
β vite: Avoid duplicate
β nuxt: Avoid duplicate iterations over layers (#24730)
β kit: Avoid duplicate
β vite: Simplify manifest property acccess (#24715)
β nuxt: Don't dedupe fewer than two middleware/plugins (#24718)
β schema: Avoid duplicate
β schema: Use parallel promises (#24771)
β nuxt: Avoid duplicate
β vite: Avoid duplicate
π©Ή Fixes
β nuxt: Avoid recursive ssr errors (#24399)
β nuxt: Improve path resolve for
β nuxt: Remove experimental
β nuxt: Ignore manifest when prerendering (#24504)
β nuxt: Don't strip literals from template in (#24511)
β vite: Use
β nuxt: Island components with number prefix (#24469)
undefined
on server (#24711)β nuxt: Allow plugins to specify dependencies (#24127)
β kit: Add new
addServerScanDir
composable (#24001)β nuxt: Transform
setup
within defineComponent
options (#24515)β nuxt: Allow customising fallback layout (#24777)
β nuxt:
useRequestHeader
utility (#24781)β nuxt: Move loading api behind hooks (#24010)
β nuxt: Add
callOnce
util to allow running code only once (#24787)β nuxt: Allow client components within
NuxtIsland
(#22649)β schema: Default to
bundler
module resolution (#22821)β kit,nuxt,vite,webpack: Add
toArray
util (#24857)π₯ Performance
β vite: Avoid duplicate
resolve
operation (#24736)β nuxt: Avoid duplicate iterations over layers (#24730)
β kit: Avoid duplicate
join
operation (#24717)β vite: Simplify manifest property acccess (#24715)
β nuxt: Don't dedupe fewer than two middleware/plugins (#24718)
β schema: Avoid duplicate
get
operations (#24734)β schema: Use parallel promises (#24771)
β nuxt: Avoid duplicate
useRuntimeConfig
call (#24843)β vite: Avoid duplicate
JSON.stringify
operation (#24848)π©Ή Fixes
β nuxt: Avoid recursive ssr errors (#24399)
β nuxt: Improve path resolve for
import.d.ts
(#24413)β nuxt: Remove experimental
reactivityTransform
(vue 3.4) (#24477)β nuxt: Ignore manifest when prerendering (#24504)
β nuxt: Don't strip literals from template in (#24511)
β vite: Use
isBuiltin
polyfill for greater node support (#24512)β nuxt: Island components with number prefix (#24469)
Vue Updates
β vite: Replace browser globals with undefined on server (#24711) β nuxt: Allow plugins to specify dependencies (#24127) β kit: Add new addServerScanDir composable (#24001) β nuxt: Transform setup within defineComponent options (#24515) β nuxt: Allow customisingβ¦
β nuxt: Use consistent annotations for tree-shaking (#24514)
β nuxt: Skip prerendering all pages in hash mode (#24517)
β nuxt: Skip router middleware/redirections for islands (#24421)
β nuxt: Remove trailing slash before checking if prerendered (#24516)
β nuxt: Skip check for usage in islands (#24529)
β vite,webpack: Don't add type checker/analyzer when testing (#24608)
β nuxt: Do not try auto-install outside of a Nuxt context (#24605)
β nuxt: Merge and apply layer hooks (#24639)
β nuxt: Only add/rem...
β nuxt: Skip prerendering all pages in hash mode (#24517)
β nuxt: Skip router middleware/redirections for islands (#24421)
β nuxt: Remove trailing slash before checking if prerendered (#24516)
β nuxt: Skip check for usage in islands (#24529)
β vite,webpack: Don't add type checker/analyzer when testing (#24608)
β nuxt: Do not try auto-install outside of a Nuxt context (#24605)
β nuxt: Merge and apply layer hooks (#24639)
β nuxt: Only add/rem...
Due to too large (in my mind) posts, I want to ask. Did this fine or you want change something. So, question:
how to best send information?
how to best send information?
Anonymous Poll
53%
Expanded (essentially what is currently done).
47%
Expanded β if it's short, and if it's too long β place it on telegra.ph.
13%
Shortened option (provide only a link to the changelog).
20%
I don't care. It's fine as it is.
Vuetify
v3.4.9
#vuetify
π Features
β VCalendar: port to v3 labs (#16803) (3158d0c), closes #13469
Other Commmits
β chore(release): publish v3.4.9 (f343549)
β docs(VCalendar): setup calendar api links and fix related pages (317e662)
β docs(VCalendar): fix api types (f88b25a)
β docs(UserOneBadge): fix store checking for subscriber (7968c1e)
β docs(README.md): update content (a7046b4)
β docs(subscriptions): update page (51d4ac6)
β docs: add stripe subscriptions (#18882) (9ee68d6)
β docs(upgrade-guide): add link for vue 3 migration guide (64caa65)
β docs(DiscordDeck): update logo urls (cce9427)
β docs(date-pickers): update spec link (20d0884)
v3.4.9
#vuetify
π Features
β VCalendar: port to v3 labs (#16803) (3158d0c), closes #13469
Other Commmits
β chore(release): publish v3.4.9 (f343549)
β docs(VCalendar): setup calendar api links and fix related pages (317e662)
β docs(VCalendar): fix api types (f88b25a)
β docs(UserOneBadge): fix store checking for subscriber (7968c1e)
β docs(README.md): update content (a7046b4)
β docs(subscriptions): update page (51d4ac6)
β docs: add stripe subscriptions (#18882) (9ee68d6)
β docs(upgrade-guide): add link for vue 3 migration guide (64caa65)
β docs(DiscordDeck): update logo urls (cce9427)
β docs(date-pickers): update spec link (20d0884)
Vue Updates
oh, cool
https://github.com/vuejs/core/pull/5912#issuecomment-1748985641
Improvements for performance
vue goes brrrr vuuuuuue
Improvements for performance
π₯3
Quasar
@quasar/extras-v1.16.8
#quasar
Changes
β feat(extras): update all fonts & fix the outdated css files #16543
β feat(extras): update Google Material Symbols (font & SVG) to the latest
Donations
Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:
β Becoming a sponsor on Github
β One-off donation via PayPal
@quasar/extras-v1.16.8
#quasar
Changes
β feat(extras): update all fonts & fix the outdated css files #16543
β feat(extras): update Google Material Symbols (font & SVG) to the latest
Donations
Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:
β Becoming a sponsor on Github
β One-off donation via PayPal
Quasar
quasar-v2.13.1
#quasar
New
β feat(QField): new prop -> "tag" #16548
Fixes
β fix(QInput): Add datetime-local as allowed type fix: #15929, #13241 (#16483)
β fix(ui): lang mk -- split param (#16511)
β fix(ui): q-item within QMenu should be selectable using the space key (fix: #16107) (#16364)
β fix(ui): mask: keep null value on clear #16346 (#16348)
β fix(ui): fix generic usage of QTreeNode type (fix: #15351) (#16513)
β fix(QDate): updateViewModel if navigation limitations set (fix: #16500) (#16501)
β fix(QImg): API - wrong @error param name #16545
β fix(QField): incorrect use of #16548
β fix(QField/QInput/...): wrong type ValidateProps.error / QFieldProps.error #16560
β fix(ui): types for component props where default value is null #16560
Donations
Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:
β Becoming a sponsor on Github
quasar-v2.13.1
#quasar
New
β feat(QField): new prop -> "tag" #16548
Fixes
β fix(QInput): Add datetime-local as allowed type fix: #15929, #13241 (#16483)
β fix(ui): lang mk -- split param (#16511)
β fix(ui): q-item within QMenu should be selectable using the space key (fix: #16107) (#16364)
β fix(ui): mask: keep null value on clear #16346 (#16348)
β fix(ui): fix generic usage of QTreeNode type (fix: #15351) (#16513)
β fix(QDate): updateViewModel if navigation limitations set (fix: #16500) (#16501)
β fix(QImg): API - wrong @error param name #16545
β fix(QField): incorrect use of #16548
β fix(QField/QInput/...): wrong type ValidateProps.error / QFieldProps.error #16560
β fix(ui): types for component props where default value is null #16560
Donations
Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:
β Becoming a sponsor on Github