Skip to content

Commit 39b68ea

Browse files
committed
feat: Reintroduce lazy loading for user components and wrap routes in Suspense for improved loading performance
1 parent bcc9a40 commit 39b68ea

File tree

1 file changed

+31
-27
lines changed

1 file changed

+31
-27
lines changed

client-test/src/App.tsx

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import { setNavigateFunction } from './lib/axios';
55
import Home from './components/Home';
66
import LoginPage from './components/Login';
77
import RegisterPage from './components/SignUp';
8-
import Leaderboard from './components/Leaderboard';
98
import AboutPage from './components/About';
109
import PrivacyPolicyPage from './components/PrivacyPolicy';
1110
import TermsConditionsPage from './components/TermsConditions';
@@ -19,13 +18,16 @@ import { Navbar } from './components/Navbar';
1918
import SolutionPage from './components/Challenges/solutionPage';
2019
import NotFoundPage from './components/Error404';
2120
import RouteSEO from './components/RouteSEO';
22-
import ProblemSet from './components/ProblemSet';
23-
import CategoryProblems from './components/ProblemSet/CategoryProblems';
2421
import { ServerErrorRoute, NetworkErrorRoute, UnauthorizedRoute } from './components/ErrorRoutes';
2522
import { ForbiddenPage } from './components/EnhancedErrorPages';
2623
import { useAdminStore } from './context/AdminContext.tsx';
2724
import LoadingSpinner from './components/LoadingSpinner';
2825

26+
// Lazy load heavier user components
27+
const Leaderboard = lazy(() => import('./components/Leaderboard'));
28+
const ProblemSet = lazy(() => import('./components/ProblemSet'));
29+
const CategoryProblems = lazy(() => import('./components/ProblemSet/CategoryProblems'));
30+
2931
// Lazy load Admin components
3032
const AddChallenge = lazy(() => import('./components/Admin/addChallenges'));
3133
const UserDashboard = lazy(() => import('./components/Admin/Users'));
@@ -41,30 +43,32 @@ function UserApp() {
4143
<RouteSEO />
4244
<Navbar />
4345
<Toaster position="bottom-right" toastOptions={{ duration: 2000 }} />
44-
<Routes>
45-
<Route path="/" element={<Home />} />
46-
<Route path="/challenges" element={<Challenges />} />
47-
<Route path="/login" element={<LoginPage />} />
48-
<Route path="/about" element={<AboutPage />} />
49-
<Route path="/privacy-policy" element={<PrivacyPolicyPage />} />
50-
<Route path="/terms-conditions" element={<TermsConditionsPage />} />
51-
<Route path="/register" element={<RegisterPage />} />
52-
<Route path="/leaderboard" element={<Leaderboard />} />
53-
<Route path="/profile/edit-profile" element={<EditProfile />} />
54-
<Route path="/profile/:username" element={<ProfilePage />} />
55-
<Route path="/reset-password/:token" element={<ResetPassword />} />
56-
<Route path="/forgot-password" element={<ForgotPassword />} />
57-
<Route path="/challenges/solution/:slug" element={<SolutionPage />} />
58-
<Route path="/problemset" element={<ProblemSet />} />
59-
<Route path="/problemset/category/:categoryName" element={<CategoryProblems />} />
60-
{/* Enhanced Error Pages */}
61-
<Route path="/server-error" element={<ServerErrorRoute />} />
62-
<Route path="/network-error" element={<NetworkErrorRoute />} />
63-
<Route path="/unauthorized" element={<UnauthorizedRoute />} />
64-
<Route path="/forbidden" element={<ForbiddenPage />} />
65-
<Route path="/404" element={<NotFoundPage />} />
66-
<Route path="*" element={<NotFoundPage />} />
67-
</Routes>
46+
<Suspense fallback={<LoadingSpinner />}>
47+
<Routes>
48+
<Route path="/" element={<Home />} />
49+
<Route path="/challenges" element={<Challenges />} />
50+
<Route path="/login" element={<LoginPage />} />
51+
<Route path="/about" element={<AboutPage />} />
52+
<Route path="/privacy-policy" element={<PrivacyPolicyPage />} />
53+
<Route path="/terms-conditions" element={<TermsConditionsPage />} />
54+
<Route path="/register" element={<RegisterPage />} />
55+
<Route path="/leaderboard" element={<Leaderboard />} />
56+
<Route path="/profile/edit-profile" element={<EditProfile />} />
57+
<Route path="/profile/:username" element={<ProfilePage />} />
58+
<Route path="/reset-password/:token" element={<ResetPassword />} />
59+
<Route path="/forgot-password" element={<ForgotPassword />} />
60+
<Route path="/challenges/solution/:slug" element={<SolutionPage />} />
61+
<Route path="/problemset" element={<ProblemSet />} />
62+
<Route path="/problemset/category/:categoryName" element={<CategoryProblems />} />
63+
{/* Enhanced Error Pages */}
64+
<Route path="/server-error" element={<ServerErrorRoute />} />
65+
<Route path="/network-error" element={<NetworkErrorRoute />} />
66+
<Route path="/unauthorized" element={<UnauthorizedRoute />} />
67+
<Route path="/forbidden" element={<ForbiddenPage />} />
68+
<Route path="/404" element={<NotFoundPage />} />
69+
<Route path="*" element={<NotFoundPage />} />
70+
</Routes>
71+
</Suspense>
6872
<Footer />
6973
</div>
7074
);

0 commit comments

Comments
 (0)