// App.tsx import React, { Suspense, lazy } from 'react'; import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; import HomePage from './components/HomePage'; const AdminDashboard = lazy(() => import('./components/AdminDashboard')); const App = () => ( <Router> <Suspense fallback={<div>Loading...</div>}> <Routes> <Route path="/" element={HomePage} /> <Route path="/admin" element={AdminDashboard} /> </Routes> </Suspense> </Router> ); export default App;
// utils.ts export const formatDate = (date: string): string => new Date(date).toLocaleDateString(); export const sanitizeInput = (input: string): string => input.replace(/<[^>]*>/g, ''); // PostList.tsx import { formatDate } from './utils'; const PostList: React.FC<PostListProps> = ({ posts }) => ( <div> {posts.map(post => ( <div key={post.id}> <h2>{post.title}</h2> <p>Posted on {formatDate(post.date)}</p> </div> ))} </div> ); export default PostList;
Before: [██████████] 1.5MB (Homepage + Admin + Unused Code) After: [███] 0.4MB (Homepage only, admin lazy-loaded, unused code removed)