Why Your Shopify Theme's App Embeds Are Silently Killing Your Page Speed (And How to Audit Them)
Why Your Shopify Theme's App Embeds Are Silently Killing Your Page Speed (And How to Audit Them)
We run conversion audits on Shopify stores every week, and one of the most consistent findings we see is a graveyard of app embed scripts loading on every single page, for apps the brand stopped using six months ago. The store owner uninstalled the app, assumed the code was gone, and moved on. It was not gone. It never is.
This is one of the most overlooked performance problems in the Shopify ecosystem, and it compounds quietly. Every app you install, test, and abandon leaves behind code that fires on page load. When you are running a store doing $5M or $10M a year, you have likely cycled through dozens of apps. The damage accumulates.
What App Embeds Actually Are and Why They Stick Around
When a Shopify app uses a theme app extension or injects code through the script tag API, it attaches itself to your storefront in ways that do not automatically clean up on uninstall. Theme app extensions live inside your theme's App Embeds section in the theme editor. Script tags registered through the API load independently of whether the app is still installed.
When you go to Online Store, then Themes, then Customize, then App Embeds, you will often find a list of toggles for apps you no longer recognize. Some are disabled. Some are still enabled. Several are probably orphaned, meaning the app that registered them no longer exists in your app list, but the embed is still there.
On a recent audit for a skincare brand doing around $8M annually, we found eleven app embeds active in their theme. They were actively using three of them. The other eight included a review app they had migrated away from, two upsell tools they had tested and abandoned, a defunct loyalty program, and a cookie consent banner they had replaced. Each one was firing JavaScript on every page load. Their mobile PageSpeed score was sitting at 34. After a cleanup plus a few other fixes, it moved to 61. That improvement happened before we touched a single line of custom theme code.
How to Run the Audit Yourself
Start inside the Shopify theme editor. Go to App Embeds and document everything you see. Cross reference each embed against your currently installed apps under Settings, then Apps. If an embed exists for an app that is not in your installed list, flag it for removal.
Next, open Chrome DevTools on your live storefront and go to the Network tab filtered by JS. Reload the page and look at what third party scripts are loading. You will often see domains you do not recognize. Run those domains through a quick search or use a tool like BuiltWith to identify which app or service they belong to.
Then run a WebPageTest or Google PageSpeed Insights report on your homepage, collection page, and product page. Look at the waterfall chart. Third party scripts that block rendering will show up clearly. Pay attention to render blocking resources and scripts that load in the first 3 seconds.
If you use Hotjar or Microsoft Clarity, these also add load time. They are worth keeping if your team actually reviews session recordings. If no one has opened Hotjar in four months, you are paying in both subscription fees and milliseconds for nothing.
The ReCharge and Klaviyo Double Load Problem
We see this pattern constantly on subscription brands using ReCharge alongside Klaviyo. Both tools inject scripts, and on stores that have gone through a ReCharge migration or a Klaviyo account consolidation, you often end up with two versions of each script loading simultaneously. One is the old implementation baked into the theme's liquid files. The other is the newer version added through app embeds or a fresh script tag.
For ReCharge specifically, older implementations used direct liquid snippets placed in the theme code. Newer implementations use the app embed. If no one cleaned up the old liquid snippets after switching to the embed version, both are loading. Same goes for Klaviyo. We have seen stores loading the Klaviyo analytics script three times across different placements.
The fix requires someone going into the theme code directly, searching for the script src references, and removing the duplicates manually. This is not something you can do safely without version control. Always duplicate your theme before editing liquid files. Shopify does not auto save previous states when you manually edit code.
What a Clean App Stack Actually Looks Like
A store with clean performance usually has a very deliberate relationship with its app installs. Every app earns its place by producing measurable revenue or operational value. Everything else gets removed completely, not just uninstalled but cleaned up at the code level.
In practice, the well performing stores we audit are running somewhere between 12 and 20 apps total. The stores with serious performance debt are often running 35 to 50 apps, with 10 to 20 that are partially orphaned. The number is not the issue by itself. It is the accumulation of scripts from apps no one is managing.
A useful practice is to do a quarterly app review. Pull up your app list, your app embeds section, and your script tag inventory. Match them up. Remove anything that does not have a clear owner on your team and a clear use case. This takes about an hour and can recover meaningful page speed without touching your theme code at all.
If you are on a high traffic period like Q4, do not make these changes live without testing. Spin up a duplicate theme, make the cleanup changes there, run PageSpeed tests on the duplicate, and then swap it live during a low traffic window.
What Slow App Bloat Does to Conversion
The connection to conversion is direct. A one second delay in load time on a product page has been correlated with conversion drops of 7 percent or more in multiple industry studies. On mobile, where the majority of Shopify traffic now lands, the tolerance for slow loads is even lower.
We see this clearly when we cross reference GA4 data with Hotjar recordings. Pages with high bounce rates on mobile almost always have the worst performance scores. The users are not leaving because the offer is bad. They are leaving because the page never finished loading.
Cleaning up your app embed layer is one of the highest return activities you can do for performance because it costs nothing except time, and the gains are immediate. No redesign required. No new development sprint. Just removal of code that should not be there.
If you want a second set of eyes on your store's technical setup and how it connects to your conversion rate, our audit covers exactly this. We look at performance, theme code, app stack, and user behavior data together to find the fixes that will actually move revenue.