- Shipped
- August 20, 2026 at 3:13 AM UTC
- Author
- Kamo
- Commit
- 86cb9fc
The LCP breakdown is where the remaining time is, and its two loading subparts — 270 ms of resource load delay, 500 ms of load duration — are a priority problem, not a size problem. The element is the hero backdrop, 14.8 KB of AVIF, and it serves from cache in 44 ms. What it was competing with, all claiming high priority ahead of it in <head>: Inter 48.4 KB preloaded Space Grotesk 22.3 KB preloaded logo-full-white.svg 15.6 KB preloaded (gzipped on the wire) **************** ~86 KB, against an LCP resource of 14.8 KB Nothing asked for the logo preload. React auto-preloads the first image in the tree and that is the nav logo, so it inherited a priority claim it never needed — it is a 140x40 mark in the corner. `fetchPriority="low"` drops the hint entirely. The logo is also 39 KB of source for that 140x40 render: 89 auto-traced paths at full integer precision. Re-encoded at 2 decimal places it is 19.2 KB raw / 7.3 KB gzipped, a 54% cut on the wire. Deliberately WITHOUT svgo's mergePaths, which collapsed the 89 paths into 5 — that rewrites fill-rule winding, which is how letter counters are cut, and there is no headless browser here to prove it still looks right. The conservative pass gets the same saving anyway. Space Grotesk loses its preload, and the comment defending it had the premise wrong: it claimed the hero's h1 is the LCP element. Lighthouse names the LCP element explicitly and it is the backdrop image. `display: swap` already means no text waits on this face, and Next's generated fallback carries matching size-adjust metrics so the swap does not move layout. Inter keeps its preload — it is the body text, and that is where a swap would actually be felt. Also: optimized images answered `max-age=86400, must-revalidate`. Those URLs are content-addressed — source, width and quality are all in the query string — so they cannot return different bytes. Raised to a year. next.config.ts also records the re-test of `experimental.inlineCss`, which stays off. See the commit that follows for why. Result in <head>: the logo preload is gone, and the bytes claiming priority ahead of the LCP image drop from ~86 KB to ~56 KB.