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'; + }, + }, }, }, });