Skip to content
Sitequiry

How to speed up a Shopify store without breaking it

Shopify already gives every store fast hosting, a global CDN and automatic image resizing. When a Shopify store is slow, the cause is almost always what was added on top: apps, theme customizations, large media and marketing scripts. That also means most of it can be fixed without changing platform.

Updated 4 min read Written by the GE-KO team

Where the time goes

  • Apps that inject JavaScript and CSS on every page, including pages where they do nothing.
  • Code left behind by apps that were uninstalled; removing an app does not always clean up the theme.
  • Hero sliders, autoplay videos and full-width images far larger than the screen.
  • Third-party tags: chat, reviews, pop-ups, heatmaps, several analytics and advertising pixels.
  • Several web fonts in many weights.

Start with measurement

Run PageSpeed Insights on three templates: the homepage, a collection page and a product page, on mobile. Note LCP, TBT and the largest resources. Shopify's own web performance report in the admin shows real-user Core Web Vitals once the store has enough traffic.

Always test changes on an unpublished duplicate of the theme first, then publish.

Fixes in a safe order

  • Review the app list. Remove apps you no longer use and switch off app embeds that are not needed on every page (Online Store > Themes > Customize > App embeds).
  • Search the theme code for leftovers of removed apps (snippets and script tags with the app's name) and remove them on the duplicate theme.
  • Replace the hero slider with one image. Load it with fetchpriority="high", do not lazy-load it, and use Shopify's image_url filter with a sensible width and srcset.
  • Lazy-load images below the fold and give every image width and height to avoid layout shifts.
  • Delay chat, review and pop-up widgets until the user scrolls or interacts, where the app allows it.
  • Limit fonts to one family in two weights, or use a system font stack.
  • Move tracking pixels to Shopify's Customer Events where possible instead of theme code.

When the theme itself is the problem

Older, heavily customized themes often carry years of scripts and styles. Moving to a current Online Store 2.0 theme and rebuilding the key sections is sometimes cheaper than optimizing old code line by line. It is worth comparing both options before starting.

Product pages for SEO: one URL per product, variants and Product markup

Shopify serves the same product at several addresses. On Shopify's Dawn theme demo store, checked on 12 October 2026, /collections/all/products/puff-olive-leaf returned the product page with status 200 and a canonical tag pointing to /products/puff-olive-leaf, and a ?variant= link to the same product pointed its canonical there as well. Shopify adds canonical tags automatically, so a current, unmodified theme already consolidates these duplicates. Problems usually come from theme edits.

  • Open a product through a collection and through a ?variant= link and read the canonical tag in the page source. Both should name /products/<handle>. If not, check that theme.liquid still prints {{ canonical_url }} and that no app or snippet adds a second canonical.
  • Link product cards to /products/<handle>. Shopify's documentation of the within filter, which builds collection-scoped product links, warns that the standard and the collection-scoped product page have the same content on separate URLs.
  • Keep the default robots.txt rules. They already keep filtered (/collections/*+*) and sorted (/collections/*sort_by*) collection pages from being crawled, and Shopify warns that incorrect edits to robots.txt.liquid can cost all traffic.
  • Keep variants on one product page. Google's product variant guidelines accept this design when the whole product group has one canonical URL and each variant can be preselected by its own URL, with the right image, price and availability. Shopify's ?variant= deep links do this when the theme updates the page for the selected variant.
  • Check the Product markup the theme outputs. Shopify's structured_data filter returns a Product for a product without variants and a ProductGroup when it has variants. For merchant listings Google requires name, image and an Offer with a price above zero and priceCurrency; availability, brand, gtin, shipping and return details are recommended.
  • Mark up only what shoppers can see. Google's structured data guidelines say not to mark up content that is not visible on the page, so the price and availability in the markup should be the ones shown, and ratings or shipping details belong in the markup only if the page shows them. Test one product with and one without variants in the Rich Results Test after every theme change.

What access a developer needs

Speed work needs collaborator access with permission to edit themes and view apps, which the store owner grants from the admin without sharing a password. Work happens on a duplicate theme, so the live store is not affected until the owner approves.

Frequently asked questions

Can a Shopify store score 100 on PageSpeed?

Rarely on mobile, and that is not the goal. Aim for good Core Web Vitals (LCP under 2.5 s, INP under 200 ms, CLS under 0.1) for real users.

Do speed-booster apps help?

Be careful. Some only hide the problem from lab tests or add their own script. Removing weight is more reliable than adding another app.

Will speed work affect my sales or apps?

Not if it is done on a duplicate theme and each change is checked: add to cart, checkout, reviews and tracking should work the same after publishing.

Check your own site in about a minute

The free analysis measures the points from this guide on your URL and shows what to fix first.