Code Splitting with Dynamic Imports
Code Splitting with Dynamic Imports
Section titled “Code Splitting with Dynamic Imports”Introduction
Section titled “Introduction”Code splitting divides your JavaScript bundle into smaller chunks loaded on demand using dynamic import(). This reduces initial bundle size and improves page load time.
Basic Splitting
Section titled “Basic Splitting”// Instead of a single static import:// import { heavyFunction } from './heavy-module.js';
// Split with dynamic import:button.addEventListener('click', async () => { const { heavyFunction } = await import('./heavy-module.js'); heavyFunction();});Named vs Default Exports
Section titled “Named vs Default Exports”// Named exportconst { formatDate } = await import('./date-utils.js');
// Default exportconst moment = await import('moment');moment.default().format('YYYY-MM-DD');
// Renaming default for convenienceconst { default: format } = await import('./formatter.js');Webpack / Vite Chunk Naming
Section titled “Webpack / Vite Chunk Naming”Bundlers automatically create separate chunk files. You can hint at chunk names:
const admin = await import(/* webpackChunkName: "admin" */ './admin.js');React.lazy & Suspense
Section titled “React.lazy & Suspense”import React, { Suspense } from 'react';
const Dashboard = React.lazy(() => import('./Dashboard'));const Settings = React.lazy(() => import('./Settings'));
function App() { return ( <Suspense fallback={<div>Loading...</div>}> <Dashboard /> </Suspense> );}Summary
Section titled “Summary”- Dynamic
import()triggers code splitting automatically - Each
import()call creates a separate chunk - Use
React.lazy+Suspensefor React component splitting - Chunk names can be hinted for debugging