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.

MetricTargetWhy
LCP (Mobile)≤ 2.5sGoogle's 'good' CWV threshold
INP (Mobile)≤ 200msGoogle's 'good' CWV threshold
CLS (Mobile)≤ 0.1Google's 'good' CWV threshold
Total page weight≤ 750 KBRealistic 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 pageThird-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

Good2.5s
Needs work4s
Poor> 4s

INP

Interaction to Next Paint

Good200ms
Needs work500ms
Poor> 500ms

CLS

Cumulative Layout Shift

Good0.1
Needs work0.25
Poor> 0.25

Mobile benchmarks

Slow 4G throttling, mid-tier device profile. Measured with Lighthouse 12 on Chrome 132.

MVP familyStackLCPINPCLSWeightLighthouse
Next.js Storefront
Next.js 15 + Medusa v22.3s120ms0383 KB98
Next.js StorefrontTBD
Next.js 16 + Shopify Storefront API2.3s140ms0.04620 KB92
Shopify Theme (OS 2.0)TBD
Liquid + Shopify CDN2.4s160ms0.06710 KB87
React Native (Expo)TBD
Expo 55 + React 191.8s90ms0
Nuxt Storefront
Nuxt 3 + Medusa v22.3s115ms0366 KB97
SvelteKit Storefront
SvelteKit + Svelte 5 + Medusa v22.1s85ms0268 KB98
Remix StorefrontTBD
Remix + React 19 + Medusa v22.15s125ms0.03560 KB93
Astro Storefront
Astro 5 + Medusa v20.8s95ms08 KB100
Flutter Mobile AppTBD
Flutter 3.x + Dart + Medusa v21.6s75ms0

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 familyStackLCPINPCLSWeightLighthouse
Next.js Storefront
Next.js 15 + Medusa v20.5s80ms0447 KB100
Next.js StorefrontTBD
Next.js 16 + Shopify Storefront API1.3s95ms0.02620 KB97
Shopify Theme (OS 2.0)TBD
Liquid + Shopify CDN1.4s110ms0.04710 KB94
Nuxt Storefront
Nuxt 3 + Medusa v20.6s75ms0384 KB100
SvelteKit Storefront
SvelteKit + Svelte 5 + Medusa v20.5s55ms0346 KB100
Remix StorefrontTBD
Remix + React 19 + Medusa v21.2s85ms0.02560 KB97
Astro Storefront
Astro 5 + Medusa v20.2s60ms04 KB100

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.