Shopify app bloat: how to find what's slowing your store
Published
What app bloat does to Shopify speed
App bloat is the cumulative drag of every Shopify app that injects script tags into theme.liquid. Every script runs on every page load, even when the feature it powers isn't being used. A typical mid-stage Shopify store has 12-18 apps installed; a typical 'slow' Shopify store has 25-40. The drag shows up in INP (interaction latency) more than LCP — JavaScript blocks the main thread when the buyer taps a button, and accumulated app scripts compound that blocking time.
Two changelogs from 2026 transformed app-bloat auditing on Shopify. The March 11, 2026 release added admin API activity tracking to Settings > Apps1. The April 1, 2026 release added per-app visibility into Extensions, Functions, and Pixels2. Both tools are inside the Shopify admin — no third-party app needed.
§012026
The 2026 admin tooling for app audit
The March 11, 2026 changelog post 'Track app activity and permissions from Settings' shipped three new views inside Settings > Apps. (1) 30-day admin API activity counts per app — how many API calls each app made. (2) A data-privacy view showing which apps access which customer data scopes. (3) App permission history — when permissions were granted, escalated, or revoked. Together, these surface the apps that are actually doing work vs the apps that are quietly installed but inactive.
Open Settings > Apps and sales channels > Apps. The activity column shows the 30-day API call count. The two patterns to look for: (a) apps with high activity that you don't recognise — usually a feature you installed once and forgot about, still firing on every order or page load; (b) apps with zero activity and stale permissions — installed but doing nothing, taking up theme.liquid space.
§02Extensions
Extensions, Functions, and Pixels — per-app visibility
The April 1, 2026 changelog added a critical second view: per-app breakdown of which Extensions, Functions, and Pixels each app uses. Extensions inject UI blocks into theme sections or checkout. Functions extend backend logic (discounts, shipping, payments). Pixels send analytics events to third parties. Each is a different bloat vector. An app using three Extensions on every storefront page is heavier than one using one Function on checkout only.
Click into any app in Settings > Apps. The detail panel now shows Extensions / Functions / Pixels2. The Extensions tab is the most relevant for page-load speed — those are the ones rendered into the storefront on every visit. The Functions tab matters for checkout speed specifically. The Pixels tab matters for INP because each pixel fires JavaScript on interactions.
The audit-priority rule: apps with multiple Extensions on storefront pages get audited first. Apps with Functions on checkout get audited second (because cart and checkout speed translates directly to conversion). Apps with only Pixels are usually low-bloat but check the count — five pixels firing on every page click adds up.
§03Workflow
The app-bloat audit workflow
Walk this end-to-end every quarter. (1) PageSpeed Insights baseline on three URLs — homepage, hero collection, hero product. Note INP and LCP. (2) Open Settings > Apps. Sort by activity. (3) For each app: read what it does, click into Extensions/Functions/Pixels, decide keep/audit/uninstall. (4) For uninstalls: do it in a development theme first (Online Store > Themes > Duplicate). (5) Re-run PageSpeed Insights in the dev theme. (6) Promote the dev theme to production once the delta is confirmed.
PageSpeed Insights baseline (mobile tab) on homepage, hero collection, hero product. Record INP and LCP per URL.
Settings > Apps. Sort by 30-day activity (low to high).
Bottom of the list: zero-activity or low-activity apps. For each, read description and decide keep/uninstall.
Click each kept app. Review Extensions / Functions / Pixels2. Note Extension count per app on storefront pages.
Duplicate the live theme to a development copy. Online Store > Themes > Actions > Duplicate.
Uninstall the prune candidates against the development theme (Settings > Apps > Uninstall).
Preview the development theme. Re-run PageSpeed Insights. Measure delta.
If the delta is positive, publish the development theme as live. If neutral, keep investigating other bloat vectors.
§04Orphans
The orphan-script trap after uninstall
Uninstalling an app on Shopify does not always remove its theme.liquid script tags. Some apps inject persistent code blocks that survive uninstall. This is the silent reason 'I uninstalled the app but the store is still slow' happens. The fix is manual: search theme.liquid (and section files) for the app's namespace or asset URLs and prune the orphan script tags by hand.
The debugging path Shopify documents4 in the SEO FAQ covers the missing-element pattern by checking theme.liquid for the expected emitter — the inverse approach finds orphan emitters left behind after uninstall. Open the theme code editor (Online Store > Themes > Edit code). Open theme.liquid. Use Ctrl+F to search for the uninstalled app's brand name, namespace, or known asset domain.
What to remove: <script> tags pointing to the app's CDN, inline configuration blocks (window.AppName = {...}), <link> tags loading the app's CSS. What to NOT remove: anything you don't recognise as belonging to the uninstalled app — when in doubt, back up theme.liquid first and remove one block at a time, testing the storefront after each removal.