The Embroiderer's Pulled Thread: On the Tangled Compromise of Competing Metrics
There’s a familiar rhythm to the conversation about web performance these days. We talk about Core Web Vitals as if they were a holy trinity: LCP, FID, CLS. We chase scores in PageSpeed Insights and Lighthouse, treating the final number as the definitive measure of our success. The received wisdom is clear: optimize these three, and you have built a fast, good website. This perspective feels orderly, scientific even. But I’ve come to see it less as a precise science and more as a delicate craft, like embroidery. And in our rush to perfect the pattern, we often fail to notice the threads we’re pulling tight at the expense of others, threatening to distort the entire tapestry.
This is the problem with any metric that becomes a target. It ceases to be a mere measurement and starts to dictate strategy. We witness the bizarre spectacle of a developer proudly announcing a 99 Lighthouse score, while users on modest devices or flaky connections report a janky, disjointed experience. How is this possible? Because the pursuit of a perfect LCP score might lead to inlining critical CSS and hero images as Base64 strings, bloating the initial HTML payload and paradoxically slowing down the overall parsing and rendering on less powerful hardware. The metric improves, but the foundational experience for many has decayed.
The Illusion of Linearity
We operate under the illusion that performance is a linear path. The belief is that by fixing LCP, then FID, then CLS, we are moving in a straight line towards a universally better outcome. The reality is far more complex and interdependent. It is a system. Aggressively preloading a font to ensure it’s available for the Largest Contentful Paint can, if not managed perfectly, lead to a flash of invisible text or a layout shift when the fallback font is swapped—directly harming CLS. Prioritizing a massive hero video to load first for LCP can monopolize bandwidth, delaying the fetching of the interactive JavaScript bundle and worsening FID. Each adjustment is a negotiation, a compromise.
The focus on these three specific metrics can also blind us to other, equally vital aspects of performance. What about the total memory footprint of the page? A site might score well on the Vitals but be a battery hog, quietly draining a user’s device. What about the smoothness of animations beyond the initial load? A perfect CLS score at the one-second mark is cold comfort if the page stutters and janks every time a user clicks a menu. We are polishing the porch while the floors inside are uneven.
The craft, then, is not in the rote optimization of individual numbers, but in understanding the tension between them. It is the embroiderer’s art of knowing precisely how much to pull one thread without puckering the fabric elsewhere. It requires a holistic view, constant testing on real-world conditions, and a humility that acknowledges that a single number can never capture the full, rich, and often messy reality of human perception. The goal is not a perfect score, but a resilient, balanced, and ultimately human-centered experience. To achieve that, we must look past the dashboard and learn to feel the cloth.
Notes & further reading
A few pages I came back to while writing this:
- Corona, CA
- The Stitcher's Final Backstitch: On the Securing Thread of a Proper Image Aspect
- Elk Grove, CA
- The Gardener's Patient Mulch: On the Necessary Decay of an Unused Prefetch
- Fontana, CA
- The Cartographer's Magnetic North: On the Shifting Baseline of a Cumulative Layout Shift
- Fremont, CA
- Fresno, CA
- Fullerton, CA
- Garden Grove, CA
- Glendale, CA
- Hayward, CA
- Huntington Beach, CA