Shopify Mobile Speed Optimization: 10 Fixes That Work

Shopify Mobile Speed Optimization: 10 Fixes That Work

Shopify mobile speed optimization works when you fix the heaviest problems first: unused apps, third-party scripts, oversized images, a slow hero image, and a bloated theme. The ten fixes below run roughly from highest impact to lowest effort. A brand with no spare engineering time gets the most from an edge speed layer such as Nostra AI Dash, which deploys with a DNS change. A merchant who runs the store alone should start with the app audit and the image fixes. A store with a developer on call can go straight to the LCP, script deferral, and theme code items.

People often ask why Shopify feels slow on phones. The platform itself rarely causes it. Shopify serves stores from a global CDN, so the drag usually comes from what you add on top: apps, pixels, large photos, and heavy themes. Phones make each of those costs worse, because they have weaker processors and slower connections than the laptop you build on.

Each fix below covers what it fixes, how to apply it, and who gains most. Nostra AI runs agents at the edge of ecommerce storefronts, so the first item is our own product, and we say plainly where the free fixes should come first. Before the list, a short section shows how to measure, so you can prove each change worked.

How to measure mobile speed before you start

Measure with PageSpeed Insights on the mobile tab, then confirm with real visitor data from Search Console and Shopify's own web performance report. Record a baseline for your homepage, a collection page, and a product page before you change anything. Without a baseline you cannot tell which fix helped and which only felt productive.

Tools to use

Start with PageSpeed Insights. Read the field data at the top first, because it comes from real Chrome users. The lab score below it comes from a simulated phone on a throttled connection, so use it to diagnose problems, not to judge your store.

  • Shopify web performance report: real visitor data from your own store, inside the admin.
  • Search Console Core Web Vitals report: groups your URLs into good, needs improvement, and poor for mobile.
  • Chrome DevTools: mobile throttling in the Performance panel, plus the Coverage tab for finding unused code.

Field data tells you whether shoppers are hurting, and lab data tells you why.

Targets to hit

Google judges the three Core Web Vitals at the 75th percentile of visits. INP replaced FID as a Core Web Vital in March 2024, so ignore older advice that cites FID. The thresholds are documented on web.dev.

A three-rung ladder listing the good thresholds for LCP, INP, and CLS on mobile.

Metric Good Needs improvement Poor
LCP (loading) 2.5 s or less 2.5 to 4 s over 4 s
INP (responsiveness) 200 ms or less 200 to 500 ms over 500 ms
CLS (layout stability) 0.1 or less 0.1 to 0.25 over 0.25

How to test without fooling yourself

Run each page three times and keep the median, because Lighthouse scores move between runs. Change one thing at a time and retest after each change. Check at least once on a real phone over mobile data, since desktop emulation flatters results.

1. Nostra AI Dash for edge acceleration

Dash speeds up your mobile pages at the edge without touching your theme, apps, or code. It is the Speed Agent behind Nostra AI Edge Delivery, and it is the fastest route when you have no engineering time.

What it fixes

Dash monitors your site speed around the clock and accelerates pages from over 300 edge locations, so a shopper on a phone gets content from a node near them. Nostra AI reports up to 47% faster load times and an expected revenue lift of about 3%. It is for storefronts where a slow page quietly reduces conversion.

Edge delivery speeds up the page without asking you to touch the theme.

How to apply it

Deployment is a DNS-level change. You need no code changes and no replatforming. The setup follows a fixed timeline.

  1. Day 1: your store connects at the DNS level, after 48 to 72 hours of internal testing and a Go Live call.
  2. Days 2 to 14: the agents observe and learn your store.
  3. After that: optimization runs automatically, and Edge Delivery typically reaches full acceleration in about two weeks.

Compare your PageSpeed baseline against the same pages after those two weeks.

Who gains most

Mid-size and large DTC brands on Shopify or Salesforce Commerce Cloud get the most from it, especially when engineers are busy elsewhere. Nostra AI is also SOC 2 compliant, which matters to larger security reviews. A small store with a handful of apps should run fixes 2 to 10 first. Dash accelerates delivery, but it cannot turn a 9 MB page into a light one, so it works best alongside the rest of this list. Talk to the team at nostra.ai for plan details.

2. Audit apps and remove leftover code

Remove every app that does not earn its place, then clean the code it left behind. Apps are the most common cause of slow Shopify stores, and the fix costs nothing.

What it fixes

Many apps inject JavaScript and CSS into your storefront, even on pages where you never use their features. Some leave snippets in your theme after you uninstall them. Speed-booster apps are scripts too, so test them before and after, and uninstall any that do not move your numbers. You also cannot install a server cache plugin the way you can on WordPress, because Shopify manages hosting and caching. Your gains live in front-end weight.

Every app is a script until you prove it is worth its weight.

How to apply it

