Hi everyone,
We published a reproducible analysis of Shopify theme adoption and real-user performance using HTTP Archive and Chrome UX Report. Disclosure: I run Mufatech Studio, which builds Shopify themes and tools.
Sources and scope
- HTTP Archive’s September 2026 mobile crawl: 716,063 root storefronts exposing Shopify’s theme object, excluding unpublished and preview themes.
- Chrome UX Report, August 2026, phone traffic: 378,997 matched stores with all three Core Web Vitals available.
- Theme Store ID is used where present, otherwise the theme schema name. All versions in use are included; theme-level performance tables require at least 500 measured stores.
A few findings
- Dawn or a named Dawn copy appears on 142,444 sampled stores (19.9%); Horizon on 45,031 (6.3%).
- 43% of sampled Dawn stores report a version corresponding to a release more than two years old. Only 8% correspond to releases from the last six months.
- The custom/unnamed theme share rises from about 12% in the smallest site-rank band to 25% in the top 100,000. Site rank is not a measure of merchant revenue.
- 83% of matched Shopify stores pass all three mobile Core Web Vitals.
Report, downloadable CSVs and BigQuery queries — published under CC BY 4.0, with source attribution.
Theme Vitals by Sia Karamalegos already joins Shopify theme data to CrUX; we credit that work and link to the methodology in the report. Our additional breakdowns cover adoption, Dawn version age and site-rank bands.
Limitations
This is the crawl’s sample of storefronts with enough Chrome traffic, not every Shopify merchant. Renamed copies without a Theme Store ID cannot reliably be assigned to their original theme. Reported versions can also differ from the code actually deployed. Performance describes complete stores, including apps, images and customizations; it does not establish that a theme causes a particular score. The theme and CrUX snapshots are one month apart.
I would welcome feedback on the join, version dating and treatment of renamed copies. The SQL is published so the results can be checked and rerun.