Context
A merchant's organic traffic flattened after Google rolled out CWV as a ranking signal. Category pages scored red on mobile LCP. Their agency suggested replatforming; budget said no.
Lucid brought me in for a focused performance pass on the existing WooCommerce theme + plugin stack.
What I built
Measured first, then fixed in priority order:
- Images - WebP delivery for catalog thumbs, explicit width/height to kill CLS, lazy load below fold
- Scripts - deferred non-critical plugin JS on category templates only (not global blind defer)
- Queries - identified related-products plugin running N+1 queries; replaced with cached block on category pages
- CDN - cache headers for static assets; excluded cart/checkout from aggressive cache
Before/after Lighthouse reports per template type (home, category, product, checkout).
Technical approach
Changes shipped as child theme + small custom plugin so parent theme updates stayed possible. Each fix isolated in its own commit for rollback.
Tested on real catalog size-not three demo products. Staging clone with production DB snapshot.
Outcomes
- Mobile LCP on category pages under 2.5s (from ~4.8s) on median 4G throttling
- Merchant kept existing theme and checkout plugins
- Monitoring checklist handed to their VA: what to re-check after plugin updates
Stack
WooCommerce · WordPress · PHP · Lighthouse · Query Monitor · CDN config