Vuetify Skilld
Vue Material Component Framework.
by skilld-dev · MIT
The skill
Vue Material Component Framework. Use when writing, debugging, or configuring code that imports vuetify v4.x. Covers createVuetify setup, components and labs, composables, theming, icons, dates and locale, styles and SASS variables, treeshaking, and v3 to v4 migration.
vuetify@4.0.1
Material Design component framework for Vue 3. Source citations like lib/framework.js:15 refer to the prepared vuetify@4.0.1 package (package.json:4).
Environment limits
- Vue
^3.5.0peer dependency (package.json:208). No Vue 2 support; Vuetify 2 is EOL (README.md:274). - ESM only:
"type": "module"(package.json:32). - Optional peers:
vite-plugin-vuetify >=2.1.0,webpack-plugin-vuetify >=3.1.0,typescript >=4.7(package.json:205). - Modern browsers, Safari 13+ with polyfills, minimum design width 320px (
README.md:159). - Default font is Roboto; you must add it yourself, e.g.
@fontsource/roboto(https://vuetifyjs.com/getting-started/installation/).
Setup
Vite with automatic treeshaking (preferred). The vuetify plugin must come after the vue plugin:
// vite.config.js
import vue from '@vitejs/plugin-vue'
import vuetify from 'vite-plugin-vuetify'
export default defineConfig({ plugins: [vue(), vuetify()] })
// src/plugins/vuetify.js
import 'vuetify/styles'
import { createVuetify } from 'vuetify'
export default createVuetify({
// components, directives not needed with the loader plugin
})
Without a loader plugin, register manually; wildcard imports include everything and slow development builds:
import * as components from 'vuetify/components'
import * as directives from 'vuetify/directives'
createVuetify({ components, directives })
createVuetify accepts aliases, blueprint, components, date, defaults, directives, display, goTo, icons, locale, ssr, theme and returns { install, unmount, defaults, display, theme, icons, locale, date, goTo } (lib/framework.js:15). Install with app.use(vuetify); wrap the app in a single <v-app> root.
For SSR frameworks (Nuxt, vite-ssr) set ssr: true so display values render correctly (https://vuetifyjs.com/getting-started/installation/).
Scaffolding: pnpm create vuetify / npm create vuetify@latest (README.md:44).
CDN bundle with everything included: vuetify/dist/vuetify.js (package.json:35).
Components
- Prefer imports from
vuetify/components/<Group>overvuetify/components(loads only needed styles in dev). - Labs components are NOT production ready; import from
vuetify/labs/<Name>orvuetify/labs/components. In 4.0.1 labs holds: VAvatarGroup, VColorInput, VCommandPalette, VDateInput, VFileUpload, VIconBtn, VMaskInput, VPicker, VPie, VStepperVertical, VPullToRefresh, VVideo (lib/labs/components.js:1). - Dynamic
<component :is>is invisible to the loader plugin; import those components manually (https://vuetifyjs.com/features/treeshaking/). - Full inventory and export paths: references/exports.md
Configuration
- Theme: the v4 default is
system(followsprefers-color-scheme), notlight(lib/composables/theme.js:10). Pin it withtheme: { defaultTheme: 'light' }if system switching is unwanted. - Defaults: set prop defaults per component with
createVuetify({ defaults: { VBtn: { ... } } }).classandstylework only on component keys, never in theglobalkey (https://vuetifyjs.com/features/global-configuration/). - Display: v4 breakpoints changed; defaults are
sm 600, md 840, lg 1145, xl 1545, xxl 2138(lib/composables/display.js:10). - Icons: default set is
mdiand expects the@mdi/fontstylesheet, or usemdi-svgfor bundled SVG icons (https://vuetifyjs.com/features/icon-fonts/). - Dates: default adapter wraps native
Date; swap with any date-io adapter (https://vuetifyjs.com/features/dates/). - Blueprints:
createVuetify({ blueprint: md3 })applies a design-system preset; explicit options override the blueprint (lib/framework.js:15,lib/blueprints/index.js:1). - Details and examples: references/configuration.md
Composables
All exported from the vuetify entry point (lib/composables/index.js:1): useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, useHotkey, useMask.
<script setup>
import { useTheme } from 'vuetify'
const theme = useTheme()
theme.toggle() // light <-> dark
</script>
For hotkeys prefer the cmd modifier (useHotkey('cmd+s', save)); it resolves to Command on Mac and Control elsewhere (lib/composables/hotkey/key-aliases.js:10).
Full API per composable: references/composables.md
Styles
import 'vuetify/styles'is the all-in-one precompiled CSS; modular entries arevuetify/styles/core(must be first),vuetify/styles/colors,vuetify/styles/utilities(package.json:61).- SASS variable overrides require the sass preprocessor and
vuetify({ styles: { configFile: 'src/styles/settings.scss' } })in the loader plugin; use@use 'vuetify/settings' with (...). - v4 styles ship in cascade layers (
vuetify-core,vuetify-components,vuetify-overrides,vuetify-utilities,vuetify-final); unlayered user CSS now always wins over Vuetify. - Entry points, variables, layers, Tailwind interop, legacy grid restore: references/styling.md
Migrating from v3
v4 is a breaking MD3 release. Highest-impact changes:
- Grid uses CSS
gap;denseis nowdensity="compact",align/justify/order/align-selfprops replaced by utility classes. VRow gains agapprop (lib/components/VGrid/VRow.js:154). - Typography variants renamed:
h1-h3->display-*,h4-h6->headline-*,subtitle-1/body-1->body-large,caption->body-small,button/subtitle-2->label-large. - Elevation reduced from levels 0-24 to 0-5 (
lib/styles/settings/_elevations.scss:6). VSelect/VCombobox/VAutocompleteslotitemrenamed tointernalItem;itemis now an alias forinternalItem.raw.VFormslot values (isValid,errors, ...) are unwrapped, no longer refs.- Defaults merging skips
undefined; usenullto override a global default.
Full change list with compat snippets: references/migration-v4.md
Common pitfalls
- Missing icon font: components render blank icons until
@mdi/fontCSS (or an SVG set) is installed. - Missing Roboto font: text renders with fallback font (
README.md:159). - Styles broken after adding custom CSS: check layer order; place overrides inside
@layer vuetify-overridesor declare your layer order explicitly. VNumberInputusestoFixed()internally; for arbitrary-precision decimals usev-text-fieldwith decimal.js (lib/components/VNumberInput/VNumberInput.js:81, https://vuetifyjs.com/components/number-inputs/).- Do not use
vuetify/stylesinside SASS files; it resolves to precompiled CSS. Usevuetifyorvuetify/settings(https://vuetifyjs.com/features/sass-variables/).
References
- references/exports.md — entry points, component inventory, directives, iconsets, locale
- references/configuration.md — every
createVuetifyoption with examples - references/composables.md — public composables API
- references/styling.md — CSS and SASS entry points, variables, layers
- references/migration-v4.md — v3 to v4 breaking changes and compat snippets
Official documentation: https://vuetifyjs.com. Release notes by URL: https://vuetifyjs.com/getting-started/release-notes/.
Use this skill
Connect your agent to the Skill Store MCP server and ask for it by ref: skilld-dev/vuetify-skilld-54844914754.
Details
- Publisher
- skilld-dev
- Category
- Software Development › Frontend & UI
- License
- MIT
- Updated
- 2026-10-11
References
More from skilld-dev
- Floating Ui Vue Skilld Floating UI for Vue (@floating-ui/vue@2.0.1).
- Formkit Core Skilld Use whenever writing, debugging, or reviewing code that imports @formkit/core — FormKit's framewo…
- Motion V Skilld ALWAYS load when writing or debugging code that imports "motion-v" (Motion for Vue, motion-vue).
- Pinia Colada Skilld Data fetching layer for Vue built on Pinia.