Lazy loading is a technique used in web development to optimize the loading speed and performance of web applications. When it comes to React applications, React Router Lazy Loading is a powerful feature that allows you to dynamically load components only when they are needed, reducing the initial bundle size and improving the overall user experience.


With React Router, lazy loading is achieved using the React.lazy() function and the Suspense component. Here’s how it works:

  1. Code Splitting:

To leverage lazy loading, you need to split your application’s code into separate chunks or bundles. This is typically done using dynamic imports or a code-splitting tool like Webpack.


2. React.lazy():

The React.lazy() function allows you to wrap your component import statements in a dynamic import. This tells React that the component should be loaded lazily when it’s required, rather than upfront during the initial rendering.


3. Suspense:

The Suspense component is used to handle the loading state while the lazy-loaded component is being fetched. You can provide a fallback UI or loading indicator to be displayed while the component is loading.

Here’s an example to illustrate the usage of React Router Lazy Loading:

In the example above, the components Home, About, and Contact are lazily loaded using the React.lazy() function. The Suspense component wraps the Switch component from React Router and provides a fallback UI, in this case, a simple “Loading…” message.


You can implement React Router Lazy Loading on a component level as well as on a Route Level. Let’s see how:

  • Implementing React Router Lazy Loading on a Component Level:

Step 1: Identify the component(s) that you want to lazy load in your React application.


Step 2: Wrap the import statement of the component with the React.lazy() function.

For example:

Step 3: Render the lazy-loaded component using the Suspense component as a wrapper. The Suspense component will handle the loading state and provide a fallback UI while the component is being loaded.

For example:

Step 4: When the component is needed, React will load it asynchronously. The fallback UI provided in the Suspense component will be displayed until the lazy-loaded component is fully loaded and ready to be rendered.

Implementing React Router Lazy Loading on a Route Level:

Step 1: Install react-router-dom if you haven’t already:

npm install react-router-dom

Step 2: Import the necessary components from react-router-dom:

import {BrowserRouter as Router , Route , Switch} from react-router-dom;

Step 3: Follow the steps for implementing lazy loading on a component level as described above.


Step 4: Define your routes using the Route component, replacing the component prop with the lazy-loaded component.

For example:

Note: The exact keyword is used to ensure an exact match for the specified path.

By implementing React Router Lazy Loading on both the component and route levels, you can achieve efficient loading and rendering of components in your React application. Lazy loading allows for better performance, reduced initial bundle size, and faster page loads, enhancing the overall user experience.


By utilizing React Router Lazy Loading, the initial bundle size of your application is reduced since the components are loaded on-demand. This can result in faster load times and improved performance, especially for larger applications with many routes and components.


Embrace the power of React Router Lazy Loading, elevate your app’s efficiency, and deliver lightning-fast experiences that leave users amazed. Revolutionize your React app today, setting the standard for performance excellence in the digital realm.


Note: React.lazy() and Suspense are available from React version 16.6 onwards, so make sure you have the appropriate React version installed in your project.