Back
VueMediumNew

How do you create asynchronous components in Vue 3?

defineAsyncComponent

Ideal Answer

defineAsyncComponent lets you lazily load a component only when it's actually rendered, useful for splitting large or rarely-used components out of the main bundle.

JavaScript
import { defineAsyncComponent } from 'vue'

const AsyncModal = defineAsyncComponent(() => import('./Modal.vue'))

You can also configure loading/error states and delays:

JavaScript
const AsyncModal = defineAsyncComponent({
  loader: () => import('./Modal.vue'),
  loadingComponent: LoadingSpinner,
  errorComponent: ErrorMessage,
  delay: 200,
  timeout: 3000
})