The 39-storefront run, 2026-07-26

How this was measured

39 verified Shopify storefronts, product template where the store exposes one (33 of 39), homepage otherwise (6). PageSpeed Insights v5, mobile strategy, Lighthouse 13.4.0, one run per store on 2026-07-26. Lab metrics are a single throttled Lighthouse run and carry run-to-run variance; field metrics are CrUX 28-day p75 from real users. The per-store lab and field runs behind these medians are kept in bench_pagespeed.json; the per-app costs derived from them are in bench_measurements.json.

Measure Median Spread & context
Storefronts measured 39 product template where the store exposes one (33 of 39), homepage otherwise (6), one run per store, PageSpeed Insights mobile
Median performance score 34 p25 27 · p75 39 · range 3–49
Median third-party main-thread time 2,556 ms against a median Total Blocking Time of 1,414 ms
Median third-party transfer 4.25 MB of 7.80 MB median total page weight
Median third-party entities per page 34 32 of them with a main-thread cost Lighthouse could attribute
Median field LCP (CrUX p75) 1,953 ms 39 of 39 origins reported field data: 19 FAST, 16 AVERAGE, 4 SLOW
Median lab LCP 15,256 ms a single throttled cold mobile run per store — the field number above is what shoppers met
!
What this run cannot answer

What a store would score without a given app. Lighthouse charges bytes and main-thread milliseconds to a third party's own origins on the page load it observed. That is an attribution, not a counterfactual: time one script releases may simply be taken by another. Answering it needs a controlled install on a clean store, which this run does not perform.

Which theme is quicker. Of the 39 storefronts, 28 exposed a theme object at all. Among those, 2 report a theme store id and 26 report a null one — a renamed, forked or wholly custom theme. The remaining 11 exposed no theme object, so this run holds no observation of what they run and cannot say. Grouping the 26 by theme name would produce something shaped like a theme benchmark out of unrelated codebases, so the run refuses to aggregate them.