Training · Speak

Speak: a client's webshop from orange to green, a year after the training

A Dutch agency. I trained their developers, and in September 2024 a client's webshop they rebuilt went live.

0.29sTTFB in CrUX, was about 2s
0.56sFCP, was about 2.8s
<1sLCP, was orange
ClientSpeak, digital agency in Heerenveen
ServiceTraining of 3 hours in 2023, then support
The client

Speak, an agency in Heerenveen that builds sites for its clients

Speak builds sites for its clients, and those clients ask about Core Web Vitals. In 2023 I trained their developers for three hours, on sites they had built, with the field data of those sites.

Afterwards they came back with questions about client sites, by mail, for a while, until they could answer them themselves. Later they booked a 4-hour block: I found the LCP bottleneck in the first session and spent the rest of the time teaching the team to read LoAF traces. Their engineering manager: "Our engineers now catch regressions before they reach production."

Speak homepage
What they found, what they did

A client's webshop, rebuilt with what they learned

In November 2024 I got a mail from Sander Los, one of their developers. They had the training the year before, and since then they had been putting it into their own projects, he wrote. He wanted to show me one: a client’s webshop they had rebuilt went live in early September, and he attached its CrUX graphs.

What was wrong
What they did
TTFB
The server took about 2 seconds before the first byte.
They put a full page cache in front of the shop. TTFB went to 0.29 seconds, and that alone takes about 1.7 seconds off FCP and LCP.
LCP
The hero image had no priority, and files blocked the first render.
The hero got its priority and they fixed the render-blocking files. It all went live at once, so the graph drops in one step: LCP from orange to green, FCP with it.
The home page, before and after

Before the rebuild the home page loaded 22 stylesheets and 3 blocking scripts in the head. The browser downloads every one of them before it shows anything, so on a phone the first screen waited for all 25 files. Sander and his colleagues fixed that with what they took from the training: the rebuilt shop has 4 stylesheets in the head and not a single blocking script.

August 2024the old shop, before the rebuild
22
stylesheets
3
blocking scripts
32.6 kB
head size
September 2024the rebuilt shop
4
stylesheets
0
blocking scripts
9.1 kB
head size
The webshop’s home page in the Internet Archive, 13 August and 11 September 2024, counted from the HTML.
The graphs Sander sent

You could tell from his mail how happy they were, and I was just as happy reading it. LCP, FCP and TTFB all drop in the same week in September, and CLS goes to 0. Great CrUX scores, I wrote back, and really the only scores you need. Then I asked if I could quote him. Go ahead, he said.

The CrUX graphs Sander sent: LCP, FCP and TTFB drop in September, CLS goes to 0
Two years later

A fast rebuild usually doesn’t stay fast. Marketing adds a tag, someone installs a chat app, and a year later LCP is orange again. Not this shop. In CrUX today LCP on mobile is still between 0.6 and 0.8 seconds, with the first byte in under half a second.

2.5 s4.0 sFebMarAprMayJunJulAugSepOct0.6 s0.8 sLCP on mobile, p75
0.8 s1.8 sFebMarAprMayJunJulAugSepOct0.3 s0.4 sTTFB on mobile, p75
The webshop in CrUX, January to October 2026. Each point is the 28 days up to that date. Green is good, orange needs improvement, red is poor.
"Thanks to the concepts and suggestions from the training, our page speed and user experience have improved significantly."

Sander Los, Developer, Speak

What we learned

Clients look at the Lighthouse number

The shop loads the cookie banner, the tag manager and the slider library only when a visitor interacts, so real visitors get a fast first screen. Their clients opened PageSpeed Insights. That test sometimes fires a mouseover of its own and then loads all of it anyway, so the score depended on whether it happened to fire one.

I sent them a small script that writes every interaction the test fires onto the page, and one of their front-end developers caught it two days later: a mouseover, the very event they used to load those scripts. In December their project manager wrote that the whole team was trained up on Core Web Vitals, which is why they noticed at all. We went through it together on a call just before Christmas. At an agency the developers have to understand both: what real visitors get, and what the test does.

Training sticks on their own client sites

Every example was a site they would open again the next week.

Arjen Karel

Your clients send you their PageSpeed score?

Two hours with your whole team, on your own client sites and their field data.

Speak: Core Web Vitals Training for an Agency Team Core Web Vitals Speak: Core Web Vitals Training for an Agency Team