{"record":{"id":"70db213e28e81714","repo":"vuetifyjs/vuetify","slug":"missing-vuetify-icons-provide","errorCode":null,"errorMessage":"Missing Vuetify Icons provide!","messagePattern":"Missing Vuetify Icons provide!","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"critical","filePath":"packages/vuetify/src/composables/icons.tsx","lineNumber":191,"sourceCode":"export type VLigatureIcon = InstanceType<typeof VLigatureIcon>\n\nexport const VClassIcon = defineComponent({\n  name: 'VClassIcon',\n\n  props: makeIconProps(),\n\n  setup (props) {\n    return () => {\n      return <props.tag class={ props.icon }></props.tag>\n    }\n  },\n})\nexport type VClassIcon = InstanceType<typeof VClassIcon>\n\nexport const useIcon = (props: MaybeRefOrGetter<IconValue | undefined>) => {\n  const icons = inject(IconSymbol)\n\n  if (!icons) throw new Error('Missing Vuetify Icons provide!')\n\n  const iconData = computed<IconInstance>(() => {\n    const iconAlias = toValue(props)\n\n    if (!iconAlias) return { component: VComponentIcon }\n\n    let icon: IconValue | undefined = iconAlias\n\n    if (typeof icon === 'string') {\n      icon = icon.trim()\n      if (icon.startsWith('$')) {\n        icon = icons.aliases?.[icon.slice(1)]\n      }\n    }\n\n    if (!icon) consoleWarn(`Could not find aliased icon \"${iconAlias}\"`)\n\n    if (Array.isArray(icon)) {","sourceCodeStart":173,"sourceCodeEnd":209,"githubUrl":"https://github.com/vuetifyjs/vuetify/blob/8d153908dffb7592eb389ddbfbab955a0ccc977f/packages/vuetify/src/composables/icons.tsx#L173-L209","documentation":"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.","triggerScenarios":"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.","commonSituations":"Missing app.use(vuetify); component rendered in an app instance without Vuetify; test mount without createVuetify(); SSR bootstrap that omits the plugin.","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."],"exampleFix":"// before\nconst app = createApp(App)\napp.mount('#app')\n\n// after\nconst app = createApp(App)\napp.use(createVuetify())\napp.mount('#app')","handlingStrategy":"validation","validationCode":"import { inject } from 'vue'\nimport { IconSymbol } from 'vuetify'\nconst icons = inject(IconSymbol, null)\nif (!icons) {\n  // Vuetify not installed: do not resolve icons via useIcon; report config error.\n}","typeGuard":"import { inject } from 'vue'\nimport { IconSymbol } from 'vuetify'\nexport function hasIcons (): boolean {\n  return inject(IconSymbol, null) != null\n}","tryCatchPattern":null,"preventionTips":["Install createVuetify() before mounting.","Register Vuetify on every app instance.","Add the plugin to test mounts."],"tags":["injection","icons","config"],"backgroundTag":null,"analyzedSha":"8d153908dffb7592eb389ddbfbab955a0ccc977f","analyzedAt":"2026-08-12T21:54:20.596Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}