# Why is my Shopify store slow? A 20-minute check for each likely cause

Apps, theme, images, widgets, fonts and tags. How to check each one on your own store in 20 minutes.

By Rohin Aggarwal · 2026-10-21

It is Sunday night. You open your own store on your phone, on the sofa, on home wifi. The logo appears. Then a grey box sits where the hero image should be. You count to three. Then you wonder what a shopper on a train sees.

**Quick answer**

- **Start with real visitors.** Shopify's Web performance report shows how your store loads for actual shoppers.
- **Then run PageSpeed Insights on mobile.** Its lab section names the files that cost the most.
- **Apps and old app code come first.** Uninstalling an app does not always remove its code.
- **Next check images, video and fonts.** Oversized heroes and autoplay video hurt load time on phones.
- **Test every widget on its own.** Reviews, UGC and chat widgets all add script to the page.

This guide gets you one thing: a short list of what slows your store, in order. You can then fix the top item first. Most checks need no developer and take a few minutes each.

## What "slow" means: three numbers Google measures

Google rates page experience with three Core Web Vitals. Each one matches a moment you felt on the sofa.

- **≤ 2.5s** — Largest Contentful Paint (LCP) (How long the main image or text block takes to appear)
- **≤ 200ms** — Interaction to Next Paint (INP) (How fast the page responds to a tap)
- **≤ 0.1** — Cumulative Layout Shift (CLS) (How much the page jumps while it loads)

_Google's "good" thresholds, measured at the 75th percentile of page loads. Source: web.dev._

Poor starts above 4 seconds for LCP, 500 ms for INP and 0.25 for CLS. The same thresholds apply on phones and desktops. A page passes when 75% of visits meet all three.

The grey box on your phone was LCP. A gallery that pushed the Add to cart button down is CLS. A size picker that lags after a tap is INP.

## Where to look first: Shopify's Web performance report

Shopify measures these three numbers from your real visitors. In your admin, go to **Online Store > Themes**. A summary at the top links to the full report. You can also open it from **Analytics > Reports**.

Each metric gets a rating of Good, Moderate or Poor. You can split the results by page type and by device. Look at mobile product pages first. That is where the buying decision happens.

You need the Reports staff permission to see it. A store with a password or in private mode has no visitor data yet.

## Then run PageSpeed Insights on one product page

