diff --git a/client/src/App.tsx b/client/src/App.tsx
index 5a93ba4..080d605 100644
--- a/client/src/App.tsx
+++ b/client/src/App.tsx
@@ -1,3 +1,4 @@
+import { lazy, Suspense } from 'react';
import { NavLink, Navigate, Route, Routes } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import { Globe, Monitor, ClipboardList, Activity, KeyRound, Braces } from 'lucide-react';
@@ -5,29 +6,81 @@ import type { LucideIcon } from 'lucide-react';
import styles from './App.module.css';
import { SidePanel, ThemeSwitcher } from './ui';
import liqaLogo from './assets/liqa.svg';
-import { EnvironmentsPage } from './pages/environment/EnvironmentsPage';
-import { EnvironmentDetailPage } from './pages/environment/EnvironmentDetailPage';
-import { CreateEnvironmentPage } from './pages/environment/CreateEnvironmentPage';
-import { EditEnvironmentPage } from './pages/environment/EditEnvironmentPage';
-import { SessionsPage } from './pages/session/SessionsPage';
-import { SessionDetailPage } from './pages/session/SessionDetailPage';
-import { ScenariosPage } from './pages/scenario/ScenariosPage';
-import { ScenarioDetailPage } from './pages/scenario/ScenarioDetailPage';
-import { CreateScenarioPage } from './pages/scenario/CreateScenarioPage';
-import { EditScenarioPage } from './pages/scenario/EditScenarioPage';
-import { CreateStepPage } from './pages/scenario/CreateStepPage';
-import { EditStepPage } from './pages/scenario/EditStepPage';
-import { RunsPage } from './pages/run/RunsPage';
-import { RunDetailPage } from './pages/run/RunDetailPage';
-import { AllRunsPage } from './pages/run/AllRunsPage';
-import { CredentialsPage } from './pages/credential/CredentialsPage';
-import { CreateCredentialPage } from './pages/credential/CreateCredentialPage';
-import { EditCredentialPage } from './pages/credential/EditCredentialPage';
-import { CredentialDetailPage } from './pages/credential/CredentialDetailPage';
-import { SnippetsPage } from './pages/snippet/SnippetsPage';
-import { CreateSnippetPage } from './pages/snippet/CreateSnippetPage';
-import { EditSnippetPage } from './pages/snippet/EditSnippetPage';
-import { SnippetDetailPage } from './pages/snippet/SnippetDetailPage';
+
+const EnvironmentsPage = lazy(() =>
+ import('./pages/environment/EnvironmentsPage').then((m) => ({ default: m.EnvironmentsPage })),
+);
+const EnvironmentDetailPage = lazy(() =>
+ import('./pages/environment/EnvironmentDetailPage').then((m) => ({ default: m.EnvironmentDetailPage })),
+);
+const CreateEnvironmentPage = lazy(() =>
+ import('./pages/environment/CreateEnvironmentPage').then((m) => ({ default: m.CreateEnvironmentPage })),
+);
+const EditEnvironmentPage = lazy(() =>
+ import('./pages/environment/EditEnvironmentPage').then((m) => ({ default: m.EditEnvironmentPage })),
+);
+
+const SessionsPage = lazy(() =>
+ import('./pages/session/SessionsPage').then((m) => ({ default: m.SessionsPage })),
+);
+const SessionDetailPage = lazy(() =>
+ import('./pages/session/SessionDetailPage').then((m) => ({ default: m.SessionDetailPage })),
+);
+
+const ScenariosPage = lazy(() =>
+ import('./pages/scenario/ScenariosPage').then((m) => ({ default: m.ScenariosPage })),
+);
+const ScenarioDetailPage = lazy(() =>
+ import('./pages/scenario/ScenarioDetailPage').then((m) => ({ default: m.ScenarioDetailPage })),
+);
+const CreateScenarioPage = lazy(() =>
+ import('./pages/scenario/CreateScenarioPage').then((m) => ({ default: m.CreateScenarioPage })),
+);
+const EditScenarioPage = lazy(() =>
+ import('./pages/scenario/EditScenarioPage').then((m) => ({ default: m.EditScenarioPage })),
+);
+const CreateStepPage = lazy(() =>
+ import('./pages/scenario/CreateStepPage').then((m) => ({ default: m.CreateStepPage })),
+);
+const EditStepPage = lazy(() =>
+ import('./pages/scenario/EditStepPage').then((m) => ({ default: m.EditStepPage })),
+);
+
+const RunsPage = lazy(() =>
+ import('./pages/run/RunsPage').then((m) => ({ default: m.RunsPage })),
+);
+const RunDetailPage = lazy(() =>
+ import('./pages/run/RunDetailPage').then((m) => ({ default: m.RunDetailPage })),
+);
+const AllRunsPage = lazy(() =>
+ import('./pages/run/AllRunsPage').then((m) => ({ default: m.AllRunsPage })),
+);
+
+const CredentialsPage = lazy(() =>
+ import('./pages/credential/CredentialsPage').then((m) => ({ default: m.CredentialsPage })),
+);
+const CreateCredentialPage = lazy(() =>
+ import('./pages/credential/CreateCredentialPage').then((m) => ({ default: m.CreateCredentialPage })),
+);
+const EditCredentialPage = lazy(() =>
+ import('./pages/credential/EditCredentialPage').then((m) => ({ default: m.EditCredentialPage })),
+);
+const CredentialDetailPage = lazy(() =>
+ import('./pages/credential/CredentialDetailPage').then((m) => ({ default: m.CredentialDetailPage })),
+);
+
+const SnippetsPage = lazy(() =>
+ import('./pages/snippet/SnippetsPage').then((m) => ({ default: m.SnippetsPage })),
+);
+const CreateSnippetPage = lazy(() =>
+ import('./pages/snippet/CreateSnippetPage').then((m) => ({ default: m.CreateSnippetPage })),
+);
+const EditSnippetPage = lazy(() =>
+ import('./pages/snippet/EditSnippetPage').then((m) => ({ default: m.EditSnippetPage })),
+);
+const SnippetDetailPage = lazy(() =>
+ import('./pages/snippet/SnippetDetailPage').then((m) => ({ default: m.SnippetDetailPage })),
+);
const NAV: { path: string; labelKey: string; Icon: LucideIcon }[] = [
{ path: '/environments', labelKey: 'nav.environments', Icon: Globe },
@@ -75,33 +128,35 @@ export default function App() {
{error}
}