You’ve uninstalled three or four apps over the years. The review widget you switched out. The popup you deleted after a month. The upsell tool that never quite worked. The apps are gone from your admin panel — but the code they injected into your theme is still there, loading on every page, slowing every customer who lands on your store.
You can’t see it. Your customers can’t see it. Shopify doesn’t flag it. And every new app you install adds another layer on top.
This post walks you through how to find that dead code, how to remove it safely without breaking your storefront, and how to decide between doing it by hand or running a scan that does it for you. If you’re not sure whether you even have the problem, start with these five signs your theme has dead app code.
Disclosure: ThemeSweep is a tool built by JMS Dev Lab, who publish this blog. I’ll mention it near the end, but you don’t need it to follow the steps below.
When you install a Shopify app that touches your storefront — a popup, a reviews widget, an upsell tool, a currency converter — most of them inject code directly into your theme files. A Liquid snippet here. A JavaScript include there. Sometimes a stylesheet, sometimes a tracking pixel.
When you uninstall the app, Shopify removes its permissions and stops billing you. What it doesn’t do is reach into your theme and rip out the code that app added. That part stays — quietly loading on every page view, calling out to a CDN that may no longer serve anything useful, taking up bytes in your render budget. For a fuller picture of the performance cost, see the hidden cost of uninstalling Shopify apps.
Multiply that across the four or five apps you’ve tried and discarded over the past two years, and you’re looking at a theme carrying a small graveyard.
If you’re comfortable poking around the theme code editor (Online Store → Themes → Edit code), here are the patterns to scan for:
snippets/ folder often follow the pattern [appname]-something.liquid — for example, pagefly-script.liquid or loox-reviews.liquid. If you’ve uninstalled the app, the snippet is likely orphaned.theme.liquid. Open layout/theme.liquid and search for <script src="https://cdn.. Each of those makes a request to an external server on every page. If any point to a domain you don’t recognise, it’s likely from an app you no longer run.assets/, look for .js and .css files with app-name prefixes. Search the codebase for the filename — if nothing references it, it’s dead.{% render 'old-app-name' %} tag referencing a snippet you’ve already deleted will throw silent errors and add render overhead.Before you touch anything, duplicate your live theme.
Themes → click the three-dot menu on your live theme → Duplicate. That’s your fallback. If something breaks, you republish the duplicate and you’re back where you started in under thirty seconds.
The risk with manual removal isn’t that you’ll crash your store the moment you delete the wrong snippet — it’s that the breakage is often invisible. A removed {% render %} tag might cause a single section to disappear. A deleted CSS file might leave the cart drawer unstyled on mobile only. You won’t notice until a customer does.
So: duplicate first. Make one change at a time. Save. Reload your live store in an incognito window. Check homepage, product page, collection page, cart. If everything looks right, move on to the next removal. If you want to validate your speed improvement as you go, a Shopify theme speed test between each session gives you a clear before-and-after.
If you’re not comfortable doing this — and there’s nothing wrong with not being comfortable — skip to the next section.
The problem with most theme audit tools is that they flag any code that “looks app-like” without checking whether the app is still installed. So you get a list of warnings about your active Klaviyo integration, your live shipping calculator, and the popup you actually use — alongside the genuinely dead code from apps you uninstalled. False positives bury the signal.
The approach that works is the opposite: cross-reference every flagged snippet against the list of apps you currently have installed. If the code belongs to an app you’re still running, leave it alone. If the app is gone, flag the code for removal.
That’s the gap ThemeSweep was built to fill. It pulls your installed-apps list from your Shopify admin, scans your theme for known app-injection patterns, and only reports code that’s genuinely orphaned. You get a list you can act on, not a list of guesses.
Whether you go manual or automated, do one of these things:
A clean theme loads faster, scores better on Core Web Vitals, and gives the apps you actually use room to breathe.
Try ThemeSweep → themesweep.com
No. Uninstalling removes the app from your admin and stops billing, but the code it injected into your theme files stays behind. You need to remove it manually or use a dedicated scanning tool.
Yes, as long as you duplicate your theme first. Create the backup, make one deletion, test the storefront, then move on. Never delete multiple files in one go without testing in between.
Render-blocking scripts from uninstalled apps measurably slow mobile load times. Accumulate several of them and the impact compounds — Google’s PageSpeed tooling will flag the requests even when the app is long gone.
Related reading: 5 Signs of Dead App Code · Hidden Cost of Uninstalling Shopify Apps · Speed Test Your Shopify Theme · ThemeSweep.