Rendering strategy, the single largest lever
Whether a page is prerendered at build, cached at the edge, or generated fresh on every request changes time to first byte by an order of magnitude, and it is frequently misconfigured without anyone noticing because the site still returns 200. On one of our own projects a single missing framework call meant every page in the application was rendered dynamically on every visit, adding well over a second to first byte for distant visitors. Nothing was broken. Nothing alerted. It only showed up when we read the build output symbol by symbol.