diff --git a/src/App.tsx b/src/App.tsx
index 0ccf5bc..555c5ea 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,26 +1,29 @@
-import React, { useState } from 'react';
+import React, { useState, lazy, Suspense } from 'react';
import { Toaster } from './components/ui/sonner';
import { CodeEditor } from './components/CodeEditor';
import { AIChat } from './components/AIChat';
import { Toolbar } from './components/Toolbar';
-import { TemplatesDrawer } from './components/TemplatesDrawer';
-import { WelcomeDialog } from './components/WelcomeDialog';
import { FileTree, FileNode } from './components/FileTree';
import { FileTabs } from './components/FileTabs';
-import { PreviewModal } from './components/PreviewModal';
-import { NewProjectModal, ProjectConfig } from './components/NewProjectModal';
import { ConsolePanel } from './components/ConsolePanel';
import { ResizablePanelGroup, ResizablePanel, ResizableHandle } from './components/ui/resizable';
import { useIsMobile } from './hooks/use-mobile';
import { useKeyboardShortcuts } from './hooks/use-keyboard-shortcuts';
import { Tabs, TabsContent, TabsList, TabsTrigger } from './components/ui/tabs';
import { toast } from 'sonner';
-import { EducationPanel } from './components/EducationPanel';
import { ExtraTabs } from './components/ui/tabs-extra';
-import { PassportLogin } from './components/PassportLogin';
import { Button } from './components/ui/button';
import { initPostHog, captureEvent } from './lib/posthog';
import { initSentry, captureError } from './lib/sentry';
+import { LoadingSpinner } from './components/ui/loading-spinner';
+
+// Lazy load heavy/modal components for code splitting and better initial load
+const TemplatesDrawer = lazy(() => import('./components/TemplatesDrawer').then(m => ({ default: m.TemplatesDrawer })));
+const WelcomeDialog = lazy(() => import('./components/WelcomeDialog').then(m => ({ default: m.WelcomeDialog })));
+const PreviewModal = lazy(() => import('./components/PreviewModal').then(m => ({ default: m.PreviewModal })));
+const NewProjectModal = lazy(() => import('./components/NewProjectModal').then(m => ({ default: m.NewProjectModal })));
+const EducationPanel = lazy(() => import('./components/EducationPanel').then(m => ({ default: m.EducationPanel })));
+const PassportLogin = lazy(() => import('./components/PassportLogin').then(m => ({ default: m.PassportLogin })));
function App() {
const [currentCode, setCurrentCode] = useState('');
@@ -348,7 +351,9 @@ end)`,
-
+ }>
+
+
) : (
@@ -402,26 +407,34 @@ end)`,
- {showTemplates && (
- setShowTemplates(false)}
+
+ {showTemplates && (
+ setShowTemplates(false)}
+ />
+ )}
+
+
+
+ setShowPreview(false)}
+ code={currentCode}
/>
- )}
+
- setShowPreview(false)}
- code={currentCode}
- />
+
+ setShowNewProject(false)}
+ onCreateProject={handleCreateProject}
+ />
+
- setShowNewProject(false)}
- onCreateProject={handleCreateProject}
- />
-
-
+
+
+
{!user && (