🇹🇷 Türkçe: Bu yazının Türkçesini oku →

Performance claims about headless WooCommerce are everywhere. “10x faster!” “Sub-second page loads!” I have learned to treat every one of them as a question, not an answer: faster than what, measured where, and at what cost to the team that has to maintain it? So we benchmarked three real WooCommerce stores — one traditional, one headless with Next.js, and one optimized traditional — to find out what the numbers actually look like in production.

Test Setup

All three stores run the same product catalog (1,847 products, 12 categories) against the same WooCommerce backend (WP Engine Pro plan, PHP 8.2, Redis object cache).

Config Stack Hosting
Traditional Starter theme, WooCommerce default WP Engine
Traditional (Optimized) Custom theme, asset optimization, CDN WP Engine + Cloudflare
Headless Next.js 15, ISR, WPGraphQL Vercel + WP Engine

Testing: WebPageTest (Virginia, Cable connection), 5 runs median, mobile viewport.

The Results

Homepage

Metric Traditional Optimized Headless
TTFB 1.2s 0.4s 0.08s
FCP 2.8s 1.4s 0.6s
LCP 4.1s 2.1s 1.0s
CLS 0.18 0.05 0.01
Total Blocking Time 890ms 320ms 45ms
Lighthouse Score 38 72 98

Product Listing Page (Category with 48 products)

Metric Traditional Optimized Headless
TTFB 1.8s 0.6s 0.09s
LCP 5.2s 2.8s 1.2s
Total JS 1.4MB 680KB 120KB
HTTP Requests 87 34 12
Lighthouse Score 31 65 96

Product Detail Page

Metric Traditional Optimized Headless
TTFB 1.5s 0.5s 0.07s
LCP 3.8s 1.9s 0.9s
INP 380ms 120ms 28ms
Lighthouse Score 42 78 97

What’s Driving the Difference?

TTFB: Edge vs Origin

The headless store’s near-zero TTFB comes from ISR (Incremental Static Regeneration). Product pages are pre-rendered and served from Vercel’s edge network. The traditional store generates every page from PHP on the origin server. Even with Redis, WordPress must bootstrap, load plugins, and render. This is the single biggest lever in the whole table, and it is the one people quietly ignore because it does not fit on a marketing slide.

JavaScript: React’s Advantage

Traditional WooCommerce loads jQuery, multiple plugin scripts, and the theme’s JavaScript — often 1MB+ of JS that blocks the main thread. The headless store ships only the React components needed for the current page, code-split by route.

Images: Next.js Image Component

Next.js’s component automatically:

  • Serves WebP/AVIF based on browser support
  • Generates responsive srcsets
  • Lazy loads below-the-fold images
  • Sizes images to the actual display dimensions

Traditional WooCommerce serves whatever the theme provides — often unoptimized full-size images.

The Optimization Gap

The “optimized traditional” results are important. A well-optimized WooCommerce store with proper caching, CDN, and asset optimization can score 70+ on Lighthouse. The gap between optimized traditional (72-78) and headless (96-98) is real but narrower than the gap between default WooCommerce (31-42) and headless.

If you’re scoring under 50 on Lighthouse, optimize your current setup before considering headless. The low-hanging fruit (caching, CDN, image optimization, plugin audit) will get you to 70+ without a complete rebuild.

I have been optimizing for the slow machine since the Mac Plus

Let me put my age on the table, because it changes how I read a benchmark. My first serious machine was a Mac Plus — one megabyte of RAM, an 8 MHz processor, an 800K floppy. When you build anything on hardware that unforgiving, you internalise a rule that has never once let me down: performance is a budget you spend, not a score you chase. Every asset had a cost, and if you did not decide where the cost went, the machine decided for you by stalling in front of the user.

That is exactly the discipline the headless column is enforcing, thirty-five years later. A 120KB JavaScript budget on the listing page is not magic; it is someone refusing to spend bytes they did not have to. The traditional store scoring 31 is not slow because PHP is slow — it is slow because nobody set a budget and every plugin quietly spent from a shared account until the page was 1.4MB and 87 requests. The tool changed. The failure mode did not. If you take one thing from this table, take the habit of naming a number before you build, not measuring one after you shipped.

Conversion Impact

Page speed directly affects conversion rates. Google’s data shows:

  • 1s → 3s load time: bounce probability increases 32%
  • 1s → 5s load time: bounce probability increases 90%

Our client data from before/after headless migrations shows:

Metric Before (Traditional) After (Headless) Change
Bounce rate 47% 31% -34%
Pages/session 3.2 5.1 +59%
Add-to-cart rate 4.8% 6.7% +40%
Conversion rate 1.9% 2.6% +37%

These improvements are not solely attributable to speed — the headless rebuild also improved UX and navigation. But speed is the foundation.

When Optimization Beats Headless

Don’t go headless just for performance. Consider the cost:

Approach Performance Gain Dev Cost Timeline
Basic optimization 40 → 70 Lighthouse $2-5K 1-2 weeks
Advanced optimization 70 → 85 Lighthouse $5-10K 2-4 weeks
Headless rebuild 40 → 95+ Lighthouse $30-80K 2-4 months

If your store is below 50 on Lighthouse and you don’t need headless for other reasons (omnichannel, custom UI, team preference), optimize first. You’ll get 80% of the performance benefit for 10% of the cost.

Performance Budget for Headless WooCommerce

If you do go headless, set a performance budget and enforce it:

Metric Budget Enforcement
LCP < 1.5s CI/CD Lighthouse check
CLS < 0.05 CI/CD Lighthouse check
INP < 50ms Real User Monitoring
JS Bundle < 150KB webpack-bundle-analyzer
API Response < 200ms Backend monitoring

The enforcement column is the one that matters. A budget nobody checks in CI is a wish, not a budget — and I have watched more than one headless build drift back to 1MB of JavaScript within a year precisely because the check was aspirational.

Conclusion

Headless WooCommerce delivers genuinely superior performance — 95+ Lighthouse scores are achievable and sustainable. But the performance story is nuanced. A well-optimized traditional WooCommerce store can score 75-85, which is good enough for most businesses. Go headless when performance is one of several reasons (flexibility, omnichannel, developer experience), not the only reason. The numbers don’t lie, but neither does the cost column.

Leave a Reply

Your email address will not be published. Required fields are marked *

Close Search Window