Introduction to Lazy Loading

Lazy loading in Vue.js is a technique for optimizing your application's performance by loading components only when they are needed. This can significantly reduce the initial bundle size and improve page load times. In this guide, we'll explore how to implement lazy loading in your Vue.js application for asynchronous component loading.

Using Lazy Loading

Vue.js allows you to lazy load components using dynamic imports. To use lazy loading, you can create an asynchronous component and dynamically import it. Here's an example:

<button @click="loadAsyncComponent">Load Async Component</button>
<div v-if="showAsyncComponent">
export default {
data() {
return {
showAsyncComponent: false,
methods: {
loadAsyncComponent() {
.then(module => {
this.showAsyncComponent = true;
Vue.component('async-component', module.default);
.catch(error => {
console.error('Async component load error', error);

In this example, we've created a button that loads an asynchronous component, "AsyncComponent," when clicked. The component is dynamically imported and registered for use in the template.

Route-Based Lazy Loading

You can also implement lazy loading for routes in your Vue.js application using Vue Router. Here's an example of how to set up route-based lazy loading:

// router.js
import Vue from 'vue';
import Router from 'vue-router';
export default new Router({
routes: [
path: '/',
name: 'Home',
component: () => import('./views/Home.vue'),
path: '/about',
name: 'About',
component: () => import('./views/About.vue'),
path: '/contact',
name: 'Contact',
component: () => import('./views/Contact.vue'),

In this example, we've configured lazy loading for the "Home," "About," and "Contact" routes. Each route loads its component asynchronously, improving the initial page load time.


Lazy loading is a valuable technique for optimizing Vue.js applications by loading components and routes only when they are required. By implementing lazy loading, you can enhance your application's performance and deliver a better user experience.