A font axis the site did not need, and two megabytes of logo
Pinning a variable font's optical size cut it to under half, and a low fetch priority stopped an animated logo from holding up the text.
The serif shipped as a variable font with its optical size axis intact, which made the regular weight 82 KB. Pinned at a single optical size of 20 it is 31 KB, with the semibold at 33 KB and the italic at 25 KB. On a machine that has Charter the stack uses it first and none of this matters. Linux, most of Windows and Android had been waiting on 234 KB of serif before painting any text. Lighthouse on mobile went from 93 to 98.
The logo is an animated GIF, about 2 MB per theme. The first fix held it back behind a static stand-in until after the largest paint. The next day the stand-in went and the GIF became the image’s source from the start, and performance fell to 0.75 with the hero text painting at 12.9 seconds. The GIF had been competing with the fonts.
One attribute settled it. With fetchpriority="low" the browser fetches the
GIF after the things the page needs first, and the score came back to 0.98
with the text at 2.2 seconds. Both images stay lazy, so only the current
theme’s GIF downloads at all. A failed load leaves an empty space instead of a
broken image icon, and reduced motion still gets the static mark.
The stand-in had been a workaround for a priority the browser could be told.