diff --git a/src/app/pages/Router.tsx b/src/app/pages/Router.tsx
index 4de42081f..1a574b49b 100644
--- a/src/app/pages/Router.tsx
+++ b/src/app/pages/Router.tsx
@@ -9,7 +9,10 @@ import {
} from 'react-router-dom';
import { ClientConfig } from '../hooks/useClientConfig';
-import { AuthLayout, Login, Register, ResetPassword } from './auth';
+const AuthLayout = React.lazy(() => import('./auth').then(m => ({ default: m.AuthLayout })));
+const Login = React.lazy(() => import('./auth').then(m => ({ default: m.Login })));
+const Register = React.lazy(() => import('./auth').then(m => ({ default: m.Register })));
+const ResetPassword = React.lazy(() => import('./auth').then(m => ({ default: m.ResetPassword })));
import {
DIRECT_PATH,
EXPLORE_PATH,
@@ -58,15 +61,15 @@ import { ClientNonUIFeatures } from './client/ClientNonUIFeatures';
import { AuthRouteThemeManager, UnAuthRouteThemeManager } from './ThemeManager';
import { ReceiveSelfDeviceVerification } from '../components/DeviceVerification';
import { AutoRestoreBackupOnVerification } from '../components/BackupRestore';
-import { RoomSettingsRenderer } from '../features/room-settings';
+const RoomSettingsRenderer = React.lazy(() => import('../features/room-settings').then(m => ({ default: m.RoomSettingsRenderer })));
import { ClientRoomsNotificationPreferences } from './client/ClientRoomsNotificationPreferences';
-import { SpaceSettingsRenderer } from '../features/space-settings';
+const SpaceSettingsRenderer = React.lazy(() => import('../features/space-settings').then(m => ({ default: m.SpaceSettingsRenderer })));
import { UserRoomProfileRenderer } from '../components/UserRoomProfileRenderer';
-import { CreateRoomModalRenderer } from '../features/create-room';
+const CreateRoomModalRenderer = React.lazy(() => import('../features/create-room').then(m => ({ default: m.CreateRoomModalRenderer })));
import { HomeCreateRoom } from './client/home/CreateRoom';
import { Create } from './client/create';
-import { CreateSpaceModalRenderer } from '../features/create-space';
-import { SearchModalRenderer } from '../features/search';
+const CreateSpaceModalRenderer = React.lazy(() => import('../features/create-space').then(m => ({ default: m.CreateSpaceModalRenderer })));
+const SearchModalRenderer = React.lazy(() => import('../features/search').then(m => ({ default: m.SearchModalRenderer })));
import { getFallbackSession } from '../state/sessions';
import { CallStatusRenderer } from './CallStatusRenderer';
import { CallEmbedProvider } from '../components/CallEmbedProvider';
@@ -95,15 +98,15 @@ export const createRouter = (clientConfig: ClientConfig, screenSize: ScreenSize)
return null;
}}
element={
- <>
+
- >
+
}
>
- } />
- } />
- } />
+ } />
+ } />
+ } />
-
+
-
-
-
-
+
+
+
+
diff --git a/vite.config.js b/vite.config.js
index e8c016ddf..58ca5e4f4 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -129,6 +129,16 @@ export default defineConfig({
copyPublicDir: false,
rollupOptions: {
plugins: [inject({ Buffer: ['buffer', 'Buffer'] })],
+ output: {
+ manualChunks: (id) => {
+ if (id.includes('node_modules/matrix-js-sdk')) return 'matrix-sdk';
+ if (id.includes('node_modules/react-dom')) return 'react-dom';
+ if (id.includes('node_modules/react-router-dom') || id.includes('node_modules/@remix-run') || id.includes('node_modules/react-router/')) return 'router';
+ if (id.includes('node_modules/@tanstack')) return 'react-query';
+ if (id.includes('node_modules/linkify')) return 'linkify';
+ if (id.includes('node_modules/dompurify')) return 'dompurify';
+ },
+ },
},
},
});