Book intro call
← All insights

Shopify

The Shopify Speed Checklist: How We Hit 90+ Mobile PageSpeed on Real Brands

Apps, themes, fonts, images, third party scripts, the exact audit and fix order we run when a Shopify store is slow and the team has tried everything.

2026-03-14 · 9 min read · Rafat Afrad

Shopify gets blamed for being slow. It's usually not Shopify, it's the 47 apps, 12 third party scripts, 4MB hero video and 6 web font weights the merchant has bolted onto a stock theme. Hitting 90+ on mobile PageSpeed Insights is achievable on Shopify, including Shopify Plus, without going headless. Here's the audit we run.

Step 1, measure honestly

Run PageSpeed Insights and WebPageTest on home, collection, PDP and cart. Note both mobile and desktop scores, and the specific Core Web Vitals failures: LCP, CLS, INP. PageSpeed alone isn't enough, WebPageTest's waterfall reveals which third party script is the actual culprit.

Step 2, app audit (biggest single lever)

Every Shopify app injects scripts and styles. Most brands have 15 to 30 apps and use 5. List every installed app, classify as critical / occasional / unused, and uninstall ruthlessly. Then for the critical ones, check if they offer a theme app extension (lazy loaded) version, many do.

Usual suspects to kill

Multiple review apps, abandoned wishlist apps, old loyalty plugins, unused upsell tools, second analytics platforms, sticky bar apps, currency converters when Shopify Markets does it natively.

Step 3, third party scripts

After apps, the second biggest weight is your tag stack: GA4, Meta Pixel, TikTok Pixel, Klaviyo, Gorgias, Hotjar, support chat. Audit which fire on every page and move what you can server side (Shopify's native pixel + CAPI, server side GTM, Klaviyo's onsite tracking). Defer or async load the rest.

Step 4, images

  • Serve in WebP or AVIF, Shopify does this natively if you use img_url filters correctly.
  • Set explicit width and height to prevent CLS.
  • Lazy load below the fold images.
  • Hero image: preload it, use fetchpriority=high, don't use a video unless you must.
  • Use responsive srcset, don't ship a 2000px image to mobile.

Step 5, fonts

Custom fonts are deceptively heavy. The fix:

  • Self host (don't link to Google Fonts CDN).
  • Ship only the weights you actually use, usually 2, sometimes 3.
  • Use font-display: swap to prevent invisible text during load.
  • Preload your critical body font with rel=preload.
  • Subset to Latin if you don't ship internationally.

Step 6, theme code

Many themes ship with heavy JavaScript bundles that load globally. Audit which features each section actually needs and load JS per section. Replace any blocking script in the head with deferred or module variants. Inline only critical CSS for above the fold content; defer the rest.

Step 7, re measure and iterate

After each fix, re run PageSpeed and WebPageTest. Most stores see 20+ point lifts in the first week just from app cleanup and image work. Getting from 70 to 90+ usually requires the font and JS work on top of that.

When you actually need headless

  • International, multi currency Plus brands with content heavy PDPs.
  • Sub second LCP targets for paid traffic at high CPM.
  • Editorial commerce where the content team wants WYSIWYG control outside Shopify.

Headless is a real tool, but for most $1M to $10M brands a well tuned Liquid theme is faster, cheaper and easier to maintain. Run this checklist before you spend $80k on a rebuild.

Work with Cart Ignite

Want this run on your business?

Book a 30 minute strategy call. We'll review your funnel and map the first AI workflow worth shipping, no pitch deck.

Book a call →

Keep reading