A real story that changed how we build.
We were called in to diagnose why a SaaS platform was losing customers. The product was solid. The features were there. But users hated using it.
"It just feels slow," they said.
💡 Here's the problem:
The app loaded in under 2 seconds. Technically, it wasn't slow. But it felt slow. And in web development, feeling slow is the same as being slow.
Google Figured Out What We Knew
In 2020, Google introduced Core Web Vitals: three metrics that measure what users actually experience. Not load time. Not initial paint. Real user experience metrics.
LCP (Largest Contentful Paint)
When the main content appears on screen
Goal: Under 2.5 seconds
FID (First Input Delay)
How long before the page responds to user input
Goal: Under 100ms
CLS (Cumulative Layout Shift)
How much the page layout shifts while loading
Goal: Under 0.1
These metrics became Google's ranking signal. Slow by these standards? You drop in search results. But more importantly, users leave.
The Diagnosis
We ran the client's site through Google's PageSpeed Insights. The results were not good:
Problem 1: Bloated JavaScript
The app was loading 500KB of JavaScript before it could show anything. Users saw a blank screen for 3 seconds while it parsed and executed.
Problem 2: Layout Thrashing
Images were loading without specified dimensions. As they loaded, the page would shift. Buttons you were about to click moved. Classic CLS problem.
Problem 3: Heavy Third-Party Scripts
Analytics, chat widgets, and marketing pixels were running on the main thread. Every interaction was blocked waiting for these to complete.
The Fix
We started with the obvious wins:
Code Splitting
Instead of loading all 500KB upfront, we split the bundle. Critical code loads immediately. The rest loads in the background.
Image Optimization
Every image got width/height attributes. Generated WebP versions. Images smaller than 4KB got inlined as data URIs.
Third-Party Isolation
Analytics and chat moved to Web Workers. They no longer block user interactions.
Lazy Loading
Below-the-fold content loads only when scrolling near it.
The Result
Two weeks of focused optimization. Here's what changed:
LCP
1.1 seconds ✓ (70% faster)
User Retention
+22% week-over-week
It's not magic. It's the unglamorous work of measurement, iteration, and caring about what users actually experience.
The Lesson
Key Takeaway:
Fast websites convert. Slow websites lose. And "fast" isn't determined by load time—it's determined by how quickly the page becomes usable. That's what Core Web Vitals measure. That's what matters.