How I made my React portfolio 2x faster (Lighthouse 30 to 80) by prerendering a Vite app A developer prerendered a Vite + React portfolio site at build time using renderToString and StaticRouter, then hydrated on the client, raising mobile Lighthouse performance from 30 to 80 and increasing crawlable text from 134 to 1,007 words. The rewrite also deferred heavy interactive components like the terminal, mini-games and a 354 KB recharts radar chart until idle or near-viewport, and removed an auto-playing boot screen that was the largest contentful paint element. My portfolio is a Vite + React single-page app with a cyberpunk terminal theme: matrix rain, a live terminal, mini-games, easter eggs. It looked great on my laptop. Then I ran Lighthouse on mobile: | Metric mobile | Before | |---|---| | Performance | 30 | | Largest Contentful Paint | 8.1 s | | Total Blocking Time | 3,390 ms | | Words a crawler sees without JavaScript | 134 | Two problems in one: the site was slow, and search engines and AI crawlers that don't run JavaScript saw an empty