The Shopify theme sent 385,680 bytes of HTML. The headless rebuild sends 3,084.
Same Shopify admin, same checkout, same inventory. We replaced only the layer the customer sees. Both storefronts are still live on their own domains, so you can fetch each one and count the bytes without taking our word for any of it.
Same products. Same Shopify backend. A document two orders of magnitude lighter.
Both figures are the whole initial HTML document the server sends, before a single script runs. Fetched with curl on 18 August 2026; both hosts answered 200. Open either domain and view source. There is no Lighthouse score, LCP or conversion figure on this page, because we do not hold a reading of our own for any of them.
Same brand. Two architectures.


The challenge
Vasansi sells apparel on Shopify, and vasansi.com had grown the way storefronts do. A theme, then apps on the theme, then sections bolted onto the apps. Fetched on 18 August 2026, the homepage document alone was 385,680 bytes before a single image or script loaded.
Weight was not the only cost. Every new feature became a negotiation with template limits and with the app stack sitting on top of them.
What we built
We rebuilt the storefront as a headless Next.js application on vasansi.net, connected to the same Shopify backend through the Storefront API. The Shopify admin, checkout, inventory, and payments all stayed exactly as they were - only the customer-facing layer changed.
- Initial HTML down from 385,680 bytes to 3,084 - curl, 18 August 2026
- Per-device image optimization (AVIF/WebP), lazy loading, edge caching
- A custom storefront built for the brand, free of theme constraints
- Code-split JavaScript, so a first view downloads the route it is on and nothing else
The result
A storefront that sends 3,084 bytes where the theme sent 385,680, looks the way the brand wants it to, and has no template ceiling waiting for it next season.
What we have not measured is conversion. Nobody handed us the before figure, we did not run the test ourselves, and a lift we cannot reproduce is not a result. So this page does not carry one.
The old storefront is still online. That is the only reason this page can show a before at all.
Both storefronts above are still live, so the payload comparison is one you can run yourself. The same rule applies to everything in all the case studies we have published, which also sets out what we refuse to put a number against.
See what else we've built.
Want results like this for your store?
Start with a free audit - we'll show you exactly where your Shopify store is losing speed and conversions.


