← Blog·Performance

How Shopify Apps Are Quietly Draining Your Revenue

The average Shopify store runs 6–9 apps. Each one adds JavaScript that loads on every page — even pages where the app does nothing. Here's exactly how much that costs you, and what to do about it.

Abderrahim Baad·February 28, 2025·9 min read

When you install a Shopify app, the process feels harmless. Click install, authorize permissions, follow the setup wizard. The app adds its feature to your store — a review widget, a loyalty program, a countdown timer — and everything seems fine.

What you don't see is what the app leaves behind on every single page of your store: JavaScript that loads whether the app is being used or not, adds to your page weight, competes for network bandwidth, and delays the moment your customers can interact with your store.

Multiply that by 8 apps, and you've turned a fast store into a slow one — without changing a single line of your theme code.

The Hidden JavaScript Problem

Shopify apps work by injecting code into your storefront. Most do this through one of two mechanisms: script tags (a global JavaScript file loaded on every page) or app embeds (injected through the theme editor). Either way, the result is additional JavaScript that must be downloaded, parsed, and executed by the browser before your store becomes fully interactive.

Here's what that looks like in practice across a typical mid-size Shopify store:

847KB

Average total third-party JavaScript weight on a Shopify store running 8 apps — measured across 40 stores audited in 2024. For context, Google recommends keeping total page JavaScript under 300KB.

The HTTP Archive tracks page weight across millions of websites. E-commerce pages consistently rank among the heaviest on the web, and Shopify app bloat is a primary reason why.

What Each App Type Actually Costs

Not all apps are equally damaging. Here's a breakdown of the most common app categories and their typical JavaScript weight:

Review Apps (Yotpo, Judge.me, Stamped)

Review apps are among the most popular — and among the heaviest. Yotpo's script adds approximately 180–220KB of JavaScript loaded globally. Judge.me is lighter at around 60–80KB. Both load on every page, including checkout, blog posts, and pages that display no reviews at all.

The irony: reviews are one of the highest-converting elements on a product page. But if the review app slows your page load by 800ms, you may lose more conversions from the speed drop than you gain from the social proof.

Live Chat Apps (Tidio, Gorgias, Zendesk)

Live chat widgets typically add 50–120KB of JavaScript plus persistent polling scripts that make network requests every few seconds. On mobile, this polling contributes to battery drain — a subtle but real factor in bounce rate on mobile devices.

Google's third-party impact analysis consistently flags live chat scripts as significant contributors to Total Blocking Time (TBT), the metric with the highest weight in Lighthouse performance scoring.

Upsell and Popup Apps (ReConvert, Privy, Klaviyo)

Popup and upsell apps often load their entire feature set on page load — including logic for exit-intent detection, scroll tracking, A/B test variants, and targeting rules — even on visits where no popup will ever be shown. Klaviyo's embed scriptalone adds 90–140KB. If you're running Klaviyo plus a separate popup app, you may be loading 200KB+ of popup-related JavaScript on every page.

Loyalty and Rewards Apps (Smile.io, LoyaltyLion)

Loyalty apps typically add 80–150KB and inject UI elements (points balance widgets, referral banners) that require JavaScript to render. For first-time visitors who aren't members of your loyalty program, this is 100% wasted load.

Currency and Localization Apps

Third-party currency converters — instead of using Shopify Markets natively — typically add 40–80KB and cause layout shifts as they rewrite prices after the page loads, contributing directly to a poor CLS score.

The Real Revenue Cost

Let's quantify this. Deloitte Digital's research found that a 0.1-second (100ms) improvement in mobile load time increases retail conversions by 8.4%. Google's own data shows that 53% of mobile users abandon a page that takes more than 3 seconds to load.

For a store doing $40,000/month with 60% mobile traffic:

  • If app bloat is adding 1.5 seconds to your mobile load time, you're losing roughly 15× 8.4% = 126% worth of potential mobile conversion uplift
  • Realistically, a 1.5s improvement on mobile translates to a 15–25% conversion rate improvement for mid-size stores
  • On $24,000/month mobile revenue (60% of $40k), a 20% improvement = $4,800/month in additional revenue

Your apps may have cost $0–$50/month each to install. But the performance tax they impose costs multiples of that in lost revenue.

53%

Of mobile users abandon pages that take longer than 3 seconds to load. Most app-heavy Shopify stores load in 4–6 seconds on mobile. — Google/SOASTA Research

How to Audit Your Store Right Now

Step 1: Run a WebPageTest

Go to WebPageTest.org, enter your store URL, and select "Moto G4 — Chrome" as the test device on a 4G connection. This simulates a real mid-range mobile device. Look at the waterfall chart — every horizontal bar is a resource loading. Third-party app scripts will typically show as clustered groups of requests after your theme assets.

Step 2: Use Chrome DevTools Coverage

Open Chrome DevTools (F12), go to the Coverage tab (Ctrl+Shift+P → "Show Coverage"), and record a page load. Every JavaScript file will show what percentage of its code was actually executed. App scripts with 70–90% unused code are prime candidates for removal.

Step 3: Compare Before and After

In your Shopify admin, go to Online Store → Themes → Actions → Preview. Disable app embeds one at a time and test load speed after each removal using PageSpeed Insights. You'll quickly identify which apps have the largest performance impact.

The Better Approach: Replace, Don't Just Remove

The goal isn't to strip your store of functionality — it's to get the same functionality with less performance cost. Here's how:

  • Reviews: Replace a heavy review app with Shopify's native Product Reviews (free, minimal JavaScript) or build a lightweight custom review system using Shopify Metaobjects
  • Currency conversion: Use Shopify Markets natively — no third-party script required
  • Wishlist: Build natively with localStorage — no app needed, no JavaScript overhead beyond what you write
  • Live chat: Load conditionally — only inject the chat script after user interaction (a click or scroll), not on page load
  • Popups: Build a lightweight custom popup in Liquid + vanilla JS. A simple exit-intent popup needs less than 2KB of code, not 90KB

The Rule of Five

As a practical guideline for any Shopify store: run no more than 5 apps that inject JavaScript globally. For each app above that threshold, you should have a specific revenue justification — measurable data showing that the app generates more than it costs in performance tax.

If you can't measure an app's impact on revenue, you can't justify keeping it. The burden of proof should be on the app to earn its place in your stack, not on your customers to absorb the cost.

Every app you remove is a free performance optimization. In an environment where speed directly drives revenue, that's not a technical preference — it's a business decision.

PerformanceShopify AppsCROSpeed
B

Abderrahim Baad

Expert Shopify Developer · Authorized Partner

Expert Shopify developer and premium theme developer based in Marrakech, Morocco. Creator of StyleScape, Bolt, and Vibe on the Shopify Theme Store. Available for new projects →

Need help with your Shopify store?

Let's build something that converts.

Start a Project ↗