diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index 2f420a7..4a9d629 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -1,17 +1,19 @@
import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom";
import { ElectronTitleBar } from "./Electron";
import { useAppState } from "./pages/chat/state";
-import { useEffect, useState } from "react";
-import HomePage from "./pages/home/HomePage";
-import LoginPage from "./pages/auth/LoginPage";
-import RegisterPage from "./pages/auth/RegisterPage";
-import ChatPage from "./pages/chat/ui/ChatPage";
-import DownloadAppPage from "./pages/download-app/DownloadAppPage";
-import NotFoundPage from "./pages/not-found/NotFoundPage";
-import ProtectedRoute from "./pages/ProtectedRoute";
+import { useEffect, useState, lazy, Suspense } from "react";
import { isElectron } from "./core/electron/electron";
import { MINIMUM_WIDTH } from "./core/config";
import useWindowSize from "./core/hooks/useWindowSize";
+import ProtectedRoute from "./pages/ProtectedRoute";
+import NotFoundPage from "./pages/not-found/NotFoundPage";
+import DownloadAppPage from "./pages/download-app/DownloadAppPage";
+
+// Lazy load route components
+const HomePage = lazy(() => import("./pages/home/HomePage"));
+const LoginPage = lazy(() => import("./pages/auth/LoginPage"));
+const RegisterPage = lazy(() => import("./pages/auth/RegisterPage"));
+const ChatPage = lazy(() => import("./pages/chat/ui/ChatPage"));
export default function App() {
const { restoreUserFromStorage } = useAppState();
@@ -31,10 +33,24 @@ export default function App() {
- } />
- } />
- } />
- } />
+
+
+
+ } />
+
+
+
+ } />
+
+
+
+ } />
+
+ } />
@@ -42,7 +58,9 @@ export default function App() {
} />
- } />
+
+ } />
diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx
index d89d1e8..83eec38 100644
--- a/frontend/src/main.tsx
+++ b/frontend/src/main.tsx
@@ -6,7 +6,6 @@
*/
import './css/style.scss';
-import "mdui/mdui.css";
import "./utils/material";
import "./core/init";
diff --git a/frontend/src/utils/material.ts b/frontend/src/utils/material.ts
index a5cdb5e..7ab2607 100644
--- a/frontend/src/utils/material.ts
+++ b/frontend/src/utils/material.ts
@@ -21,6 +21,7 @@ import 'mdui/components/top-app-bar';
import 'mdui/components/top-app-bar-title';
import 'mdui/components/switch';
import 'mdui/components/chip';
+import "mdui/mdui.css";
import { setColorScheme } from 'mdui/functions/setColorScheme.js';
diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts
index 3c46f4c..6548add 100644
--- a/frontend/vite.config.ts
+++ b/frontend/vite.config.ts
@@ -4,6 +4,9 @@ import autoprefixer from "autoprefixer";
import electron from "vite-plugin-electron/simple";
import react from "@vitejs/plugin-react";
import path from "path";
+import { visualizer } from 'rollup-plugin-visualizer';
+
+const outDir = process.env.VITE_ELECTRON ? "build/electron/dist" : "build/normal/dist";
const plugins: PluginOption[] = [
react(),
@@ -18,6 +21,11 @@ const plugins: PluginOption[] = [
minifyCSS: true,
minifyJS: true
}
+ }),
+ visualizer({
+ filename: `${outDir}/stats.html`,
+ open: true,
+ gzipSize: true
})
]
@@ -85,7 +93,7 @@ export default defineConfig({
},
cssMinify: true,
assetsInlineLimit: 0,
- outDir: process.env.VITE_ELECTRON ? "build/electron/dist" : "build/normal/dist",
+ outDir: outDir,
chunkSizeWarningLimit: 1024
}
});
\ No newline at end of file
diff --git a/package.json b/package.json
index 4fb02cb..c52d0e9 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,5 @@
{
- "name": "FromChat",
+ "name": "fromchat",
"private": true,
"version": "0.0.0",
"type": "module",
@@ -53,6 +53,7 @@
"electron": "^38.1.2",
"husky": "^9.1.7",
"postcss": "^8.5.6",
+ "rollup-plugin-visualizer": "^6.0.4",
"sass-embedded": "^1.93.0",
"terser": "^5.44.0",
"typescript": "~5.9.2",