Everyone says they optimize for speed. Few can prove it. This week, we completed a performance overhaul for a client in the competitive “Home Decor” e-commerce space.
The Starting Point:
- Mobile Score: 42/100
- LCP: 4.8s
- INP: 450ms (Poor)
- CLS: 0.25 (Layout shifting everywhere)
The Result (After 4 Weeks):
- Mobile Score: 100/100
- LCP: 1.2s
- INP: 48ms
- CLS: 0.00
This wasn’t magic. It was engineering. Here is exactly how we did it.
1. Fixing LCP (largest Contentful paint)
The Villain: The Hero Slider. The client used a heavy Revolution Slider. It loaded 4MB of JavaScript before showing the first image.
The Fix:
- Delet the Slider: We replaced the slider with a static CSS Grid layout.
- Fetch Priority: We added
<img fetchpriority="high">to the main hero image. This tells the browser “Download this BEFORE the logo and the menu.” - AVIF Format: We converted all PNGs to AVIF. The 800KB header image became 45KB.
Result: LCP dropped from 4.8s to 1.9s instantly.
2. Solving CLS (cumulative layout shift)
The Villain: Custom Fonts and Lazy Loading.
- Fonts: The text appeared, then the custom font loaded, shifting the layout by 10 pixels.
- Images: Lazy-loaded images appeared and pushed text down because they lacked
widthandheightattributes.
The Fix:
- Font Preloading: We added
<link rel="preload">for the primary font and usedfont-display: optional. If the font doesn’t load in 100ms, the browser sticks with the system font forever (no shift). - Aspect Ratio: We enforced
aspect-ratio: 16/9;on all image containers in CSS. The browser reserves the white space even before the image downloads.
Result: CLS dropped to 0.00.
3. Crushing INP (interaction to next paint)
The Villain: Third-Party Scripts. Chat widgets, Facebook Pixel, Google Tag Manager, Hotjar. They were all fighting for the main thread. When a user clicked “Menu”, the browser was too busy tracking the user to open the menu.
The Fix: Partytown. We moved all distinct third-party scripts to a Web Worker using Partytown. This runs the heavy tracking code on a background thread. The main thread (UI) remains buttery smooth.
Result: INP dropped from 450ms to 48ms.
4. The 2026 secret weapon: Speculation rules API
We didn’t just want it to be fast. We wanted it to feel instant. We implemented the Speculation Rules API.
When a user hovers over a product card, the browser:
- Prefetches the HTML of the next page.
- Prerenders it in a hidden background tab.
When they click, the page load is literally 0ms. It is already there.
5. Server-Side optimization (the infrastructure)
You can’t get a 100 score on a $5 server. We migrated the client to WordPress VIP layout (or consistent high-end architecture).
- Redis Object Cache: Database queries for the “Menu” and “Options” are cached in memory.
- Edge Caching (Cloudflare Enterprise): The HTML of the homepage is served from a server in Warsaw, not the origin in New York. TTFB dropped from 600ms to 40ms.
6. Business impact
Why did we do all this? Not for vanity metrics.
- Bounce Rate: Decreased by 18%.
- Ad Spend: CPC dropped by 12% (Google Ads Quality Score improved due to speed).
- Revenue: Organic traffic grew 40% in 2 months as Google rewarded the “Page Experience” signals.
Conclusion: Speed is not technical debt. It is a revenue lever.
Is your WooCommerce site leaking money due to slowness? WPPoland optimizes for green scores and green bank accounts.



