/ 01 — The problem
What was broken.
8-second initial loads, 4MB JS bundles, charts that froze the page. Sales team was apologizing for the product before showing it. Engineering velocity had slowed to a crawl.
Rewrite of a B2B analytics dashboard from a legacy Angular monolith to a focused React app — 3× faster on every metric.
8-second initial loads, 4MB JS bundles, charts that froze the page. Sales team was apologizing for the product before showing it. Engineering velocity had slowed to a crawl.
Migrated incrementally — kept the legacy app running while replacing one route at a time. Adopted Vite for the build, TanStack Query for data, Recharts for viz. Established a 200KB-per-route budget enforced in CI. Rebuilt the chart kernel for virtualization.
1.8s LCP (was 8s). Bundle 1.7MB (was 4MB). Chart frame rate locked at 60fps even at 100k data points. NPS jumped 14 points.