Work through your installed apps in a short pass.

  1. Open your admin app list and write down every app.
  2. Mark each one that directly supports revenue or conversion.
  3. Uninstall the rest.
  4. Duplicate your theme, then search theme.liquid and the snippets folder for leftover app code.
  5. Rerun PageSpeed Insights on your three baseline pages.

Who gains most

Stores that have been live for years gain the most, since they have collected trial apps, retired review widgets, and abandoned popups. Merchants without a developer can finish steps 1 to 3 alone. Leave the code search in step 4 to a Shopify expert if you are not comfortable in the theme editor.

3. Start from a fast, current theme

Your theme sets the speed ceiling for everything else, so choose one built on Online Store 2.0 and test it before you commit. Shopify's free Dawn theme is built with performance in mind and makes a good benchmark.

What it fixes

An older or feature-heavy theme ships CSS and JavaScript for mega menus, parallax effects, and video backgrounds that you may never use. No amount of image compression removes that code. A lean theme loads less before the first paint, which helps LCP and INP together.

How to apply it

Judge a theme on evidence, not on screenshots.

  • Run the theme's demo store through PageSpeed Insights on the mobile tab.
  • Install candidates on an unpublished copy and load your real products into them.
  • Compare the same page types against your current baseline.
  • Skip features you will not use, because every feature costs bytes.

A slow theme caps your score before you optimize a single image.

Who gains most

Stores on pre-2.0 themes, or on themes with years of custom edits, gain the most. A theme switch is a project, though. If your current theme scores acceptably, finish the cheaper fixes first and change themes only when the numbers still stall.

4. Compress and resize product images

Resize every image to the largest size a shopper will actually see, then compress it. Images are the heaviest part of most product and collection pages, so this is the best-paying fix after the app audit.

A phone on a table next to a stack of product photos, one print much larger than the rest.

What it fixes

Consider a product gallery with eight photos uploaded straight from the camera at 900 KB each. That is 7.2 MB of images. Compress them to 150 KB each and the gallery weighs 1.2 MB, which is 6 MB less to download on a phone connection. A phone screen is under 500 CSS pixels wide, so delivering a 4000 px original wastes almost all of those bytes.

How to apply it

Resize to about 2000 px on the longest edge before upload, and compress with a tool such as Squoosh or TinyPNG. Upload JPEG or PNG, because Shopify's CDN serves WebP automatically to browsers that support it. Then let the theme choose the right size per device.

{{ product.featured_image | image_url: width: 800 | image_tag:
  widths: '320, 480, 640, 800',
  sizes: '(max-width: 749px) 100vw, 50vw' }}

Replace animated GIFs with short, muted, looping MP4 clips. They look the same and weigh far less.

A phone never needs the 4000 px original.

Who gains most

Catalogs whose photos come directly from a studio gain the most. The fix is one-time per image, so batch the bestsellers first and work down by traffic.

5. Prioritize the hero image that sets LCP

On mobile, your LCP element is usually the hero banner or the first product image, so load it first and never lazy-load it. A good LCP is 2.5 seconds or less.

A phone standing upright, its screen showing a large banner photo with a button beneath it.

What it fixes

PageSpeed Insights names your LCP element in its diagnostics. The usual faults are a hero set to lazy-load, a slider that delays the first image, or a huge file. Each one pushes the largest visible element later than it needs to be, and Google judges that time directly.

How to apply it

Load the hero eagerly with high fetch priority, and size it for phones.

{{ section.settings.hero | image_url: width: 1200 | image_tag:
  loading: 'eager',
  fetchpriority: 'high',
  widths: '375, 750, 1100',
  sizes: '100vw' }}

If the hero carries text baked into the image, upload a separate mobile crop. Turn off autoplay background video on mobile, because it competes with the image for bandwidth. Retest the LCP time after the change.

Never lazy-load the one image everyone sees first.

Who gains most

Any store whose mobile LCP sits above 2.5 seconds in Search Console gains the most. Stores with a text-heavy hero or a video hero often see the biggest drop.

6. Lazy load below-the-fold media

Lazy load everything below the first screen, and give every image fixed dimensions. The browser then downloads images only as the shopper scrolls toward them, and the layout stays put.

What it fixes

A collection page with 24 products requests dozens of images at once. Native lazy loading delays the off-screen ones, which cuts the initial download and frees bandwidth for the content shoppers see first. Fixed dimensions reserve space, so nothing jumps when an image arrives, which protects your CLS score.

How to apply it

Add the attribute to below-the-fold images, along with width and height.

<img src="card.jpg" width="400" height="500" loading="lazy" alt="Linen shirt, front view">

Apply the same idea to video. Show a poster image and load the player only when a shopper taps it. Embedding a hosted video also avoids serving a large file from your own theme. Keep the first row of products and the hero eager, as in fix 5.

Load what the shopper sees now, and defer what they might see later.

Who gains most

Collection pages, long homepages, and storytelling pages gain the most. Stores with image-light product pages see a smaller effect, so check your own waterfall in DevTools before spending time here.

7. Defer third-party scripts and tracking tags

