A pattern I keep seeing in speed questions here: a merchant uninstalls three or four apps over a year, the store gets slower, and nothing in the admin explains why. The reason is that uninstalling a Shopify app does not remove the code it added to your theme. Script tags, snippet files, and CSS the app wrote into your theme files stay there, loading on every page view for a service that no longer exists. Shopify cannot remove it for the developer, and many apps never clean up after themselves.
How to check manually (free, 15 minutes):
Online Store → Themes → Edit code.
Open layout/theme.liquid and look for script or link tags referencing app vendors you no longer use (the domain names usually give them away - old review apps, popups, wishlist tools).
Check the snippets/ folder for files named after uninstalled apps, and look for the {% include %} or {% render %} lines that reference them.
Cross-check against Settings → Apps: if the app is not in your installed list but its code is in the theme, it is dead weight.
Before removing anything:
Duplicate your theme first and edit the copy. Always.
Only remove code for apps that are verifiably gone. If you are not sure whether an app is still installed (some rename themselves), leave it - a broken live integration costs more than a few kilobytes.
Remove the reference (the script tag or render line) rather than just the file; an orphaned reference can throw a Liquid error.
Publish the copy only after clicking through your homepage, a product page, cart, and checkout on the preview.
The speed impact varies: a leftover script tag that loads a dead third-party JS file can block rendering for hundreds of milliseconds; an unused snippet that is never rendered costs almost nothing. The render-blocking scripts in theme.liquid are the ones worth hunting.
Disclosure: I built Upright Cleaner, a read-only scanner that automates exactly this check (matches your theme against known app signatures and verifies each app is really gone before flagging anything). The manual steps above work fine without it - the app just saves the digging and watches for new leftovers weekly.
Fair point, and worth making precise. Apps built on the modern theme app extension system have their blocks disabled automatically on uninstall, and admin-only apps never touch theme files at all - neither of those leaves anything behind. The leftover problem is specifically apps that wrote directly into theme files via the old Asset API or had you paste snippets in manually - which covers a lot of older review widgets, popups, currency converters and page builders that were installed before extensions became the norm (and a few that still do it today). So: newer stack, likely nothing to find; a theme that has lived through a few years of app churn, worth the 15-minute look. Thanks for the sharpening - I have edited nothing away, but this thread is better with the distinction spelled out.
This is painfully common, especially after a Magento / BigCommerce / Woo move when people install half the App Store “just in case” then uninstall later.
Uninstall does not mean the theme is clean. Script tags, snippets, and CSS the app wrote into theme.liquid (and friends) keep loading. PageSpeed blames Shopify. It’s usually leftovers.
Your checklist is solid. I’d add:
Duplicate the theme before you delete anything
Search the theme code for old app vendor domains and orphan {% render %} / {% section %} calls
Check Online Store → Themes → Edit code → assets for fat JS/CSS nobody owns
Re-test homepage + PDP on mobile after each removal, not all at once
If anyone reading this just migrated and the new Shopify store “feels slower than the old platform”, start here before you buy another speed app.
Since you clearly deal with this pattern - the scanner I mentioned in the disclosure has a free plan that does exactly the check from this guide automatically (matches the theme against known app signatures, verifies each app is really gone via its store routes, shows exact file paths, read-only). If you have one of those post-migration stores handy, I would genuinely value a practitioner’s verdict on whether the findings match what you dig up manually - candid feedback, good or bad, shapes what I build next. No pressure either way; the manual route in the guide works fine.
Hi there @UprightApps
Yes it is possible that leftover app code affects the performance of a storefront, particularly third party scripts loaded globally via theme.liquid. Duplicating the theme before editing is working with best practice.
I’d also check the theme Custom Liquid sections and app embeds, a few integrations are handled there, rather than in the code editor itself Use the theme preview to test important pages after each cleanup. Do not remove snipets according to the name of the file only as some of them might be used in other parts of the theme.
Good additions, and one of them fixes a real blind spot in my checklist: app code pasted into Custom Liquid sections never appears as a file in the code editor, so a snippets-folder sweep misses it entirely - the theme editor’s section list is the only place it shows up. Worth adding as step 3.5 of the manual check.
Seconding your warning on snippet names, and making it concrete: before removing snippets/vendor-thing.liquid, search the entire theme for ‘vendor-thing’ first - {% render %} and {% include %} calls can live in any template or section file, not just theme.liquid. If the search returns more hits than the one reference you found, trace them before touching anything. Thanks - the thread is better for both points.