Mobile Speed Guide 10 Fixes for a Faster Shopify Store
speed-optimization

How to Improve Shopify Mobile Speed: 10 Fixes That Actually Work

This article may contain affiliate links. See our disclosure.

If your Shopify store loads in 4+ seconds on mobile, you’re losing customers before they see a single product. Mobile users abandon pages faster than desktop users, networks are less reliable, and mobile CPUs are slower at processing JavaScript. Even a store that feels fast on desktop can be genuinely painful on a phone.

Google made mobile speed a ranking factor through Core Web Vitals. A slow mobile store doesn’t just hurt conversions - it loses organic rankings to faster competitors. The two problems compound each other.

The 10 fixes below are ordered by impact. You don’t need a developer for most of them.


Why Mobile Speed Is a Separate Problem from Desktop

Mobile devices process JavaScript 4-6x slower than desktop computers. The same 500KB of app scripts that adds 300ms to a desktop load can add 1.5-2 seconds on a mid-range Android phone.

Network conditions add another layer. A desktop on WiFi has a stable, fast connection. Mobile traffic runs on 4G with variable latency, and a portion still runs on slower connections in certain markets.

Google PageSpeed Insights scores mobile and desktop separately. A store scoring 82 on desktop can score 28 on mobile. The files are identical - but mobile hardware and networks expose every inefficiency that desktop hides.

Google’s mobile-first indexing makes this directly relevant to SEO. The mobile version of your store is what Google evaluates for rankings. Slow mobile performance costs you both search visibility and conversions.


How to Measure Your Shopify Mobile Speed

Start by getting your baseline score. There are two tools worth using here.

Google PageSpeed Insights - Go to pagespeed.web.dev and enter your store URL. Check the Mobile tab specifically. It reports three Core Web Vitals:

  • LCP (Largest Contentful Paint) - Time until the main image or text block loads. Target: under 2.5 seconds
  • INP (Interaction to Next Paint) - How fast the page responds to taps and clicks. Target: under 200ms
  • CLS (Cumulative Layout Shift) - How much the page moves around while loading. Target: under 0.1

Google Search Console - Under Core Web Vitals, you’ll see real-world data from actual visitors, split by mobile and desktop. This is more useful than lab tests because it reflects real device and network conditions.

You can also use the Roketify Shopify Speed Test to get a quick read on your store’s performance score and see which pages need the most attention.

Run your homepage, a collection page, and your best-selling product page through PageSpeed Insights. Note which metrics are failing - that tells you where to focus.


Fix 1: Compress and Convert Images to WebP

Images cause more slow mobile load times than anything else on Shopify stores. A product image uploaded as a 4MB PNG is a serious drag on mobile.

What to do:

  • Convert all images to WebP format - WebP files are 30-50% smaller than JPEG at the same quality
  • Compress images before uploading - aim for product images under 200KB
  • Use appropriate dimensions - a mobile screen doesn’t need a 3000px wide image
  • Add explicit width and height attributes to every image element to prevent layout shift (CLS)

How to automate this: Tiny SEO Speed Image Optimizer (5 stars, 2,159 reviews) compresses and converts your product, collection, and blog images automatically. It runs in the background, processes your entire catalog, and serves WebP versions via CDN.

Try Tiny SEO Free


Fix 2: Enable Lazy Loading for Below-the-Fold Images

Loading every image at once wastes mobile bandwidth and delays the content the customer sees first.

Lazy loading defers images below the fold until the user scrolls toward them. The browser loads above-the-fold content first, which directly improves LCP.

Most modern Shopify themes include lazy loading by default. Check your theme’s documentation. If yours doesn’t, you can add the loading="lazy" attribute to <img> tags in your theme code, or use an app that handles it.

Do NOT lazy load your hero image or first product image. Lazy loading those elements delays LCP - the opposite of what you want. Only apply it to images below the fold.


Fix 3: Audit and Remove Unused Apps

Every active Shopify app can inject JavaScript and CSS into your storefront - even on pages where it does nothing. An app you installed six months ago and stopped using may still be loading scripts on every product page.

How to audit:

  1. Go to Shopify Admin > Apps and list every installed app
  2. For each app, ask: is this actively generating revenue or solving a problem right now?
  3. For any app you’re unsure about, check if it loads scripts using Chrome DevTools (Network tab, filter by JS)
  4. Uninstall anything that doesn’t pass the test

A store with 20 apps loads 20 separate JavaScript files - 20 separate HTTP requests on every page. On mobile, the combined parsing, compiling, and execution cost adds up fast.

Cut these first:

  • Pop-up and email capture apps that are no longer active
  • Social proof / FOMO notification apps you tested once
  • Analytics or tracking apps you’ve replaced with something else
  • Upsell apps that load scripts on product pages but only do anything at checkout

Fix 4: Defer Non-Critical JavaScript

Scripts from apps you actively use don’t all need to load immediately. Chat widgets, loyalty programs, review displays, and upsells can load after the critical page content without the customer noticing.

Render-blocking scripts prevent the browser from displaying the page until they’ve fully loaded and executed. Each one adds directly to your mobile LCP.

What to look for in PageSpeed Insights:

  • “Eliminate render-blocking resources” - tells you which scripts are blocking render
  • “Reduce JavaScript execution time” - tells you which scripts are most expensive to process

How to fix it: Hyperspeed (4.9 stars, 168 reviews) defers and minifies scripts from third-party apps, removes unused CSS, and prioritizes resources that affect initial page render.

View on Shopify App Store


Fix 5: Use a Lightweight Shopify Theme

Your theme is the foundation. A bloated theme with animations, parallax scrolling, and heavy JavaScript loads slowly on every page - and mobile takes the hit hardest.

What makes a theme heavy:

  • Large JavaScript bundles for animations and interactive elements
  • Multiple font families loaded from external sources
  • Unused CSS covering features you haven’t activated
  • Complex Liquid templates that generate large HTML

What to look for in a lightweight theme:

  • Native lazy loading support
  • Minimal JavaScript dependencies
  • System font stack or a single custom font
  • Strong baseline PageSpeed scores on the theme’s demo store

Shopify’s own Dawn theme is one of the fastest available. If your current theme scores poorly on mobile and you’re not deeply invested in customizations, switching to Dawn is often the quickest path to better mobile scores.

If switching isn’t practical, ask a developer to audit your theme for unused CSS and JavaScript that can be stripped out.


Fix 6: Reduce Third-Party Tracking Scripts

Every tracking pixel, chat widget, heatmap tool, and retargeting script adds HTTP requests and JavaScript execution time on mobile.

Common culprits:

Script TypeTypical WeightMobile Impact
Facebook Pixel60-120KB JSHigh
Google Tag Manager (with multiple tags)VariableVery High
Hotjar / Lucky Orange80-150KB JSHigh
Klaviyo tracking40-80KB JSMedium
Live chat widgets100-200KB JSHigh

What to do:

  • Use Google Tag Manager to consolidate tracking pixels - one GTM script instead of five separate ones
  • Delay third-party scripts until after the page is interactive (GTM has built-in trigger options for this)
  • If you use heatmap tools like Lucky Orange, enable them during analysis periods only rather than leaving them always on
  • Audit your GTM container - old tags from past campaigns often keep running long after the campaign ends

The goal isn’t to remove all tracking. It’s to load it after the user can interact with the page.


Fix 7: Optimize Your Largest Contentful Paint (LCP)

LCP measures how long until the largest visible element loads - usually your hero banner or first product image. It’s the Core Web Vitals metric most directly tied to how fast a page feels on mobile.

Common LCP problems on Shopify:

  • Hero image not preloaded - the browser discovers it too late in the render process
  • Hero image over 2MB
  • Hero image served as JPEG or PNG instead of WebP
  • LCP element is a background CSS image, which loads after the CSS is parsed

How to fix:

Add fetchpriority="high" and loading="eager" to your hero image in your theme code. This tells the browser to load this image before anything else.

<img
  src="{{ section.settings.image | image_url: width: 1200 }}"
  width="1200"
  height="600"
  fetchpriority="high"
  loading="eager"
  alt="{{ section.settings.image.alt }}"
>

Also add a <link rel="preload"> tag in your theme’s <head> for the hero image so the browser starts downloading it as early as possible.

If your LCP is a background CSS image, move it to an <img> tag - background images always load later than inline images.


Fix 8: Fix Cumulative Layout Shift (CLS)

CLS measures how much the page shifts visually as it loads. On mobile this is particularly bad - buttons move, content jumps, users tap the wrong thing.

Common causes of CLS on Shopify:

  • Images without explicit width and height attributes - the browser doesn’t know how much space to reserve
  • Web fonts loading after text is already displayed, causing a reflow
  • App widgets that inject content (chat buttons, banners, pop-ups) that push content around on load
  • Ads and embeds that load at unknown sizes

How to fix:

  • Add width and height to every <img> tag in your theme - this reserves space before the image loads
  • Use font-display: swap in font declarations and preload your web fonts in <head>
  • For widgets that appear on load (chat buttons, cookie banners), set a fixed size in CSS so they don’t shift content when they appear

A CLS score above 0.1 is a failing grade on Core Web Vitals. Stores with significant layout shift lose both rankings and conversions.


Fix 9: Use a Speed Optimization App

If you want a single app that handles multiple fixes automatically, a dedicated speed optimization app is worth testing. See the full breakdown in our best Shopify speed apps guide - here’s a quick comparison of the main options:

Booster Page Speed (4.7 stars, 1,301 reviews) - prefetches pages when users hover over links, which cuts perceived load time without changing actual file sizes. Also handles image lazy loading and script optimization.

Tiny SEO (5 stars, 2,159 reviews) - image compression, WebP conversion, lazy loading, and structured data. Best fit if images are your main bottleneck.

Hyperspeed (4.9 stars, 168 reviews) - JavaScript deferral, CSS minification, and render-blocking resource removal. Best fit if scripts are your main bottleneck.

Run PageSpeed Insights before and after installing any speed app to verify it actually improves your scores. Some speed apps add their own scripts that cancel out the gains - measure, don’t assume.


Fix 10: Preload Key Resources

Preloading tells the browser to fetch critical resources - fonts, images - as early as possible, before it would normally discover them.

Add these to your theme’s <head> section:

<!-- Preload your custom font -->
<link rel="preload" href="/fonts/your-font.woff2" as="font" type="font/woff2" crossorigin>

<!-- Preload hero image (replace with your actual image path) -->
<link rel="preload" as="image" href="{{ section.settings.hero_image | image_url: width: 1200 }}">

Also add:

  • DNS prefetch for third-party domains your store loads from:
<link rel="dns-prefetch" href="//fonts.googleapis.com">
<link rel="dns-prefetch" href="//cdn.shopify.com">
  • Preconnect for resources you always load:
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>

These small additions can cut 200-500ms off mobile load times by eliminating connection setup delays for resources the page always needs.


Mobile Speed Fix Checklist

Work through these in order:

  • Run the Roketify Speed Test and PageSpeed Insights on mobile for homepage, collection page, and product page - note which Core Web Vitals are failing
  • Compress all images and convert to WebP - target under 200KB per product image
  • Enable lazy loading for below-the-fold images - but NOT for the hero or first product image
  • Audit installed apps - uninstall anything unused
  • Check PageSpeed “render-blocking resources” diagnostic - defer or async flagged scripts
  • Add explicit width and height to all <img> tags to prevent CLS
  • Add fetchpriority="high" to your hero image
  • Preload web fonts and hero image in <head>
  • Consolidate tracking pixels through Google Tag Manager
  • Retest in PageSpeed Insights - verify improvements in LCP, INP, and CLS

Final Thoughts

Slow mobile stores come down to the same causes: oversized images, too many app scripts, render-blocking JavaScript, and layout shift. Fix those and the scores follow.

Start with images - they’re the biggest gain for the least work. Then script auditing and deferral. Preloading and explicit image dimensions come last and clean up the remaining points.

For a broader look at Shopify performance, see our guide to speeding up your Shopify store. If you want to understand where your store stands first, run it through the Roketify Speed Test.

After making changes, check Google Search Console’s Core Web Vitals report. It shows real-world data from actual mobile visitors - that’s what affects your rankings, not just the lab score.

Frequently Asked Questions

What is a good mobile speed score for Shopify?

A score of 50 or above on Google PageSpeed Insights is considered acceptable for Shopify stores, but 70+ is where you start seeing real SEO and conversion gains. Most Shopify stores score between 30 and 55 on mobile out of the box. The Core Web Vitals thresholds to aim for are: LCP under 2.5 seconds, INP under 200ms, and CLS under 0.1. These are the specific metrics Google uses to assess mobile page experience for rankings.

Why is my Shopify store slow on mobile but fast on desktop?

Mobile devices have slower CPUs than desktop computers, often 4-6x slower at processing JavaScript. They also run on variable network connections. Google PageSpeed Insights scores mobile and desktop separately because of this. A store that scores 85 on desktop can score 35 on mobile - not because the files are different, but because mobile devices take longer to parse and execute the same JavaScript. Heavy app scripts and unoptimized images hit mobile far harder than desktop.

Do Shopify apps slow down my mobile store?

Yes, most Shopify apps inject JavaScript and CSS into every page of your store - including pages where the app does nothing. A store with 15-20 apps can have 800KB or more of JavaScript loading before a customer can interact with the page. Each app script blocks or delays rendering on mobile. The fix is to audit which apps actually need to load on which pages, remove apps you're not actively using, and use apps that load their code asynchronously rather than blocking the main thread.

How does mobile speed affect my Shopify SEO?

Google uses Core Web Vitals as a ranking signal, and these metrics are measured on mobile. A slow mobile store can directly hurt your organic search rankings - not just your conversion rate. Google's mobile-first indexing means it crawls and evaluates the mobile version of your store as the primary version. Stores with poor LCP, high CLS, or slow INP scores get a ranking disadvantage against faster competitors. Improving mobile speed improves both rankings and conversion rate at the same time.

Marcus Webb
Written by
Marcus Webb
Shopify Consultant & E-commerce Strategist

Shopify consultant with 6+ years of hands-on experience testing and reviewing 200+ apps to help merchants find the right tools for their stores.

View full profile →