The site started at a Largest Contentful Paint of 4.2 seconds on 4G - well into the "poor" zone. Six weeks later it was 1.4 seconds. Here is exactly what we changed and what we measured at every step.
Top three wins, in order of impact: serving hero images as AVIF + responsive srcset (-1.6s), moving above-the-fold HTML to an edge cache with stale-while-revalidate (-0.7s), and ripping out the analytics tag manager in favour of two hand-rolled beacons (-0.4s). The other 0.1s came from a dozen small things - we list them all so you can pick the ones that match your stack.