{"record":{"id":"2f0376c1edafea90","repo":"vuetifyjs/vuetify","slug":"vuetify-could-not-find-defaults-instance","errorCode":null,"errorMessage":"[Vuetify] Could not find defaults instance","messagePattern":"\\[Vuetify\\] Could not find defaults instance","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"critical","filePath":"packages/vuetify/src/composables/defaults.ts","lineNumber":27,"sourceCode":"import type { MaybeRef } from '@/util'\n\nexport type DefaultsInstance = undefined | {\n  [key: string]: undefined | Record<string, unknown>\n  global?: Record<string, unknown>\n}\n\nexport type DefaultsOptions = Partial<DefaultsInstance>\n\nexport const DefaultsSymbol: InjectionKey<Ref<DefaultsInstance>> = Symbol.for('vuetify:defaults')\n\nexport function createDefaults (options?: DefaultsInstance): Ref<DefaultsInstance> {\n  return ref(options)\n}\n\nexport function injectDefaults () {\n  const defaults = inject(DefaultsSymbol)\n\n  if (!defaults) throw new Error('[Vuetify] Could not find defaults instance')\n\n  return defaults\n}\n\nexport function provideDefaults (\n  defaults?: MaybeRef<DefaultsInstance | undefined>,\n  options?: {\n    disabled?: MaybeRef<boolean | undefined>\n    reset?: MaybeRef<number | string | undefined>\n    root?: MaybeRef<boolean | string | undefined>\n    scoped?: MaybeRef<boolean | undefined>\n  }\n) {\n  const injectedDefaults = injectDefaults()\n  const providedDefaults = ref(defaults)\n\n  const newDefaults = computed(() => {\n    const disabled = unref(options?.disabled)","sourceCodeStart":9,"sourceCodeEnd":45,"githubUrl":"https://github.com/vuetifyjs/vuetify/blob/8d153908dffb7592eb389ddbfbab955a0ccc977f/packages/vuetify/src/composables/defaults.ts#L9-L45","documentation":"Thrown by injectDefaults() when inject(DefaultsSymbol) returns undefined. The defaults ref is created and provided by createVuetify() (it lives on the Vuetify instance). Without the Vuetify plugin installed, useDefaults()/injectDefaults() cannot find it.","triggerScenarios":"Calling useDefaults() or injectDefaults() in an app where createVuetify() was never installed (app.use(vuetify)), or in a component mounted outside the Vuetify-providing app root.","commonSituations":"Forgetting app.use(vuetify), rendering a Vuetify component in a micro-frontend/separate createApp without installing Vuetify there, SSR misconfiguration, or duplicate Vuetify installs where the providing instance differs from the rendering one.","solutions":["Install Vuetify on the app: `app.use(createVuetify(...))`.","Ensure components using useDefaults() are rendered under that app's root.","For multi-app setups, install Vuetify on every app instance that needs defaults."],"exampleFix":"// before\ncreateApp(App).mount('#app')\n\n// after\nimport { createVuetify } from 'vuetify'\nconst vuetify = createVuetify()\ncreateApp(App).use(vuetify).mount('#app')","handlingStrategy":"type-guard","validationCode":"import { inject } from 'vue'\nimport { DefaultsSymbol } from 'vuetify/composables/defaults'\nfunction vuetifyInstalled(): boolean {\n  return inject(DefaultsSymbol, null) != null\n}","typeGuard":"import { inject } from 'vue'\nimport { DefaultsSymbol } from 'vuetify/composables/defaults'\nfunction hasDefaultsProvider(): boolean {\n  return inject(DefaultsSymbol, null) != null\n}","tryCatchPattern":"try {\n  injectDefaults()\n} catch (e) {\n  if (e instanceof Error && /Could not find defaults instance/.test(e.message)) {\n    // install Vuetify, or supply an empty defaults ref\n  } else throw e\n}","preventionTips":["Mount Vuetify before any component using useDefaults().","For multi-app setups, install Vuetify per app.","Avoid duplicate Vuetify installs."],"tags":["vuetify","injection","setup","defaults"],"backgroundTag":null,"analyzedSha":"8d153908dffb7592eb389ddbfbab955a0ccc977f","analyzedAt":"2026-08-12T21:54:20.596Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}