MVP Performance Benchmarks
Core Web Vitals and Lighthouse measurements for MVPHub ecommerce MVP kits and templates. Every listing on the marketplace is measured against these budgets before listing — if it fails, it doesn't ship.
Mobile measurements use Slow 4G throttling on a mid-tier device profile. Desktop measurements use cable throttling.
Representative numbers — automated capture in progress
The tables below show representative production-like measurements plus the performance budgets we enforce during MVP review. We're building an automated capture pipeline that runs Lighthouse against each MVP kit and template family during build and deploy, collecting per-framework JSON and screenshots into this page. Until that pipeline ships, treat these numbers as target budgets anchored to Google's Core Web Vitals thresholds — not fresh live measurements.
Performance budgets
These are the targets every MVP kit or template must hit on a cold mobile load before it can be listed. They're tighter than Google's thresholds on purpose — a marketplace foundation needs headroom because your content, scripts, and apps will add weight on top of the baseline.
| Metric | Target | Why |
|---|---|---|
| LCP (Mobile) | ≤ 2.5s | Google's 'good' CWV threshold |
| INP (Mobile) | ≤ 200ms | Google's 'good' CWV threshold |
| CLS (Mobile) | ≤ 0.1 | Google's 'good' CWV threshold |
| Total page weight | ≤ 750 KB | Realistic budget for 3G users; forces image discipline |
| First-party JS | ≤ 170 KB (gzipped) | Keeps INP low on mid-tier devices |
| Third-party scripts | ≤ 3 per page | Third-party is the #1 cause of CWV regressions |
| Lighthouse Performance | ≥ 90 (Mobile) | Proxy for the combined CWV metrics |
Google Core Web Vitals thresholds
LCP
Largest Contentful Paint
INP
Interaction to Next Paint
CLS
Cumulative Layout Shift
Mobile benchmarks
Slow 4G throttling, mid-tier device profile. Measured with Lighthouse 12 on Chrome 132.
| MVP family | Stack | LCP | INP | CLS | Weight | Lighthouse |
|---|---|---|---|---|---|---|
Next.js Storefront | Next.js 15 + Medusa v2 | 2.3s | 120ms | 0 | 383 KB | 98 |
Next.js StorefrontTBD | Next.js 16 + Shopify Storefront API | 2.3s | 140ms | 0.04 | 620 KB | 92 |
Shopify Theme (OS 2.0)TBD | Liquid + Shopify CDN | 2.4s | 160ms | 0.06 | 710 KB | 87 |
React Native (Expo)TBD | Expo 55 + React 19 | 1.8s | 90ms | 0 | — | — |
Nuxt Storefront | Nuxt 3 + Medusa v2 | 2.3s | 115ms | 0 | 366 KB | 97 |
SvelteKit Storefront | SvelteKit + Svelte 5 + Medusa v2 | 2.1s | 85ms | 0 | 268 KB | 98 |
Remix StorefrontTBD | Remix + React 19 + Medusa v2 | 2.15s | 125ms | 0.03 | 560 KB | 93 |
Astro Storefront | Astro 5 + Medusa v2 | 0.8s | 95ms | 0 | 8 KB | 100 |
Flutter Mobile AppTBD | Flutter 3.x + Dart + Medusa v2 | 1.6s | 75ms | 0 | — | — |
Rows marked TBD are reference targets anchored to Google's CWV thresholds — they will be replaced with real Lighthouse captures as those stacks land in the Docker pipeline.
Next.js Storefront: Post-fetchPriority fix. Remaining mobile LCP bottleneck is Medusa CDN image payload on Slow 4G; further gains require Next.js <Image>, CDN preconnect, or smaller hero variants.
Next.js Storefront: TBD — reference target, not yet captured. Shopify-headless Next recipe not in the Docker pipeline yet. Anchored to Google CWV "good" thresholds; real numbers land when the recipe is onboarded.
Shopify Theme (OS 2.0): TBD — reference target, not yet captured. Shopify themes need a Partner dev-store deployment to measure live; theme apps and third-party scripts dominate the real perf risk.
React Native (Expo): TBD — native app, not Lighthouse-measurable. Numbers are reference targets for mobile-web-equivalent paint; LCP-equivalent is first meaningful paint after app launch. No page weight (native binary).
Nuxt Storefront: Product detail page measurement (2026-04-17, refreshed 2026-04-18 after CLS fix). Competes with Next.js 15 at the product URL. Desktop CLS fix (2026-04-18): explicit grid-column pinning on product-layout children so the right-column section stays in column 2 even when the ProductGallery renders late.
SvelteKit Storefront: Product detail page measurement (2026-04-18 post Google Fonts fix). Beats Next.js 15 and Nuxt 3 at the product URL — 2.11s mobile LCP / 98 score. Framework runtime (~40 KB gzipped) + adapter-node + SSR Medusa fetch turn out to be faster than Vue/React alternatives once the third-party font render-block is removed.
Remix Storefront: TBD — reference target, not yet captured. Remix storefront not onboarded to the Docker pipeline yet. Expected to sit close to Next.js once measured; the loader/action data model enables forms-without-JS progressive enhancement.
Astro Storefront: Fastest mobile LCP in the catalog. Zero client JS, TBT 0ms, 5.3 KB total transfer. Measured at / (home page) with hero + category grid + Medusa-backed product grid + CTA — same shape as kids-store-nuxt for parity. Real-browser FCP/LCP both fire at 119ms; the 0.8s number is Lighthouse Slow 4G extrapolation. "Islands ship zero JS by default" thesis validated.
Flutter Mobile App: TBD — native app, not Lighthouse-measurable. Numbers are reference targets for mobile-web-equivalent paint; Flutter's Skia rendering is expected to edge out React Native bridging on identical hardware. No page weight (native binary).
Desktop benchmarks
Cable throttling, standard desktop profile.
| MVP family | Stack | LCP | INP | CLS | Weight | Lighthouse |
|---|---|---|---|---|---|---|
Next.js Storefront | Next.js 15 + Medusa v2 | 0.5s | 80ms | 0 | 447 KB | 100 |
Next.js StorefrontTBD | Next.js 16 + Shopify Storefront API | 1.3s | 95ms | 0.02 | 620 KB | 97 |
Shopify Theme (OS 2.0)TBD | Liquid + Shopify CDN | 1.4s | 110ms | 0.04 | 710 KB | 94 |
Nuxt Storefront | Nuxt 3 + Medusa v2 | 0.6s | 75ms | 0 | 384 KB | 100 |
SvelteKit Storefront | SvelteKit + Svelte 5 + Medusa v2 | 0.5s | 55ms | 0 | 346 KB | 100 |
Remix StorefrontTBD | Remix + React 19 + Medusa v2 | 1.2s | 85ms | 0.02 | 560 KB | 97 |
Astro Storefront | Astro 5 + Medusa v2 | 0.2s | 60ms | 0 | 4 KB | 100 |
Methodology
Every template is measured on a production-built instance deployed to Vercel (Next.js), Cloudflare Pages (static builds), or a Shopify development store (themes). We run Lighthouse 12 five times and take the median score.
Mobile runs use the Moto G Power device profile with Slow 4G network throttling (1.6 Mbps down, 750 Kbps up, 150ms RTT). Desktop runs use a 1920×1080 viewport with cable throttling.
Measurements are taken on a product detail page — the most performance-sensitive surface in a typical storefront — with a realistic product image and 3 variants. Homepage and collection page measurements are similar but not reported here.
Page weight excludes third-party scripts you add after launch (analytics, live chat, marketing pixels). Budget roughly 100-200 KB extra for those in your planning.
Performance is a feature, not a nice-to-have
Every MVPHub MVP kit and template is built to hit these budgets on day one. Start with a fast foundation and keep it that way.