Single-bundle build was tripping vite's 500 kB warning per chunk and forcing every user to re-download the entire app on every deploy. Manual chunks split the bundle along natural library boundaries so: - Rarely-changing vendor libs (react-dom, react-router, lucide-react, asciinema-player) cache across deploys. - App code lives in its own `index-*.js` that's the only chunk that changes when we ship feature work. Split shape (manualChunks fn in vite.config.ts): - charts — recharts + d3-* - player — asciinema-player - icons — lucide-react - router — react-router / react-router-dom - react-dom, react - vendor — everything else in node_modules Resulting bundle sizes (gzip): index (app): 246 kB (gz 63) react-dom: 182 kB (gz 57) player: 176 kB (gz 65) router: 42 kB (gz 15) vendor: 36 kB (gz 14) icons: 29 kB (gz 10) Every chunk under the 600 kB ceiling we now set explicitly. The old ~705 kB single-chunk deploy is gone. No code changes — config only.
1.5 KiB
1.5 KiB