Delay or defer every script that does not need to run before the page is usable. Tracking pixels, chat widgets, review widgets, and heatmaps compete with your page for the phone's processor, and that hurts INP.

What it fixes

Scripts run on the main thread, so a pile of them makes taps feel slow even after the page appears. Duplicate tags make it worse, such as GA4 installed through an app, the theme, and a tag manager all at once. Each pixel you remove or defer returns time to the shopper.

How to apply it

Work through the usual suspects.

  • Move marketing pixels into Shopify's customer events as custom pixels instead of pasting them into theme.liquid. They are designed to run in a sandbox away from your storefront code.
  • Load chat widgets after the first interaction or a short delay.
  • Run heatmap tools for sample periods, not permanently.
  • Add defer to your own scripts.
<script src="{{ 'custom.js' | asset_url }}" defer></script>

Retest your events after each change, because a delayed tag that misses a purchase hurts attribution.

A script that loads late costs nothing, and one that loads early costs every visitor.

Who gains most

Stores running paid social and search with five or more tags gain the most. Marketing and engineering should agree together on which tags are essential, since each team owns different scripts.

8. Replace sliders and slim the mobile homepage

Swap the homepage slideshow for a single hero banner, and cut the homepage down to what a shopper needs to start browsing. Most mobile visitors never swipe past the first slide.

What it fixes

A slideshow loads several full-size images, which slows LCP and adds JavaScript for the carousel. A crowded homepage repeats the problem with more sections, more images, and more scripts. One strong hero with a single call to action loads faster and usually gives shoppers a clearer first step.

How to apply it

Rebuild the top of the page in a few moves.

  • Use one static hero image with one clear call to action.
  • Keep featured collections and bestsellers, and drop the sections nobody scrolls to.
  • Turn off autoplay video on mobile.
  • Delay email popups until after a scroll or a set time, and keep them small on phones, because full-screen overlays block content and delay interaction.

Who gains most

Homepages assembled by committee gain the most. Stores sending social traffic to the homepage should also test it, since those visitors arrive on phones and leave quickly when the first screen drags.

The faster page is often the simpler page.

9. Cut font weight and use system fonts

Use system fonts where your brand allows it, and limit custom fonts to one family in two weights. Every font file is another request that can delay text or make it flash.

What it fixes

Custom web fonts require extra downloads before text renders in its final style. That delays readable content, and on a weak connection it is noticeable. System fonts need no download, so text appears with the first paint. Many stores run three families and four weights without anyone deciding to.

How to apply it

Check your theme's typography settings first, since many themes offer a system font option. If you keep a custom font, tell the browser to show text immediately with a fallback.

{{ settings.type_body_font | font_face: font_display: 'swap' }}

Cap yourself at one custom family and two weights, and keep the other text on system fonts. Replace icon fonts with inline SVG, because a whole icon font loads for a few symbols.

Text should never wait for a font.

Who gains most

Brands with several font families gain the most. A brand-sensitive store can keep a custom font for headings only and let body text use the system stack, which keeps most of the identity and most of the speed.

10. Trim theme code and redirect chains

Delete dead CSS, JavaScript, sections, and redirect chains from your theme. Years of edits leave a store carrying code that no page uses.

What it fixes

Unused code downloads and parses on every visit, so it costs the same as useful code. Redirect chains add a round trip for each hop before the page even starts loading. Duplicate libraries are common too, such as two copies of a slider script from two old apps.

How to apply it

Always duplicate your theme first, then work on the copy.

  1. In Chrome DevTools, open the Coverage tab and reload a page to see how many bytes go unused.
  2. Delete sections, snippets, and assets that no template references.
  3. Remove leftover app code found in fix 2.
  4. Check that any custom CSS and JavaScript you added are minified.
  5. Replace redirect chains in Shopify's URL redirects list with one direct redirect, and update internal links to the final URL.

Code you do not use still ships to every phone.

Who gains most

Stores with years of customization gain the most, and so do stores that have changed their URL structure. Non-coders should hire a Shopify expert for steps 1 to 4. Redirect cleanup in step 5 is safe for a merchant to do alone.

Where to start on mobile speed

Mobile speed comes from removing weight, not from adding tricks. Measure first, then cut the apps and scripts you do not need, shrink and prioritize images, simplify the homepage, and trim the theme. Those fixes are free and live inside your admin or theme code. If you lack engineering time, an edge layer like Dash takes on delivery without code changes and runs alongside everything else here.

Order matters. Start with the app audit and image sizes, since they are cheap and show up in your next PageSpeed run. Then handle the hero image and third-party scripts, which usually decide your LCP and INP. Re-measure after every step and keep a log, so you know what held.

Fast pages still suffer when bots find your store. Bot traffic inflates sessions, distorts conversion rate, and wastes ad spend, which can hide the gains you just made. If you want the traffic reaching your fast store to be real shoppers, see how Edge Protect filters bad bots before they reach your site.