diff --git a/client/src/App.tsx b/client/src/App.tsx index be96457..0a63c5d 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -1,28 +1,43 @@ +import { lazy, Suspense } from 'react'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { BrowserRouter, Routes, Route, Navigate, Link } from 'react-router-dom'; import Layout from '@/components/Layout'; + +// Lightweight pages stay in the main chunk. import Extensions from '@/pages/Extensions'; import Faq from '@/pages/Faq'; -import Dictation from '@/pages/Dictation'; -import Encounter from '@/pages/Encounter'; -import Soap from '@/pages/Soap'; -import SickVisit from '@/pages/SickVisit'; -import HospitalCourse from '@/pages/HospitalCourse'; -import ChartReview from '@/pages/ChartReview'; -import WellVisit from '@/pages/WellVisit'; -import VaxSchedule from '@/pages/VaxSchedule'; -import Catchup from '@/pages/Catchup'; -import Settings from '@/pages/Settings'; -import Learning from '@/pages/Learning'; -import PeGuide from '@/pages/PeGuide'; -import Bedside from '@/pages/Bedside'; -import Calculators from '@/pages/Calculators'; -import Admin from '@/pages/Admin'; + +// Heavy pages lazy-load — keeps the initial bundle small so the home +// screen and quick tools (Extensions, FAQ) paint fast, and users only +// download the big clinical-reference tables (PE_DATA, Fenton LMS, +// Rosner BP splines, Bedside drug panels, Admin sub-tabs) when they +// open those specific routes. +const Dictation = lazy(() => import('@/pages/Dictation')); +const Encounter = lazy(() => import('@/pages/Encounter')); +const Soap = lazy(() => import('@/pages/Soap')); +const SickVisit = lazy(() => import('@/pages/SickVisit')); +const HospitalCourse = lazy(() => import('@/pages/HospitalCourse')); +const ChartReview = lazy(() => import('@/pages/ChartReview')); +const WellVisit = lazy(() => import('@/pages/WellVisit')); +const VaxSchedule = lazy(() => import('@/pages/VaxSchedule')); +const Catchup = lazy(() => import('@/pages/Catchup')); +const Settings = lazy(() => import('@/pages/Settings')); +const Learning = lazy(() => import('@/pages/Learning')); +const PeGuide = lazy(() => import('@/pages/PeGuide')); +const Bedside = lazy(() => import('@/pages/Bedside')); +const Calculators = lazy(() => import('@/pages/Calculators')); +const Admin = lazy(() => import('@/pages/Admin')); const queryClient = new QueryClient({ defaultOptions: { queries: { staleTime: 30_000, retry: 1 } }, }); +function RouteFallback() { + return ( +
Ported tabs so far:
+Quick links: