packages/docs/src/pages/en/blog/march-2026-update.md
Vuetify0 came alive this month. 427 commits, 11 releases, and 7 new headless components pushed v0 to its v0.2.0 milestone. Meanwhile, the core framework shipped 7 releases across v3 and v4, the Nuxt Module reached v1.0.0-beta, the CLI hit 10 releases, and the ESLint plugin gained automated v4 migration rules.
{ height=112 }
🖊️ John Leider • 📅 April 16th, 2026
<PromotedEntry />720 commits across 17 active repositories and 69 merged PRs made March our most productive month since the v4 launch. With v4 stable, the team's focus shifted to two fronts: polishing the v4 experience through rapid patch releases, and building out Vuetify0's headless composable layer at unprecedented speed. J-Sek delivered 12 merged PRs across the framework and ESLint plugin, including new iconsets, CSS font variables, and v4 migration rules across 4 plugin releases. Andrei Elkin completely overhauled the Nuxt module and pushed the CLI through 10 releases. And the Vuetify → Vuetify0 refactor that began last month is now actively migrating core composables—observer, display, theme, and locale.
March was a stabilization sprint for v4 and an acceleration sprint for everything else. Four v4 patches (v4.0.1–v4.0.4) and three v3 backports (v3.12.2–v3.12.4) landed alongside 11 Vuetify0 releases, 10 CLI releases, 7 Nuxt Module releases, and 4 ESLint plugin releases.
prevPage, nextPage, setPage in bottom slot (v4.0.2)closeOnSelect prop and before-select event (v4.0.2 Labs)src-object prop for WebRTC and hide-progress-bar prop (v4.0.3 Labs)View the complete list of changes in the Full Changelog.
Details:
The Vuetify Nuxt Module received a complete overhaul in March—86 commits and 7 releases (v1.0.0-alpha.2 through v1.0.0-beta.2) driven primarily by Andrei Elkin. This is the module's biggest change since its initial release.
Monorepo Conversion — The module was restructured as a monorepo, with cleaner package boundaries and improved maintainability.
Vuetify 4 Support — Full compatibility with v4's CSS layers and SASS integration. The disableVuetifyStyles option was removed in favor of styles: 'none'.
Experimental SASS Caching — In-memory caching for SASS compilation reduces cold-start times in development.
Revamped Documentation — Documentation was completely overhauled alongside the structural changes.
Beta Stability — With alpha.2 through beta.2 all landing in March, the module is on track for a stable v1.0.0 release.
userquin contributed configuration and documentation improvements.
Details:
March's 31 merged PRs focused on new features for the v4 branch, targeted bug fixes, and the beginning of the Vuetify → v0 migration.
CSS font variables — CSS custom properties for font-family, font-size, and font-weight, enabling runtime font customization without SASS (v4.0.1, #22666)
Icon sets — Additional UnoCSS-based iconsets shipped in v4.0.1 (#22668), followed by Material Symbols via UnoCSS in v4.0.2 (#22680)
VDataTable — prevPage, nextPage, and setPage exposed in the bottom slot for custom pagination controls (v4.0.2, #22681)
VCommandPalette — closeOnSelect prop and before-select event for fine-grained selection control, plus a name fix for the inner component (v4.0.2 Labs, #22634)
VFileUpload — Integrated with VInput and split internal logic for better composability and form integration (v3.12.2/v4.0.1 Labs, #22637)
VProgress — New progress component added to Labs (v4.0.3, #22682)
VVideo — src-object prop for MediaStream/WebRTC playback and hide-progress-bar prop for cleaner embeds (v4.0.3 Labs, #22670, #22636)
Details:
| Component | Fix | Version | PR |
|---|---|---|---|
| VSelect | Fix screenreader navigation to select options | v3.12.2 / v4.0.1 | #22602 |
| VOtpInput | Handle deletion via onBeforeinput for mobile compatibility | v4.0.1 | #22657 |
| VSnackbar | Opaque background for transparent variants | v4.0.1 | #22646 |
| hotkey | Delimiter alias fixes without ambiguity | v3.12.3 / v4.0.2 | #22635 |
| VNumberInput | Prevent input changes when readonly | v3.12.3 / v4.0.2 | #22692 |
| VDataTable | Respect disableSort prop for sortable headers | v4.0.2 | #22684 |
| rounded | Add missing md size | v4.0.2 | #22679 |
| router | Replace deprecated next() for Vue Router v5 compatibility | v3.12.3 / v4.0.2 | #22643 |
| VTimePicker | Keep hour value when changing AM/PM | v3.12.3 / v4.0.2 | — |
| hotkey | Resilient sequence parsing | v4.0.3 | #22704 |
| VExpansionPanels | Apply rounded only to first and last panel when closed | v4.0.3 | — |
| VTooltip | Correct selector for non-interactive tooltips | v4.0.3 | — |
| VMaskInput | Accept escaped characters in mask patterns | v4.0.3 Labs | #22727 |
| VFileUpload | Fix adding/replacing files with dropzone click | v3.12.4 / v4.0.4 Labs | #22741 |
| rules | Fix type resolution for custom validation rules | v4.0.4 Labs | #22701 |
| VSelect | Prevent brief error state when clicking a menu item | v4.0.4 | — |
| VField | Label transition on pages with CSS zoom | v3.12.4 / v4.0.4 | — |
Details:
Several PRs merged in March are pending their first release, alongside features still in active development:
location and origin props reworked to be actually useful (#22720)Interactive markers and hover tooltips for data visualization.
A new pill variant for VSlider aligned with Material Design 3's rounded slider track design.
Animated icon transitions using SVG path morphing—carrying over from February, now nearing completion.
The Vuetify → Vuetify0 refactor is now migrating core systems. Open PRs cover:
createBreakpoints (#22710)createDate runtime (#22768)Observer composables were already migrated in March.
Details:
The CLI continued its rapid iteration with 38 commits and 10 releases (v1.1.0 through v1.2.0-beta.1), driven primarily by Andrei Elkin with template contributions from J-Sek.
Vite 8 Support — Templates updated for Vite 8 compatibility.
Vue Router 5 Migration — Templates migrated from unplugin-vue-router to Vue Router 5.
MCP CLI Integration — A standalone MCP CLI command for setting up the Vuetify MCP server directly from the CLI.
Preset System — Enhanced user presets with improved UX, plus new Nuxt and UnoCSS presets alongside the existing TailwindCSS preset.
TypeScript 6.0 — Template fixes to avoid typechecking errors with TS 6.0.
Dynamic Project Docs — create now generates project-specific documentation.
Details:
J-Sek shipped 4 releases (v2.6.0 through v2.7.2) with 20 commits, turning the plugin into a full migration companion for teams moving onto Vuetify 4—or moving Vuetify utilities off onto TailwindCSS and UnoCSS.
Vuetify v4 Rules — A new recommended-v4 preset that detects deprecated v3 patterns and surfaces their v4 replacements. The rules cover deprecated components, props, events, classes, theme color syntax, and import paths, plus a new icon-button-variant rule that ensures icon-only buttons declare a variant to match v4's stricter defaults (#125).
TailwindCSS & UnoCSS Migration Rules — Four new rules for projects adopting utility-first styling. no-elevation-prop, no-rounded-prop, and no-border-prop catch cases where Vuetify presentational props should be dropped in favor of UnoCSS classes (useful when $utilities are disabled), while no-legacy-utilities helps migrate Vuetify's legacy class names to pure TailwindCSS or UnoCSS Wind4 preset equivalents (#126). Follow-up fixes in v2.7.1 added prefixed-class support to no-legacy-utilities, and v2.7.2 taught no-deprecated-typography to handle responsive variants.
Component Standardization — A family of optional custom-deprecated-* rules (components, props, events, slots) lets teams ban specific API shapes from their templates—with auto-fixable string replacements for components (e.g., rewriting <VRow> to <div class="grid grid-cols-12">), replacement props, or custom messages (#127). Useful for enforcing house style in large codebases and for reining in AI-generated anti-patterns. Previously this required patching the plugin's internals.
ESLint 10 Support — Compatibility with the latest ESLint major version, contributed by jssuttles (#124). v2.7.0 also generates proper .d.ts files for TypeScript-based flat configs, and removes VPicker from the deprecated-components list now that it ships in v4 (#119).
Details:
The shared ESLint config—used internally across the ecosystem and by teams that want Vuetify's house style out of the box—shipped v4.3.5 and v4.4.0 in March.
tsconfigRootDir option — The TypeScript config now accepts a tsconfigRootDir option so monorepos and custom project layouts can pin type resolution to the right directory without wrestling with ESLint's project-service defaults (v4.3.5).
Logo fix — Matching the ESLint Plugin update, v4.3.5 also corrected the config's logo filename so the new Vuetify-branded logo renders correctly on npm and GitHub.
Details:
The MCP server released v0.6.0 on March 27th, keeping AI code generation current with the latest v0 APIs. March also saw a significant new feature land in the repository—playground management—pending the next release.
v0 Sync — Composables, components, and exports synced with v0.1.13. Any AI assistant using the MCP server now generates accurate code against the latest v0 API surface, including the new Switch, Slider, Treeview, Splitter, Input, and Button components. (Combobox shipped in v0.2.0 after this sync and will land in the next MCP release.)
Bug Fixes — Corrected composable names and missing exports in v0 documentation; fixed GitHub URL branch references from main to master.
PR#19 merged March 30th adds tools to create, read, update, and list Vuetify Play playgrounds directly from your AI assistant—build and iterate on component demos without leaving your editor. This will ship in the next MCP release.
Install with the Vuetify CLI:
::: tabs
pnpm dlx @vuetify/cli add mcp
npx @vuetify/cli add mcp
yarn dlx @vuetify/cli add mcp
bunx @vuetify/cli add mcp
:::
Or configure manually:
{
"mcpServers": {
"vuetify": {
"url": "https://mcp.vuetifyjs.com/mcp"
}
}
}
Details:
Henry Aviles shipped a new dashboard for Vuetify One, releasing v0.1.0, v3.1.0, and v3.1.1 in March.
Details:
Henry Aviles added markdown preview support—bins can now render markdown content alongside code. The update also includes cursor tracking.
Details:
J-Sek fixed a cursor positioning bug that caused edits to jump while typing (#51), and Henry Aviles updated the default visibility behavior.
March was Vuetify0's breakout month—427 commits, 17 merged PRs, and 11 releases (v0.1.4 through v0.2.0). The project shipped 7 new headless components, 4 new composables, and significant improvements to the playground and documentation. The v0.2.0 release marks v0's transition from foundational primitives to a comprehensive component library.
Seven headless components shipped in March, each with a composable layer and compound component pattern:
requestAnimationFrame composable with automatic cleanup (#165)move() method for reordering registered items (#149)::: info
The pace of v0 development has accelerated dramatically. With 7 new components in a single month, v0 is on track to cover the full Vuetify component surface. Core Vuetify composables (theme, locale, display, date) are now being migrated to v0 in parallel—the bridge between today's Vuetify 4 and tomorrow's Vuetify 5.
:::
Details:
The following section provides an overview of the changes made in March 2026, including new features, bug fixes, and enhancements across the Vuetify framework.
Key Improvements:
Expand this section to see the detailed changelog for March 2026:
<details> <summary>March 2026 Full Changelog</summary>:wrench: Bug Fixes
:test_tube: Labs
hide-browse should hide divider as wellcontrolRef for internal <input />multiple:rocket: Features
:wrench: Bug Fixes
:test_tube: Labs
hide-browse should hide divider as wellcontrolRef for internal <input />multiple:wrench: Bug Fixes
next() deprecated in Vue Router v5 (#22643) (4e93846):test_tube: Labs
limit behavior to cover overflow item (5aefdac):rocket: Features
:wrench: Bug Fixes
next() deprecated in Vue Router v5 (#22643) (87c4129):test_tube: Labs
limit behavior to cover overflow item (e580ebc):wrench: Bug Fixes
expanded with return-object (5d7af2c)rounded only to the first and last panel when closed (dbc7421)no-gutters instead of mapping to "compact" (947d7d5):test_tube: Labs
hide-progress-bar prop (#22636) (0e5a2cb)src-object prop for MediaStream/WebRTC (#22670) (575e7c5):wrench: Bug Fixes
:test_tube: Labs
:wrench: Bug Fixes
offset-* props (1cdd9c4):test_tube: Labs
April will push forward on both fronts. On the framework side, VSparkline markers and tooltips, VSlider pill variant, and VMorphingIcon are nearing completion. The v0 migration of theme, locale, display, and date composables will continue landing, progressively shifting Vuetify's internals onto v0's headless layer.
On the v0 side, createDataGrid is in active development, and the Paper design system (Emerald) will begin providing v0's first opinionated visual layer. The Nuxt Module is on track for a stable v1.0.0 release, and the ESLint plugin will continue expanding its v4 migration rule coverage.
Vuetify is and always will be free and open source. If your team relies on the framework, consider supporting continued development through Vuetify One or GitHub Sponsors. Every contribution helps us ship features like v0, the Nuxt Module, and migration tooling faster.
Thank you for being part of the Vuetify community. See you in April!
Stay connected with Vuetify updates through our GitHub repository, Discord community, and follow @vuetifyjs for the latest announcements. The best is yet to come!