Summary
App.tsx eagerly imports every page/route component with static imports; there is no React.lazy/Suspense route-level code splitting anywhere in the frontend.
Evidence
frontend/src/App.tsx:17-27 statically imports Home, CreateToken, MintForm, BurnForm, TokenDashboard, TokenDetail, TokenExplorer, AdminPanel, MetadataForm, Manage, NotFound.
grep -rn "React.lazy\|lazy(" frontend/src → 0 matches.
This pulls heavy dependencies (stellar-sdk, qrcode.react, etc.) into the initial bundle even for users who only land on the home page.
Suggested fix
Convert route components to React.lazy + a <Suspense> fallback so each route is a separate chunk. This is a notable first-load win for a dApp whose SDK is large.
Summary
App.tsxeagerly imports every page/route component with static imports; there is noReact.lazy/Suspenseroute-level code splitting anywhere in the frontend.Evidence
frontend/src/App.tsx:17-27statically importsHome,CreateToken,MintForm,BurnForm,TokenDashboard,TokenDetail,TokenExplorer,AdminPanel,MetadataForm,Manage,NotFound.grep -rn "React.lazy\|lazy(" frontend/src→ 0 matches.This pulls heavy dependencies (
stellar-sdk,qrcode.react, etc.) into the initial bundle even for users who only land on the home page.Suggested fix
Convert route components to
React.lazy+ a<Suspense>fallback so each route is a separate chunk. This is a notable first-load win for a dApp whose SDK is large.