#1 Data Analytics Program in India
₹2,499₹1,499Enroll Now
4 min read
Question 17 of 37medium

What are Async Components in Vue?

Lazy loading components for performance.

What You'll Learn

  • defineAsyncComponent
  • Loading and error states
  • Suspense integration

Basic Async Component

code.jsJavaScript
import { defineAsyncComponent } from 'vue'

const AsyncComp = defineAsyncComponent(() =>
  import('./components/HeavyComponent.vue')
)

With Loading/Error States

code.jsJavaScript
const AsyncComp = defineAsyncComponent({
  loader: () => import('./HeavyComponent.vue'),
  loadingComponent: LoadingSpinner,
  errorComponent: ErrorDisplay,
  delay: 200, // Show loading after 200ms
  timeout: 3000 // Timeout after 3s
})

With Suspense

code.txtVUE
<template>
  <Suspense>
    <template #default>
      <AsyncComponent />
    </template>
    <template #fallback>
      <LoadingSpinner />
    </template>
  </Suspense>
</template>

<script setup>
const AsyncComponent = defineAsyncComponent(() =>
  import('./AsyncComponent.vue')
)
</script>

Route-Level Code Splitting

code.jsJavaScript
const routes = [
  {
    path: '/dashboard',
    component: () => import('./views/Dashboard.vue')
  }
]