Benchmarks · Preliminary protocol

Astro 5 vs Next.js 15: TTI on a 50-product WooCommerce store

Status: methodology published, reproducible run scheduled for Q3 2026.

Preliminary

I do not publish numbers I cannot reproduce. This page ships the protocol so peers can audit the design and so the eventual numbers carry full provenance. Until the reproducible run completes, treat every measurement on this page as the corpus, the test plan, and the infrastructure description, not the result.

Test corpus

  • 50 product pages with deterministic fixtures (image alt text, structured data, prices in PLN, EUR, USD)
  • 1 category page covering the 50 products
  • 1 homepage with above-the-fold hero, CTAs, and category teasers
  • WooCommerce origin: shared WordPress 6.7+ instance reading from PostgreSQL fixtures

Stacks under test

  • Astro 5+ with minimal-JavaScript islands, Cloudflare Workers + Pages
  • Next.js 15 with App Router and React 19 Server Components, Cloudflare Workers + Pages
  • Both fetch from the same WordPress REST API, with identical caching policies

Infrastructure

  • Cloudflare Workers, EU region, identical Worker plan and concurrency limits
  • Synthetic monitor: WebPageTest with Moto G4 device profile and 4G throttle
  • Run sites: Frankfurt, Warsaw, Amsterdam, Madrid, Stockholm
  • Cold-cache pass and warm-cache pass per run, 5 runs per pass

Variables measured

  • TTI (time to interactive)
  • LCP (largest contentful paint)
  • INP (interaction to next paint)
  • JS bundle size (KB)
  • Worker invocation cost per 100k pageviews

Methodology file

The result table lives in Markdown until the reproducible run is complete: open the methodology and result template. The first completed run must keep the same table shape so later runs remain comparable.

The full benchmark methodology cluster is available at /en/benchmarks/methodology/.

Cite this protocol

WPPoland. Astro 5 vs Next.js 15: TTI on a 50-product WooCommerce store (preliminary protocol). Published 2026-04-26. URL: https://wppoland.com/en/benchmarks/astro-vs-nextjs-tti-woocommerce/

Frequently asked questions

What is being measured?

Time to interactive (TTI), largest contentful paint (LCP), interaction to next paint (INP), JavaScript bundle size, and serverless cost per 100k pageviews. WooCommerce data is read from a shared WordPress origin via the REST API.

What is the test corpus?

A 50-product WooCommerce store seeded with deterministic fixtures. Identical product pages, identical category page, identical homepage. The store data is checked into a fixtures repository so anyone can rebuild it.

What infrastructure is used?

Both stacks deploy to Cloudflare Workers + Pages from the same EU region. Synthetic monitoring runs from 5 European city POPs at the same throttled network profile (Moto G4 over 4G).

When will the numbers ship?

The reproducible run is scheduled for Q3 2026. I will refresh this page with the measurements, the Markdown result tables, and the full methodology footnotes. Until then, treat this page as the protocol, not the result.

How do I reproduce the benchmark?

I publish the methodology before the measured result, with fixture data, route lists and synthetic monitor configuration documented. Cite the canonical URL of this page in your own results so the chain is traceable.

Want to reproduce this benchmark?

Get in touch. I share the harness with peers under CC BY 4.0.

Contact me