A friend asked me to look at why their personal site felt sluggish on mobile. Two days, a network throttle, and a lot of receipts later — here’s what I found.
What actually matters
The site shipped 480kb of JS for a page that rendered ten paragraphs of text. None of it was used above the fold. The hero image was 3MB and the wrong dimensions for every device tested.
Performance is not a vibe. It is the sum of bytes you ship, the number of round-trips you cause, and the work the main thread has to do before paint. Everything else is folklore.
What I changed
- Removed two analytics scripts that competed with each other.
- Replaced the hero image with three responsive sources at 1x / 2x / 3x.
- Inlined the critical CSS (~3kb) and lazy-loaded the rest.
- Killed a 90kb webfont that loaded for a single H1.
Outcome
First contentful paint dropped from 4.1s to 0.6s on a Moto G4. Lighthouse went from 38 to 96. The site is the same site — it just gets out of its own way now.
Owners of fast websites have not made a deal with the devil. They just say no a lot.