How to Lazy Load Routes with React Router
3 mins read

By: vishwesh

How to Lazy Load Routes with React Router

React Router is a powerful tool that allows developers to easily handle routing within their React applications. One of its many features is the ability to lazy load routes, which can greatly improve the performance of your application by reducing the initial load time. In this article, we will explore what lazy loading is and how to use it with React Router.

What is Lazy Loading?

Lazy loading is a technique for loading resources, such as images or components, on-demand instead of all at once. This means that instead of loading everything when the page first loads, only the essential components are loaded, and additional resources are loaded as they are needed.

Lazy loading can be especially useful for large applications, where loading everything at once can lead to slower load times and a worse user experience. By lazy loading components, you can reduce the initial load time and make your application more responsive.

Why Lazy Load Routes?

When using React Router, lazy loading routes can be particularly useful. By default, React Router will load all routes at once when the application first loads. This can be problematic if you have many routes, or if some routes are rarely used.

Lazy loading routes means that only the necessary components for each route will be loaded as they are needed. This can improve the overall performance of your application, as well as reduce the amount of code that needs to be loaded initially.

How to Lazy Load Routes with React Router

To lazy load routes with React Router, we can use the React.lazy() function, which allows us to load a component lazily. We will also need to use the Suspense component to handle the loading state of the component.

Here's an example of how to lazy load a route in React Router:

import React, { lazy, Suspense } from 'react';
import { Route, Switch } from 'react-router-dom';

const Home = lazy(() => import('./Home'));
const About = lazy(() => import('./About'));

function App() {
  return (
    <Suspense fallback={<div>Loading...</div>}>
        <Route exact path="/" component={Home} />
        <Route path="/about" component={About} />

In this example, we are using the lazy() function to import the Home and About components lazily. We then wrap our Switch component with the Suspense component, which allows us to specify a fallback component to show while the lazy component is being loaded.

When the user navigates to the Home or About routes, the corresponding components will be loaded lazily, only when they are needed. This can greatly improve the performance of our application, especially if we have many routes or components.


Lazy loading routes with React Router can be a powerful tool for improving the performance of your application. By loading components lazily, we can reduce the initial load time and make our application more responsive.

In this article, we learned what lazy loading is, why it can be useful for React Router, and how to implement lazy loading using the React.lazy() function and the Suspense component. With these tools, you can make your React Router application faster and more efficient.

Recent posts

Don't miss the latest trends

    Popular Posts

    Popular Categories