CLS from 0.4 to 0.06 in a holiday booking flow
The layout shifts were in the booking flow, and most of them happened after the first page load.
A single page application with a booking flow that shifted
Prijsvrij is a Dutch travel site: search, compare and book a holiday. The whole site is a single page application, so most of what a visitor does happens without a full page load, and the booking flow is where the layout shifted.

Prijsvrij, holiday bookings
A single page application
Audit, two days of 4 hours on site, then consultancy every quarter since 2024
Their developers
Two 4-hour days on site
The first day I audited the site. On day two I went through the results with the team and explained, step by step, how to fix the most pressing problems first.
-
Resource priority
We sorted what each page asks for first, so the content a visitor came for isn't stuck behind scripts.
-
Layout shifts in the booking flow
Most of them did not happen on the first load. They happened on soft navigations, when the app swaps content without loading a new page. A Lighthouse run of the homepage never sees those. Real visitors clicking through a booking do, and in CrUX those shifts land on the URL they first opened.
-
INP
I showed the developers in their own code where a click did too much work before the screen could update, and how to break it up.

Back at least four times a year since 2024
Since 2024 I come back at least four times a year. We look at the field data together, decide what matters most for the next months, and work out how to build it. Their developers do the work. I make sure it's the right work, in the right order.
Layout shifts in a single page app that Lighthouse never sees?
Send me the URL of your booking or checkout flow and I'll go through the soft navigations, not just the homepage. Consultancy stays until it's fixed.
More results on my clients page.