Load component only when needed
This improves:
- Faster website loading
- Better performance
- Smaller bundle size
1. Import lazy and Suspense
import { lazy, Suspense } from "react";2. Normal Import
import Dashboard from "./Dashboard";Loads immediately.
3. Lazy Import
const Dashboard = lazy(() => import("./Dashboard"));
import Dashboard from "./Dashboard";
const Dashboard = lazy(()=>import('./Dashboard'));Now component loads only when opened.
4. Use Suspense:
<Suspense fallback={<h1>Loading...</h1>}>
<Dashboard />
</Suspense>Example:
import { lazy, Suspense } from "react";
const Dashboard = lazy(() => import("./Dashboard"));
function App() {
return (
<Suspense fallback={<h2>Loading...</h2>}>
<Dashboard />
</Suspense>
);
}
export default App;Lazy Loading With React Router:
import { lazy, Suspense } from "react";
import { Routes, Route } from "react-router-dom";
const Login = lazy(() => import("./pages/Login"));
const Dashboard = lazy(() => import("./pages/Dashboard"));
function App() {
return (
<Suspense fallback={<h2>Loading...</h2>}>
<Routes>
<Route path="/" element={<Login />} />
<Route path="/dashboard" element={<Dashboard />} />
</Routes>
</Suspense>
);
}
export default App;