Making a Shopify storefront fast without fighting the platform
Most slow Shopify stores are not slow because of Shopify. They are slow because of what was added to them, one app at a time, over two years.
We run several commerce storefronts on Shopify, including Vowly Store and Paperly. The platform is not the bottleneck people assume it is. Almost every slow storefront we have been asked to look at was slowed down by additions, not by the foundation.
Count the third parties before anything else
Before touching a template, open the network panel and count the distinct hosts a product page contacts. A typical store that has been running for two years will be talking to a dozen: analytics, a review widget, a chat bubble, a currency converter, an upsell app, two tag managers because nobody removed the first one.
Each of these was added for a reason, and most of the reasons were sound. But nobody ever measures the cumulative cost, because each addition looked small on the day it was made. The audit is not a technical exercise; it is a commercial one. For every script, ask what it earns and what it costs in main-thread time. Several will fail that test outright.
Images are still the largest win
On a store selling posters and stationery, images are the product, and they dominate the page weight. The fixes are well known and still routinely missed:
- Serve modern formats — the CDN will do this if asked, and the saving over JPEG is substantial at the same visual quality.
- Size the source to the rendered box, with a proper srcset. Shipping a 2000px image into a 400px slot is the most common single waste on a product grid.
- Give every image explicit dimensions so the layout does not shift while it loads. Layout shift is both a ranking signal and a genuine irritation.
- Eager-load only what is above the fold, and lazy-load everything else — but be deliberate about which is which, rather than lazy-loading the hero by accident.
Fonts deserve more scepticism than they get
Three weights of two families, loaded from a third-party host, will cost more than most people expect: an extra connection, a render delay, and a visible reflow when the swap happens.
Self-host the files, subset them to the characters actually used, preload the one weight that appears above the fold, and set a sensible display strategy so text is readable while the font loads. On a store selling to several European markets, remember that subsetting has to include the accented characters those markets need — a subset that drops umlauts will look fine in testing and broken in Germany.
Do not confuse the storefront with the checkout
A useful boundary when advising anyone on a Shopify store: the storefront is yours to optimise, the checkout is not, and that is fine. Payments, fraud handling and tax calculation are exactly the kind of thing a small team should not be rebuilding.
The performance work that matters commercially happens before the checkout — on the collection page, the product page and the cart, where visitors decide whether to continue. That is also where a made-to-order store carries extra weight, because personalisation interfaces add their own scripts and previews.
Measure what a customer experiences
Lab scores are useful for finding regressions and misleading as a goal. A lab run does not have a customer's older phone, their network, or the cookie banner that appears on the second visit. Field data from real sessions, segmented by device class and by market, will tell you where the problem actually is — and it is frequently mobile in one country rather than everywhere at once.
Related reading
Working on something like this?
We build and run the systems described here. Tell us what you are planning and we will give you an honest technical assessment.