1- import { useState , useEffect , useMemo , useCallback } from 'react' ;
1+ import { useState , useEffect , useMemo , useCallback , lazy , Suspense } from 'react' ;
22import { useParams , useNavigate , Link } from 'react-router-dom' ;
33import { Helmet } from 'react-helmet-async' ;
44import Box from '@mui/material/Box' ;
@@ -14,8 +14,12 @@ import { API_URL, GITHUB_URL } from '../constants';
1414import { useAnalytics } from '../hooks' ;
1515import { useAppData } from '../hooks' ;
1616import { LibraryPills } from '../components/LibraryPills' ;
17- import { SpecTabs } from '../components/SpecTabs' ;
18- import { Breadcrumb , Footer , SpecOverview , SpecDetailView } from '../components' ;
17+ import { Breadcrumb } from '../components/Breadcrumb' ;
18+ import { Footer } from '../components/Footer' ;
19+
20+ const SpecTabs = lazy ( ( ) => import ( '../components/SpecTabs' ) . then ( m => ( { default : m . SpecTabs } ) ) ) ;
21+ const SpecOverview = lazy ( ( ) => import ( '../components/SpecOverview' ) . then ( m => ( { default : m . SpecOverview } ) ) ) ;
22+ const SpecDetailView = lazy ( ( ) => import ( '../components/SpecDetailView' ) . then ( m => ( { default : m . SpecDetailView } ) ) ) ;
1923import type { Implementation } from '../types' ;
2024
2125interface SpecDetail {
@@ -320,6 +324,7 @@ export function SpecPage() {
320324 { specData . description }
321325 </ Typography >
322326
327+ < Suspense >
323328 { isOverviewMode ? (
324329 /* OVERVIEW MODE */
325330 < >
@@ -402,6 +407,7 @@ export function SpecPage() {
402407 />
403408 </ >
404409 ) }
410+ </ Suspense >
405411
406412 < Footer onTrackEvent = { trackEvent } selectedSpec = { specId } selectedLibrary = { selectedLibrary || '' } />
407413 </ Box >
0 commit comments