Performance is one of the few areas where a store owner and a developer can look at the same page and reach opposite conclusions. The developer sees a green score and moves on. The customer, mid-checkout on a mid-range phone, feels a pause, a flash of unstyled text, an image snapping into place — and quietly decides the store is a little unreliable.
Neither of them is wrong. The tools measure the page. The customer measures the experience. Closing that gap is usually cheaper and higher-impact than chasing another few points on a synthetic score.
The number and the feeling
Lab tools like Lighthouse run on a simulated device and network. They give you a repeatable, comparable number — which is genuinely useful for catching regressions. But they don't capture the phone in a customer's hand on a patchy connection, or the third-party script that only loads once a real session starts.
That's why a store can score well and still feel slow: the number describes an average, controlled load, and no customer ever experiences an average.
Users don't experience your average load time. They experience the slowest thing they happen to be waiting for.
Where perceived speed actually breaks
In practice, the "it feels slow" complaint almost always traces back to a small set of causes:
- Layout that shifts. Content jumps as images, banners, or fonts arrive. The page technically loaded fast, but it felt chaotic.
- Fonts that flash. Text renders invisible or in a fallback, then swaps — a visible stutter on the most important element: your words.
- Images that arrive late. The hero or product photo is the thing the customer is waiting for, and it's the last thing to appear.
- Interactions that lag. A tap on "Add to cart" that doesn't respond for a few hundred milliseconds reads as broken, not slow.
What to measure instead
Field data — how real visitors actually experience the site — is the honest signal. The three Core Web Vitals map neatly onto the feelings above:
- LCP — how quickly the main content (usually that hero or product image) shows up.
- CLS — how much the layout moves around while loading.
- INP — how responsive the page feels when the customer actually interacts with it.
Watching these at the 75th percentile of real users tells you what your slower-but-still-typical customers feel — which is exactly the group most likely to abandon.
A practical order of work
When I take on a performance pass, the sequence that consistently pays off is:
- Reserve space for images and embeds so nothing shifts.
- Preload the one font weight and the hero asset that matter above the fold.
- Defer or remove third-party scripts that don't earn their cost.
- Only then chase the remaining lab-score details.
Key takeaways
- A green lab score and a slow-feeling store can both be true at once.
- Perceived speed breaks on shift, flash, late images, and laggy taps.
- Measure field Core Web Vitals (LCP, CLS, INP) at the 75th percentile.
- Fix stability and above-the-fold priorities before micro-optimising.
Speed isn't a score to win. It's a promise your store makes on every page — that it's dependable, considered, and worth trusting with a card number. Spend your effort where that promise is actually felt.