packages/docs/src/pages/en/blog/december-2025-update.md
Welcome to the December 2025 Vuetify update! The year closes with a bang—v4.0.0-alpha.0 marks the beginning of Vuetify 4's public development, while five v3.11.x patch releases keep the stable branch polished. The Vuetify CLI shipped its first public release, PWA support rolled out across all ecosystem products, and Vuetify0 continued its rapid evolution with 6 releases.
{ height=112 }
🖊️ John Leider • 📅 January 12th, 2026
<PromotedEntry />December was our most productive month of 2025. With 522 commits across 16 active repositories and 82 merged PRs, the team shipped at an incredible pace. The release of v4.0.0-alpha.0 represents months of architectural planning finally landing for public testing—CSS layers, reduced breakpoints, and theme system improvements that set the stage for Vuetify 4.0 stable. Meanwhile, J-Sek continued his remarkable contribution streak with 16 PRs to the main framework, and ikushum delivered 9 PRs across components. The CLI reached public release status just in time for the new year, and every ecosystem product now supports PWA installation.
December delivered six Vuetify releases—five v3.11.x patches maintaining stability and the landmark v4.0.0-alpha.0 kicking off the next major version. The v3.x branch continues receiving attention with accessibility improvements, bug fixes, and new props across multiple components.
navigation-strategy prop to control focused item behaviordensity prop for compact layoutspicker-props for customizing picker appearanceitems-length prop for virtual scrolling supportcontrol-height supportbranch select strategy for hierarchical selectionView the complete list of changes in the Full Changelog
Details:
The first alpha of Vuetify 4.0 landed on December 30th, marking the start of public development for our next major version. This release contains significant architectural changes that improve performance, reduce bundle size, and modernize the CSS architecture.
CSS Layers: Vuetify 4 uses CSS layers throughout, flattening layer names and replacing !important declarations with proper cascade management. This makes customization cleaner and reduces specificity conflicts.
Theme System: The default theme changes from light to system, respecting user preferences. Transparent color support enables more sophisticated design patterns. The unimportant option has been removed in favor of layers.
Reduced Breakpoints: Default breakpoint sizes have been adjusted for modern viewport distributions.
Style Architecture:
Component Updates:
multi-line prop removed in favor of CSSitem renamed to internalItem for clarityindent-details propisDisabled in slot props::: info
v4.0.0-alpha.0 is for testing and feedback only. Production applications should continue using v3.11.x until v4 reaches stable release.
:::
Details:
The Vuetify CLI reached its first public release in December with 25 commits across versions v0.0.5 through v0.0.7. This new tooling ecosystem streamlines project scaffolding and integrates with the broader Vuetify ecosystem.
The Vuetify CLI ecosystem consists of three packages that share logic via @vuetify/cli-shared:
create-vuetify0 (npm create vuetify0) — Scaffolds new Vuetify0 projects with support for Vue or Nuxt platforms. Includes feature selection for router, pinia, and eslint. TypeScript by default.
@vuetify/cli (vuetify command) — The main CLI with multiple commands:
vuetify init — Same as create-vuetify, scaffolds new projects (supports --type vuetify0)vuetify add eslint — Adds ESLint + eslint-config-vuetify to existing projectsvuetify add mcp — Adds Vuetify MCP server config for Cursor/VS Codevuetify update — Smart updates Vuetify + related packagesvuetify docs — Opens vuetifyjs.com (version-aware)vuetify upgrade — Self-upgrades the CLI::: tabs
# Install the CLI globally
pnpm add -g @vuetify/cli
# Initialize a new project
vuetify init my-app
# Or create a v0 project directly
pnpm create vuetify0@latest
# Add ESLint to an existing project
vuetify add eslint
# Add MCP server configuration
vuetify add mcp
# Update Vuetify packages
vuetify update
# Install the CLI globally
yarn global add @vuetify/cli
# Initialize a new project
vuetify init my-app
# Or create a v0 project directly
yarn create vuetify0
# Add ESLint to an existing project
vuetify add eslint
# Add MCP server configuration
vuetify add mcp
# Update Vuetify packages
vuetify update
# Install the CLI globally
npm install -g @vuetify/cli
# Initialize a new project
vuetify init my-app
# Or create a v0 project directly
npm create vuetify0@latest
# Add ESLint to an existing project
vuetify add eslint
# Add MCP server configuration
vuetify add mcp
# Update Vuetify packages
vuetify update
# Install the CLI globally
bun add -g @vuetify/cli
# Initialize a new project
vuetify init my-app
# Or create a v0 project directly
bun create vuetify0
# Add ESLint to an existing project
vuetify add eslint
# Add MCP server configuration
vuetify add mcp
# Update Vuetify packages
vuetify update
:::
The create-vuetify scaffolding tool received 12 commits and 4 releases in December:
v2.8.0-beta.1 (December 30th):
v2.7.3 (December 20th):
v2.7.1-v2.7.2 (December 16th):
Details:
December's framework work balanced new features with stability improvements. The team merged 49 PRs addressing everything from keyboard accessibility to field validation.
VWindow Keyboard Controls
The VWindow component now supports keyboard navigation, enabling users to move between slides with arrow keys—essential for accessibility and power users.
VList Navigation Strategy
A new navigation-strategy prop gives fine-grained control over which items receive focus during keyboard navigation. This is particularly useful for complex lists with nested content.
VImg Attribute Passthrough
Attributes passed to VImg now flow through to the underlying `` element, enabling native image attributes like loading="lazy" and custom data attributes.
VOtpInput Density
The OTP input component now supports the density prop for compact layouts, and the rounded prop is properly applied to inner fields.
Details:
Forced Colors Mode
VColorPicker now renders inner outlines correctly in Windows High Contrast Mode and other forced-colors environments, ensuring usability for users with visual impairments.
Screen Reader Improvements
VTextArea and VSelect received accessibility improvements for better screen reader announcements, including proper ARIA attributes and field label reading.
VSlider ARIA Attributes
Slider components now correctly pass aria- attributes to the thumb element for assistive technology support.
VTooltip Dismissable by Default
Tooltips are now dismissable by default, improving keyboard accessibility and touch device support.
Fields ARIA Cleanup
All field components received ARIA attribute cleanup for better screen reader compatibility.
Details:
December saw significant updates across all Vuetify ecosystem products, with PWA support rolling out universally and major feature additions to Bin and Play.
41 commits made December Bin's most active month:
23 commits delivered key improvements to Play:
The Vuetify Issues reporter received 31 commits with significant improvements to the issue creation workflow:
Ecosystem Projects Support:
Form Validation Improvements:
Other Updates:
Details:
Details:
December brought four releases to the Vuetify MCP server (v0.2.4 through v0.4.1), adding important infrastructure improvements and new capabilities.
Rate Limiter: The MCP server now includes rate limiting to ensure fair usage and stability across all consumers.
Claude Code CLI Support: Native integration with Claude Code for seamless AI-assisted development workflows.
update_vuetify_bin Tool: A new tool for updating existing Vuetify bins programmatically.
HTTP Transport Improvements: Stateless mode improvements and auth propagation fixes.
{
"mcpServers": {
"vuetify": {
"url": "https://mcp.vuetifyjs.com/mcp"
}
}
}
Or run locally:
{
"mcpServers": {
"vuetify": {
"command": "npx",
"args": ["-y", "@vuetify/mcp"]
}
}
}
Details:
December was another strong month for Vuetify0, with 322 commits and 6 releases (v0.0.15–v0.0.18, v0.0.20–v0.0.21). The headless meta-framework gained five new composables—including virtual scrolling and pagination primitives—along with accessibility improvements, observer enhancements, and significant documentation updates.
With these additions, v0 now provides production-ready primitives for building accessible, high-performance UI components without the styling opinions of a traditional component library.
December added five composables covering pagination, virtualization, and UI utilities:
usePagination — Full-featured pagination logic with first/prev/next/last navigation, ellipsis support for large page ranges, and computed pageStart/pageStop for efficient data slicing. Supports locale-aware formatting and customizable page sizes.
useVirtual — High-performance virtual scrolling that renders only visible items plus an overscan buffer. Supports dynamic or fixed item heights, bidirectional scrolling (useful for chat interfaces), scroll anchoring to maintain position across data changes, and iOS momentum scrolling. Handles 100k+ items efficiently.
useOverflow — Computes how many items fit in a container based on available width. Two modes: variable-width (measures each item individually, ideal for breadcrumbs) and uniform-width (samples one item, ideal for pagination buttons). Tracks container width via ResizeObserver and supports reserved space for navigation controls.
useClickOutside — Click outside detection for closing menus, dialogs, and popovers. Handles edge cases like portaled content and nested overlays.
useToggleScope — Manages Vue effect scopes based on a reactive boolean. Automatically cleans up effects when the condition becomes false—useful for conditional side effects and feature flags.
PaginationStatus — An accessibility-focused component that provides aria-live announcements when pagination state changes. Screen readers automatically announce the current page, helping users who rely on assistive technology stay oriented. Style it with sr-only CSS to keep it visually hidden while remaining accessible.
All three observer composables—useResizeObserver, useMutationObserver, and useIntersectionObserver—received enhancements:
| Feature | Description |
|---|---|
once option | Automatically stops observing after first callback execution |
isActive return | Exposes whether the observer is currently monitoring |
| Broader targets | useIntersectionObserver accepts additional target types |
The once option is particularly useful for lazy-loading images or triggering one-time animations when elements enter the viewport.
createRegistry powers component coordination patterns like tabs, accordions, and steppers. December brought performance improvements for complex component trees:
| Feature | Description |
|---|---|
batch() method | Bulk register/unregister operations in a single call, reducing reindexing overhead |
ReadonlyMap collection | Type changed from Map to ReadonlyMap to prevent accidental mutations |
| Deferred reindexing | Unregister operations now batch index recalculations for better performance |
These changes particularly benefit applications with deeply nested or dynamically generated component hierarchies.
The 0.vuetifyjs.com documentation site received substantial improvements:
AI Q&A — An intelligent search feature that answers questions about v0 composables, patterns, and usage. Ask natural language questions like "How do I implement infinite scroll?" and get contextual answers with code examples.
::: info
The v0 documentation at 0.vuetifyjs.com now includes AI-powered Q&A for finding information quickly.
:::
Details:
The following section provides an overview of the changes made in December 2025, including new features, bug fixes, and enhancements across the Vuetify framework.
Key Improvements:
Expand this section to see the detailed changelog for December 2025:
<details>:wrench: Bug Fixes
mobile without show-select (d297f3f), closes #22375initial-sort-order (7a1ae83)inset (893eb71):test_tube: Labs
:wrench: Bug Fixes
auto-select-first (#22402) (9edd98c), closes #22398intent » indent (f44b2fd)readonly or disabled (#22368) (21c85eb), closes #22349:test_tube: Labs
:wrench: Bug Fixes
inert on root element (8dea3bc)appendInnerIcon rendering (#22431) (5e9fa29), closes #22429aria- attributes to thumb element (#22444) (83b55f5), closes #22432:microscope: Code Refactoring
:test_tube: Labs
picker-props (#22437) (ea6d861), closes #22436prepend-icon unfocusable (#22445) (c917533), closes #22333:wrench: Bug Fixes
disabled changes (#22464) (d6ca166), closes #22366error prop (69862ea), closes #22451:test_tube: Labs
:wrench: Bug Fixes
control-height (#22479) (b47a4ce), closes #22478:rocket: Features
items-length prop (#22360) (290836c), closes #19486indent-details prop (#21265) (f483092), closes #16679navigation-strategy to control focused item (#22328) (3815eee)isDisabled in slot props (9d92638)density prop (#22401) (aca7d30)multi-line prop (#22212) (1371aba), closes #15996:wrench: Bug Fixes
:microscope: Code Refactoring
January kicks off with continued development on Vuetify 4, incorporating feedback from the alpha release. We're targeting additional alpha releases throughout Q1 2026 as we refine the CSS layers architecture and modernize remaining components.
The v3.11.x branch will continue receiving maintenance releases with bug fixes and minor improvements. VCommandPalette is nearing labs release, and we're expanding v0 with additional headless primitives for forms and data display.
The CLI will gain additional commands for component generation and project management, while the MCP server continues to evolve with new tools for AI-assisted development.
Thank you for being part of the Vuetify community. Here's to an incredible 2026!
Stay connected with Vuetify updates through our GitHub repository, Discord community, and follow @vuetifyjs for the latest announcements. The best is yet to come!