packages/docs/src/pages/en/blog/september-2025-update.md
Welcome to our September update! This month marks significant progress as we assemble the building blocks for Vuetify's next phase. From revolutionary design-to-development workflows with our new Figma UI Kit to foundational v0 composables, September has been about connecting the pieces that will define the future of Vue development.
{ height=112 }
🖊️ John Leider • 📅 October 12th, 2025
<PromotedEntry />I've been heads-down on Vuetify0 composables this month, and it's starting to click. The Figma UI Kit update is great, the framework improvements are solid, but what keeps me up at night is making sure these v0 composables feel right. We're not just building features—we're establishing patterns that thousands of developers will use. Get the abstraction wrong and you've created more problems than you solved. Get it right and complex stuff like permissions and feature flags just works.
Having Jacek take over as Framework Czar has been huge. I can focus on these bigger architectural questions while he keeps the core framework moving forward. The team shipped over 60 bug fixes and features in the month of September, and we're maintaining that pace. Between the Figma Kit, the v0 work, and everything else happening in the ecosystem, things are coming together.
::: success
Cool example of the month: Gradient VProgressLinear by J-Sek
:::
September focused on stabilization and quality improvements across the Vuetify 3 series, including iterating to the next minor version with v3.10.0 (Argo). We've addressed numerous bugs, enhanced accessibility, and refined component behaviors to ensure a robust experience for developers and users alike.
prefers-reduced-motion to respect user accessibility settingsView the complete list of changes in the Full Changelog
Details:
We're thrilled to announce the release of our updated Vuetify 3 UI Kit for Figma! This comprehensive design system brings Vuetify's Material Design implementation directly to your design workflow, completely free.
This free UI kit bridges the gap between design and development, ensuring pixel-perfect implementations and faster handoffs. Designers can now work with the exact same components developers use, eliminating interpretation errors and accelerating the design-to-code process.
Design faster with 1:1 Vuetify components, production-ready variants and style controls (colors, densities, radius and states) that adapt to any brand. Choose the version that best fits your workflow.
Ideal for:
| Feature | PRO | FREE |
|---|---|---|
| Foundations | Includes complete Material Design Colors | Does not include MD color palette |
| Themes | Light / Dark (+ extra modes by variables) | Light / Dark |
| Color Roles | Default, Primary, Secondary, Custom, Error, Warning, Info, Success | Default, Primary, Secondary, Custom, Error, Warning, Info, Success |
| States | Enabled, Disabled, Active/Focus, Hover | Enabled, Disabled |
| Sizes | Default, Small, X/Small, Large, X/Large | Default, Small, Large |
| Density | Default, Comfortable, Compact | Only Default |
| Border Color | Current + Primary, Secondary, Error, Warning, Info, Success | Only Current |
| Border Width | default, 0, xs (thin), sm, md, lg, xl | default, 0 |
| Border Opacity | default, 0, 25, 50, 75, 100 | Not available |
| Border Radius | default, square, xs, sm, md, lg, xl, pill, circle | default, square, pill, circle |
| Error State | Full support | Basic inputs |
| Others | Individual color control in VField | No individual control |
| Components | All components | Missing components |
| Variants | All variants | Only elevated • flat • outlined |
| Variants in Inputs | All variants | Only filled • outlined |
| Updates & Support | Synchronized with library + support | Not guaranteed • no support |
| Modes by variables | 4+ modes | 4 or less |
Details:
Thank you to everyone who joined our September performance optimization webinar. We had an engaging Q&A session with the community discussing bundle size reduction strategies. Some highlights and key takeaways:
Never miss another event by joining our Discord Community and following us on X!.
Wednesday, October 29th: Join John for an exclusive live coding session where he'll build a complete application using Vuetify0 from scratch!
This will be a true live demo, so expect some surprises and spontaneous problem-solving. Whether you're a seasoned Vue developer or just curious about v0, this session will provide valuable insights into building modern applications with v0 composables.
Details:
September saw intensive development on v0's composable foundation. The team has been deep in the codebase, introducing critical composables and ensuring code quality across the board.
import { createApp } from 'vue'
import { createPermissionsPlugin } from '@vuetify/0'
const app = createApp()
app.use(
createPermissionsPlugin({
permissions: {
super: [
['create', 'Post'],
['read', 'Post'],
['update', 'Post'],
['delete', 'Post'],
['use', 'Dev'],
],
editor: [
['create', 'Post'],
['read', 'Post'],
['update', 'Post']
],
},
})
)
app.mount('#app')
<script lang="ts" setup>
import { usePermissions } from '@vuetify/0'
import { useAuth } from 'your-auth-provider'
const { user } = useAuth()
const { can } = usePermissions()
</script>
<template>
<div v-if="can(user.role, 'create', 'Post')">
<button>Create Post</button>
</div>
<div v-if="can(user.role, 'delete', 'Post')">
<button>Delete Post</button>
</div>
</template>
import { createApp } from 'vue'
import { createFeaturesPlugin } from '@vuetify/0'
const app = createApp()
app.use(
createFeaturesPlugin({
features: {
comments: true,
dev: false,
search: {
$value: true,
$variation: 'v2',
$description: 'The new and improved search experience',
},
},
})
)
app.mount('#app')
<script lang="ts" setup>
import { useFeatures } from '@vuetify/0'
const features = useFeatures()
const dev = features.get('dev')!
const search = features.get('search')!
</script>
<template>
<button @click="dev.toggle()">Toggle Dev</button>
<input
v-if="dev.value && features.variation('search') === 'v2'"
placeholder="Search v2"
/>
<input v-else placeholder="Search v1" />
</template>
<script lang="ts" setup>
import { useTimeline } from '@vuetify/0'
const timeline = useTimeline({ size: 5 })
timeline.register({ id: 1, value: 'foo' })
timeline.register({ id: 2, value: 'bar' })
timeline.register({ id: 3, value: 'baz' })
console.log(timeline.size) // 3
timeline.undo()
timeline.undo()
console.log(timeline.values()) // ['foo']
timeline.redo()
console.log(timeline.values()) // ['foo', 'bar']
</script>
::: info
See all available composables on the Vuetify0 documentation site.
:::
Details:
With all the buzz around security vulnerabilities in the NPM ecosystem, we've prioritized enhancing our build and publishing processes to ensure the highest level of security for our users.
This month brought significant improvements to our build infrastructure in Vuetify and across the ecosystem. Key updates include:
Details:
Vuetify Link is a new service that simplifies the process of creating and managing custom short links for your projects. The initial idea came from the need to share Vuetify Bins/Playgrounds/Studios without necessarily wanting to save them to your dashboard. Since these services all compress their data into the URL, it can often times be very long and cumbersome to share. It also enables us to continue to bolster the value proposition for Vuetify One subscribers with advanced options while making the core functionality of creating shortlinks free for everyone.
We anticipate launching this new service this month! Stay tuned for the official release announcement with all the details.
The following section provides an overview of the changes made in September 2025, including new features, bug fixes, and enhancements across the Vuetify framework.
Key Improvements:
spaced prop for VBtn to enhance button spacing options.truncate-length prop to VFileInput for better filename management.stick-to-target prop in VOverlay for improved overlay positioning.aria-controls and aria-expanded in VSelects.VCalendar based off of Vuetify 2 implementation.Expand this section to see the detailed changelog for September 2025:
<details>spaced prop (#21663) (819605c), closes #21652hide-eye-dropper prop (be452a5), closes #19154 #19150group-summary slot (#21802) (a19cd87), closes #21800first-day-of-year prop (#21760) (af74f62), closes #20270truncate-length prop (#17972) (28ef26c), closes #17635filter-by-type prop (#21576) (1b78b06), closes #21150stick-to-target prop (#21704) (8552779), closes #19856 #19732 #17125autocomplete prop (#21359) (d94c003), closes #21353period prop (#21823) (8df7685), closes #15405header slot (fc86d05)toggle slot (#21018) (4ec13f2), closes #20307crossfade and transition-duration (#21850) (15a5c96)null values (#21743) (facd4af), closes #20550null values (#21940) (0960aa6), closes #21815tile prop (like in v2) (6b13382), closes #21844return-object is true (#21128) (a586965), closes #21096rounded prop (9ec5a0d), closes #22015stick-to-target false (263ca4b), closes #22055type (c535f1a), closes #22110aria-controls and aria-expanded (#22025) (a5abe89), closes #22017transition-duration to respect user preference (27fe364)hide-title prop (#21657) (8d7eac3), closes #21545This month has been busy. We shipped a complete Figma UI Kit update, built out critical composables for v0, hardened our build infrastructure, and continued the steady march of bug fixes and improvements across the framework. Each piece matters, but what matters more is how they fit together—designers working from the same components developers implement, composables that solve real auth and feature flag problems, tools that make sharing work easier.
October brings our v0 live coding webinar where I'll build something real and show you what these composables actually look like in practice. We'll keep stabilizing Labs components and working through the community roadmap. As always, thanks for the bug reports, PRs, and Discord help. See you next month.
The Vuetify Team