Lighthouse 100 Is a Floor, Not a Ceiling
by Josh Oransky
Every EDS deck on the planet leads with the same screenshot: four green 100s in a Lighthouse scorecard. It's a great line. It's also a starting position, not a finish line. Treating it as the destination is how you end up with a site that scores 100 on synthetic tests and feels mediocre to a real human on a mid-tier Android in a parking lot.
What 100 actually measures
Lighthouse is a static synthetic audit. It tells you the page loaded fast on a simulated network, the layout didn't shift, the largest paintable element rendered in time, and the script didn't block the main thread for too long. Those are real things, and they're worth winning. They are not the same as the experience your customer has on the page.
Real users have flaky 4G. They have battery-saving CPU throttling on. They have ad blockers, content blockers, tracker blockers. They have a hundred Chrome tabs open. They tap something and wait three hundred milliseconds and think the site is broken. Synthetic Lighthouse never has any of those problems.
The Core Web Vitals you should actually obsess over
INP (Interaction to Next Paint) is the one most teams underweight. It measures the time between a user input and the next frame the browser paints in response. The 75th-percentile target is 200ms. Hitting it under field conditions is dramatically harder than hitting an LCP target under simulated 4G.
If your stat dashboard only shows synthetic Lighthouse and lab CWVs, you are flying blind. Wire up real-user monitoring on day one. The aem.live RUM pipeline gives you this for free. Use it.
What "above the floor" looks like
Once you're at 100 on Lighthouse, the work that actually moves the needle for users:
- Field-condition INP under 150ms. Audit every long task. Defer everything that isn't on the critical path. Lazy-instantiate every block that isn't visible at first paint.
- Image budget enforced in CI. Lighthouse won't tell you the author uploaded a 4MB PNG above the fold. A pre-commit budget check will.
- Third-party scripts audited monthly. Every analytics, tag manager, and martech tool earns its place by demonstrable value. Things that don't, get pulled.
- Performance regressions blocked in CI. A PR that drops a metric by 5% on the staging env doesn't merge. The team learns to fix performance the same week they wrote it, not the quarter it goes to production.
Lighthouse 100 is the price of entry. Don't celebrate it. Use it as the day-one baseline and start the actual work.