vuetifyjs/vuetify · critical · Error
Missing Vuetify Icons provide!
Error message
Missing Vuetify Icons provide!
What it means
useIcon() injects IconSymbol, the icon-set adapter installed app-wide by createVuetify() (framework.ts:91). It throws when Vuetify is not installed on the app, leaving the symbol unresolved, so there is no icon registry/aliases to resolve against.
Source
Thrown at packages/vuetify/src/composables/icons.tsx:191
export type VLigatureIcon = InstanceType<typeof VLigatureIcon>
export const VClassIcon = defineComponent({
name: 'VClassIcon',
props: makeIconProps(),
setup (props) {
return () => {
return <props.tag class={ props.icon }></props.tag>
}
},
})
export type VClassIcon = InstanceType<typeof VClassIcon>
export const useIcon = (props: MaybeRefOrGetter<IconValue | undefined>) => {
const icons = inject(IconSymbol)
if (!icons) throw new Error('Missing Vuetify Icons provide!')
const iconData = computed<IconInstance>(() => {
const iconAlias = toValue(props)
if (!iconAlias) return { component: VComponentIcon }
let icon: IconValue | undefined = iconAlias
if (typeof icon === 'string') {
icon = icon.trim()
if (icon.startsWith('$')) {
icon = icons.aliases?.[icon.slice(1)]
}
}
if (!icon) consoleWarn(`Could not find aliased icon "${iconAlias}"`)
if (Array.isArray(icon)) {View on GitHub (pinned to 8d153908df)
Solutions
- Install Vuetify with app.use(createVuetify()) before mounting.
- Register Vuetify on every Vue app that renders its components.
- Add createVuetify() to the test app.
Example fix
// before
const app = createApp(App)
app.mount('#app')
// after
const app = createApp(App)
app.use(createVuetify())
app.mount('#app') Defensive patterns
Strategy: validation
Validate before calling
import { inject } from 'vue'
import { IconSymbol } from 'vuetify'
const icons = inject(IconSymbol, null)
if (!icons) {
// Vuetify not installed: do not resolve icons via useIcon; report config error.
} Type guard
import { inject } from 'vue'
import { IconSymbol } from 'vuetify'
export function hasIcons (): boolean {
return inject(IconSymbol, null) != null
} Prevention
- Install createVuetify() before mounting.
- Register Vuetify on every app instance.
- Add the plugin to test mounts.
When it happens
Trigger: Calling useIcon() (or rendering a component that resolves an icon) on an app that never ran app.use(createVuetify()); rendering in a secondary app without Vuetify.
Common situations: Missing app.use(vuetify); component rendered in an app instance without Vuetify; test mount without createVuetify(); SSR bootstrap that omits the plugin.
Related errors
- [Vuetify] Could not find injected locale instance
- [Vuetify] Could not find injected rtl instance
- Could not find Vuetify theme injection
- foo
- Missing group!
AI-assisted analysis of vuetifyjs/vuetify@8d153908df (2026-08-12).
Data as JSON: /api/errors/70db213e28e81714.
Report an issue: GitHub.