Audit
Largest Contentful Paint — the real problem
First Contentful Paint
Mobile LCP is the one real speed problem, and it is not a server or bundle-size problem — the server answers in 0 ms and the page is only 1.2 MB total. The 8.1-second wait is the SPA pattern itself: on a throttled mobile connection, the visitor sees a blank page until the JS bundle downloads, parses, and React paints the content. Desktop does not show this because Lighthouse desktop assumes a fast connection.
Fix: prerender or server-render at least the above-the-fold hero (a static HTML shell Google and mobile visitors see immediately, before React hydrates) — this is a build change, not a hosting change, since Vercel itself responds instantly.
Every one of the 16 known routes was crawled as its own thin, no-JavaScript page — not one homepage scan. All 16 returned HTTP 200. Zero were broken and zero redirected.
Six font families load across two paths — the HTML <head> link and a separate @import inside the compiled CSS bundle. Luckiest Guy is the site's primary display font, the default for every <h1>–<h6> and all three button styles.
Bored N Buzzed
Luckiest GuyPrimary display font — default for every h1–h6 and all buttons. Loaded via the CSS @import.
Bored N Buzzed
Bebas NeueThe font-display utility (fallback: Impact)
Bored N Buzzed
AntonThe font-heading utility (fallback: Impact)
Bored N Buzzed
DM SansBody font (font-body), weight 300–600, italic
Bored N Buzzed
JetBrains MonoLoaded via the same @import; used only for code/kbd/pre — not a visible design element here
Bored N Buzzed
ItalianaLoaded via the head link but zero font-family declarations anywhere in the built CSS — genuinely unused