Open [PageSpeed Insights](https://pagespeed.web.dev/) and paste the URL of a busy product page. Keep the Mobile tab selected.

The top section is field data from Chrome users over the last 28 days. It only appears for URLs with enough traffic. The lower section is a lab test by Lighthouse. It loads the page once on a simulated phone and network.

Use the field data to judge. Use the lab report to find causes. Its diagnostics list the largest files, the slowest scripts and the elements that shifted.

### Two reports, two jobs
_Use both. Read the field numbers to judge, and the lab list to fix._

**Shopify admin: Web performance report**
Real visitors to your store.
- ✓ Covers your whole store
- ✓ Splits by page type and device
- ✓ Good, Moderate or Poor per metric
- ✗ Does not name the file at fault
- ✗ Needs live traffic to fill

**Google: PageSpeed Insights**
One URL, field and lab together.
- ✓ Lists heavy files and slow scripts
- ✓ Shows which element is the LCP
- ✓ Free, and works on any store
- ✗ Lab result is one simulated load
- ✗ Field data only for busier URLs

## Cause 1: too many apps, and code from old ones

Each app that adds something to your storefront can load its own script. Shopify's help pages name app count as a common reason stores slow down.

Old apps matter too. Shopify says uninstalling an app does not always remove its code from your theme. Apps built on theme app extensions clean up after themselves. Older apps that edited theme files may leave snippets behind.

- **List what runs.** Go to Settings > Apps. Remove anything nobody has opened in months.
- **Check app embeds.** In the theme editor, open App embeds. Switch off any you no longer use, then save.
- **Search the theme code.** Look in layout/theme.liquid and the snippets folder for old app names.
- **Ask the developer.** Before you uninstall, ask the app's maker for removal steps.

Not sure what is installed? The [competitor stack detector](/tools/competitor-stack-detector) lists the reviews, UGC and video apps a store page loads. Run it on your own URL.

> **Skip "speed booster" apps:** Shopify warns about apps that patch browser features to raise test scores. The score goes up. Real shoppers see no change.

## Cause 2: a heavy theme and too many sections

Every section on the home page adds images, markup and often script. Shopify advises limiting the number of sections per page. It also advises paginating large collections.

Check which theme you run and its version. The [Shopify theme detector](/tools/shopify-theme-detector) tells you in a few seconds. An old, heavily edited theme often carries code for features you removed years ago.

A quick test: duplicate your theme and remove the bottom half of the home page sections. Run PageSpeed Insights on the preview. If the lab numbers improve a lot, the sections are your problem.

## Cause 3: images and video sized for a billboard

Shopify's image CDN already picks WebP or AVIF for browsers that support them. It also resizes and compresses. That only works when the theme asks for the right size.

- **Find the LCP element.** PageSpeed Insights names it. On product pages it is usually the main photo.
- **Never lazy-load that image.** Shopify's theme guidance says the LCP image must load straight away.
- **Lazy-load the rest.** Images below the fold can wait until the shopper scrolls.
- **Watch hero video.** A video's poster image can be the page's LCP element. Keep the poster light.
- **Give every image a size.** Width and height, or a CSS aspect ratio, stop the page jumping.

## Cause 4: third-party widgets, ours included

Review stars, UGC galleries, chat bubbles and pop-ups all run someone else's script on your page. Any of them can slow it. That includes UGC and shoppable video widgets like ours.

Shopify's developer docs suggest a clean test. In Chrome DevTools, block one widget's domain and record a page load. Then compare scripting time with the widget on and off.

When you look at a UGC or review widget, check three things.

- **Script size.** How many kilobytes load before the first tile shows? Check the Network tab, filtered by the vendor's domain.
- **Lazy loading.** A gallery below the fold should not fetch images or video on page load.
- **Layout shift.** The widget should reserve its space. If the page jumps when tiles appear, CLS suffers.

Our [widget speed checklist](/tools/widget-speed) turns this into eight tests. Use it on any vendor, including us.

We make Idukki, so here is how our widget handles this. Videos that are off screen do not preload. On phones, tile previews wait until the shopper first scrolls or taps. You should still test it on your own pages.

Load widgets only where they earn their place. Shopify's docs suggest limiting a review widget to product pages with a template check.

## Cause 5: custom fonts

Each custom font file is another download before text looks right. Shopify recommends system fonts because the shopper already has them.

If you keep a brand font, count the files. Each extra weight is another download. Web.dev suggests font-display: swap for brand text and optional for body text. A late font swap can also shift the layout.

## Cause 6: tracking pixels and tag managers

Pixels pile up. A campaign ends, and its tag keeps firing on every page. Shopify's developer docs rank a script audit as the top fix for slow taps.

Open your tag manager and list every tag with an owner and a reason. Remove any without both. Then check theme.liquid for pixels pasted in by hand.

## Check it in 20 minutes

| Minutes | Check | Where | What to note |
| --- | --- | --- | --- |
| 0 to 3 | Real-visitor ratings | Online Store > Themes, Web performance | Which metric is Poor or Moderate on mobile |
| 3 to 6 | Lab test | PageSpeed Insights, Mobile tab | The LCP element and the largest files |
| 6 to 9 | Apps installed | Settings > Apps | Apps nobody has opened in months |
| 9 to 11 | App embeds | Theme editor, App embeds | Embeds still on for removed features |
| 11 to 13 | Leftover code | Edit code: theme.liquid, snippets | Script tags for apps you uninstalled |
| 13 to 16 | Widgets | DevTools Network tab, filtered by vendor | Kilobytes and requests before first paint |
| 16 to 18 | Fonts | Theme settings, Typography | Number of custom font files |
| 18 to 20 | Tags | Your tag manager | Tags with no owner or no live campaign |

_One pass through the likely causes. Times are rough guides for a single product page._

For a second opinion on a product page, run the [PDP audit](/tools/pdp-audit). It checks LCP signals, widgets, video and mobile in one pass.

### FAQs

**Q: Why is my Shopify store slow on mobile but fine on desktop?**

A: Phones have slower processors and often slower networks. Script that runs fast on a laptop can block a phone. Check the mobile split in Shopify's report and run PageSpeed Insights on the Mobile tab.

**Q: Does uninstalling an app make my store faster?**

A: Often, but not always. Shopify says some apps leave code in your theme after you uninstall them. Search theme.liquid and the snippets folder for the app's name.

**Q: Why does my PageSpeed score change each time I run it?**

A: The lab test is a single simulated load, so it varies run to run. The field data covers 28 days of real Chrome users. Judge by the field data.

**Q: Will a reviews or UGC widget slow my store?**

A: It can. Check its script size and whether it lazy-loads images and video. Then check whether the page jumps when it appears. Block its domain in DevTools to compare.

**Your next step:** Open PageSpeed Insights now and test your busiest product page on mobile. Write down the LCP element and the three largest files. Then run the [widget speed checklist](/tools/widget-speed) against each widget on that page.

### Sources
- [web.dev, Web Vitals](https://web.dev/articles/vitals) — Good thresholds: LCP 2.5 s, INP 200 ms, CLS 0.1. Measured at the 75th percentile. Checked 21 October 2026.
- [web.dev, How the Core Web Vitals thresholds were defined](https://web.dev/articles/defining-core-web-vitals-thresholds) — Same thresholds for mobile and desktop. Poor above 4 s, 500 ms and 0.25.
- [web.dev, Largest Contentful Paint (LCP)](https://web.dev/articles/lcp) — Video poster images count for LCP.
- [web.dev, Optimize Cumulative Layout Shift](https://web.dev/articles/optimize-cls) — Set width and height on images and video, and reserve space for embeds.
- [web.dev, Best practices for fonts](https://web.dev/articles/font-best-practices) — font-display swap for branding, optional for body text.
- [Shopify Help Center, Web performance reports](https://help.shopify.com/en/manual/online-store/web-performance/web-performance-reports) — Reached from Online Store > Themes or Analytics > Reports. Good, Moderate or Poor per metric. Needs the Reports permission.
- [Shopify Help Center, Improving web performance](https://help.shopify.com/en/manual/online-store/web-performance/improving-web-performance) — App count, leftover app code, section count, system fonts.
- [Shopify Help Center, Uninstalling apps](https://help.shopify.com/en/manual/apps/uninstalling-apps) — Some apps add theme code that is not removed on uninstall.
- [Shopify Help Center, Theme images](https://help.shopify.com/en/manual/online-store/images/theme-images) — Shopify serves WebP or AVIF to browsers that support them.
- [shopify.dev, Audit and remove third-party scripts](https://shopify.dev/docs/storefronts/themes/best-practices/performance/audit-remove-third-party-scripts) — Leftover app code, DevTools domain blocking, loading widgets only on product pages.
- [shopify.dev, Never lazy-load the LCP image](https://shopify.dev/docs/storefronts/themes/best-practices/performance/never-lazy-load-lcp-image)
- [shopify.dev, Identify and remove fake performance apps](https://shopify.dev/docs/storefronts/themes/best-practices/performance/fake-performance-apps)
- [shopify.dev, Apps in the online store](https://shopify.dev/docs/apps/build/online-store) — App blocks and app embeds are removed automatically on uninstall.
- [Google for Developers, About PageSpeed Insights](https://developers.google.com/speed/docs/insights/v5/about) — Field data from the Chrome UX Report over 28 days. Lab data from Lighthouse.

---
Canonical: https://idukki.io/blog/why-is-my-shopify-store-slow
Tags: shopify, site-speed, core-web-vitals, pagespeed, mobile, apps, ugc-widgets
