perf: split client bundle to reduce large initial JS chunk
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 58/100
- Tipo di issue
- Refactoring
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- bun, d3, typescript, vite
- Ambito
- build-system, frontend, performance
Direzione di ricerca
Inizia da client/src/App.tsx e client/src/components/blocks/BlockRenderer.tsx per tracciare gli import eager attuali, poi esamina client/vite.config.ts e l'output di build esistente. Usa bun run build per confrontare le dimensioni dei chunk e verificare le transizioni tra le route e il rendering dei blocchi chart e trace; il lavoro è concluso quando il chunk di ingresso principale è sensibilmente più piccolo e l'avviso di Vite è scomparso o è giustificato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
The production client build currently emits a large main JavaScript chunk:
dist/assets/index-DtXPVynI.js 1,449.28 kB | gzip: 454.26 kB
Vite warns that the main chunk exceeds the default size threshold. The app still builds and works, but the current bundle shape increases initial download, parse, and execution cost.
Current state
client/src/App.tsxeagerly imports every routeclient/src/components/blocks/BlockRenderer.tsxeagerly imports every block type- heavy visualization dependencies are pulled into the main path:
echartsviaclient/src/lib/echarts.tsd3viaFlameGraphBlockandTraceWaterfallBlock- markdown/rendering helpers through chat rendering
DemoPageis bundled into the main app even though it is only a showcase route
Goal
Reduce initial client JS without making the codebase harder to follow.
Proposed work
- Add route-level lazy loading in
client/src/App.tsx- lazy load
HomePage,ServicePage,AlertsPage,ChatPage, andDemoPage - keep a simple
Suspensefallback
- lazy load
- Split heavy block rendering in
client/src/components/blocks/BlockRenderer.tsx- lazy load the expensive visualization blocks:
TimeseriesBlockBarBlockHeatmapBlockTopologyBlockSankeyBlockCorrelationBlockFlameGraphBlockTraceWaterfallBlock
- keep lightweight blocks eager
- lazy load the expensive visualization blocks:
- Isolate
DemoPagecompletely from the main application chunk - Rebuild and measure the new chunk layout
- Only if needed after real lazy loading, add
manualChunksinclient/vite.config.tsfor large vendor groups such asecharts,d3, and markdown-related packages
Non-goal
Do not silence the warning by only increasing chunkSizeWarningLimit. The fix should be actual code-splitting.
Acceptance criteria
- the main entry chunk is materially smaller than the current ~1.45 MB minified output
- route transitions still work correctly
- chart and trace blocks still render correctly when loaded lazily
bun run buildpasses- the remaining Vite warning is gone or clearly reduced to a justified vendor split
- Lingua principale
- HTML
- Stelle
- 6
- Fork
- 0
- Merge medio
- 4h 31m
- PR unite (30g)
- 40
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di labstack/fanout
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 45/100
labstack/fanout#254 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
perf: intermittent multi-second query stalls — undiagnosed, and the first diagnosis was wrongAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 42/100
labstack/fanout#241 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
labstack/fanout#232 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di labstack/fanout
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
conda-forge/conda-build-feedstock#289 · 1 commento · 1 reazione ·
-
Go CVE VulnerabilitiesAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Node.js 25 EOLAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
nix-community/noogle#1709 ·
-
🐞 bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Sitecore/content-sdk#641 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
navikt/nav-dekoratoren-moduler#236 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno