Why I Immediately Uninstall Every Shopify Speed App
As a Shopify Select Partner, I immediately uninstall every Shopify speed app on day one of a paid engagement. They promise magic but almost always add bloat and complexity. Real speed improvements come from deep, theme-level optimization, not quick fixes.
Ashraful
Shopify Select Partner

When a new client brings me in for a Shopify speed audit, the first thing I do, before even running a single performance test, is uninstall every 'speed optimization' app they have. Yes, you read that right. Every single one. I'm Ashraful Alam, and after 7+ years building Shopify stores and shipping over 700 projects, I've seen this play out too many times: these apps, designed to make your store faster, almost invariably add bloat, inject more code, and ultimately make things worse.
My approach is fundamentally different. I believe true Shopify speed comes from meticulous, theme-level work – an image budget, deferred third-party scripts, proper font handling, and a ruthless audit of unused apps and code. It’s about building performance in, not bolting it on. So, my Day 1 protocol is simple: rip out the supposed 'speed boosters,' establish a true baseline, and then get to work on what actually moves the needle.
Why Shopify Speed Apps Don't Work (and Often Make Things Worse)
Let's be direct: most Shopify speed apps don't work. Not in the way you think, and certainly not without significant trade-offs. The promise is alluring – install an app, click a button, and watch your Core Web Vitals soar. The reality is usually a Frankenstein's monster of injected JavaScript, extra CSS, and often conflicting scripts that fight each other for resources.
Think about it logically. For an app to 'optimize' your store, it has to inject its own code. It has to scan your pages, manipulate the DOM, or serve assets through its own CDN. All of this requires more code. Even if that code is well-written (and often it isn't), it still adds to your total byte weight, increases parse time, and can introduce layout shifts or render-blocking issues. I've seen this 50+ times on client audits: a store installs a 'lazy load' app, only for it to lazy load images after the browser has already painted the initial content, causing a huge Cumulative Layout Shift (CLS) score. It's an illusion of optimization.
The goal of these apps is to provide a 'quick fix,' but performance isn't a quick fix. It's a fundamental aspect of your store's architecture. Trying to patch over a poor foundation with an app is like trying to fix a leaky roof with a sticker – it might look better for a moment, but the underlying problem persists, and often gets compounded by the 'fix' itself. This is why when clients ask me about 'shopify speed apps not working,' my answer is always the same: they're designed to address symptoms, not the disease.
The Real Culprits: What's Actually Slowing Your Shopify Store?
Once the speed apps are gone and we have a clean slate, the real work begins. And almost every time, the same issues emerge as the true performance bottlenecks. These aren't things an app can fix with a one-click toggle; they require a developer's touch.
Image Bloat: The Elephant in the Room
Massive, unoptimized images are the single biggest performance killer on Shopify. Merchants often upload images straight from a designer or camera, unaware of the huge file sizes. A 5MB product image might look great, but it's crushing your page load times. Shopify handles some image optimization automatically with its CDN, but it's not a magic bullet. You still need to serve appropriately sized images and use modern formats.
Here’s how you ensure images are responsive and efficiently loaded in your theme. This isn't just about lazy loading; it's about serving the right image at the right size.
<img
src="{{ product.featured_image | img_url: 'medium' }}"
srcset="
{{ product.featured_image | img_url: 'small' }} 320w,
{{ product.featured_image | img_url: 'medium' }} 640w,
{{ product.featured_image | img_url: 'large' }} 1024w,
{{ product.featured_image | img_url: 'grande' }} 1280w
"
sizes="(max-width: 768px) 100vw, 50vw"
alt="{{ product.featured_image.alt | escape }}"
loading="lazy"
width="{{ product.featured_image.width }}"
height="{{ product.featured_image.height }}"
>
This Liquid snippet ensures the browser picks the best image size for the user's device and viewport, and loading="lazy" defers offscreen images. But critically, the srcset and sizes attributes empower the browser to make intelligent decisions, rather than forcing a heavy image on everyone.
Third-Party Scripts: The Unseen Drag
Review widgets, chatbots, analytics tools, advertising pixels – these are essential for many stores. But each one injects its own JavaScript and CSS, often without any thought for performance. A single poorly implemented script can hold up your entire page render. I audit every third-party script, determine its necessity, and implement strategies like deferred loading or conditional loading.
Font Loading Strategy: The Invisible Layout Shifter
Custom fonts look great, but if not handled correctly, they can cause a Flash of Unstyled Text (FOUT) or a significant Cumulative Layout Shift (CLS). The key is to tell the browser how to behave while the custom font is loading.
Unused Apps and Theme Bloat
Every app you install, even if uninstalled, can leave behind snippets of code, assets, or settings. Over time, this digital debris accumulates, slowing down your store. A clean, custom theme, or a heavily optimized premium theme, with minimal app reliance, is always faster. I frequently recommend clients consider a custom build for ultimate performance control, but even with off-the-shelf themes, aggressive cleanup is necessary.
My Day 1 Protocol: Rip Them Out, Measure, Then Build
When I take on a new client engagement focused on speed, my first step is always the same, and it’s non-negotiable: I uninstall every single Shopify speed optimization app. No exceptions. This includes image optimizers, lazy loaders, script deferrers, and anything else promising a 'magic bullet.' It sounds counter-intuitive to some clients, but it's the only way to get a true picture of the store's underlying performance.
After the digital detox, I establish a baseline. I use tools like Google PageSpeed Insights, GTmetrix, and WebPageTest to capture metrics across different pages (homepage, product page, collection page). This gives us an honest, unvarnished look at where the store stands without any band-aid solutions. This is the starting point for all our optimization efforts at ezomfy.com/services/speed.
A Client's Story: The Widget Jungle
I once took on a client, a mid-sized fashion retailer, whose Shopify store was suffering terribly. Their PageSpeed scores were in the teens, and conversion rates were plummeting. They had three different 'speed' apps installed, plus a review widget, a chatbot, a currency converter, and a custom product builder. Each one was fighting for resources. On day one, I removed all three speed apps. Immediately, their Lighthouse scores jumped 15-20 points just from the cleanup, and their CLS improved dramatically. The real problem wasn't a lack of optimization; it was too much conflicting optimization. From that cleaner baseline, we then tackled image compression, theme code cleanup, and selective deferral of critical third-party scripts, ultimately achieving consistent scores in the 70s-80s and a noticeable boost in user engagement.
What Most Agencies Get Wrong: Chasing Scores, Not Experience
Here's what nobody talks about enough: many agencies and developers chase Google PageSpeed Insights scores as the holy grail. They'll do whatever it takes to get that green number, even if it means sacrificing real user experience. They might aggressively defer critical CSS or JavaScript, leading to a flash of unstyled content or a janky interactive experience, just to shave off a few milliseconds on a synthetic test.
My focus is always on the real user experience. A perfect 100 on PageSpeed Insights means nothing if users are frustrated by a flickering layout or unresponsive elements. We aim for excellent Core Web Vitals, yes, but we also monitor real user data (RUM) to ensure our optimizations translate into tangible improvements for actual visitors. The synthetic lab data is a guide, but the field data from your actual users is the ultimate truth. If you want to understand your current speed, check out our speed calculator.
The Foundation of True Shopify Speed: Theme-Level Optimization
Once we've stripped away the cruft and established a baseline, the true work begins: deep, theme-level optimization. This is where a developer with a deep understanding of Liquid, JavaScript, and CSS makes a difference. This isn't about installing another app; it's about carefully dissecting and rebuilding your theme's performance.
Deferring Non-Critical JavaScript
Many scripts don't need to load immediately. Think about a chatbot script or a complex animation that appears only when a user scrolls down. Loading these with defer or async attributes allows the browser to render critical content first.
Here's a common pattern to defer non-critical scripts, often placed just before the closing </body> tag:
<script src="path/to/your/non-critical-script.js" defer></script>
<script>
// Inline scripts that can run after DOM is parsed, but before other deferred scripts
document.addEventListener('DOMContentLoaded', function() {
// Your JavaScript code here
console.log('DOM fully loaded and parsed');
});
</script>
The defer attribute tells the browser to execute the script after the HTML document has been parsed. This prevents the script from blocking the initial render of your page.
Critical CSS and Asynchronous Loading
Only the CSS needed for the 'above the fold' content should be render-blocking. The rest can be loaded asynchronously. This is a more advanced technique but incredibly effective for improving First Contentful Paint (FCP).
Font-Display: Swap for Faster Text Rendering
Don't let custom fonts hold up your text. The font-display: swap; CSS property tells the browser to use a fallback font immediately and then swap in your custom font once it's loaded. This prevents invisible text (FOIT) and provides a better user experience.
You implement this within your @font-face declarations in your theme's CSS:
@font-face {
font-family: 'MyCustomFont';
src: url('path/to/mycustomfont.woff2') format('woff2'),
url('path/to/mycustomfont.woff') format('woff');
font-weight: 400;
font-style: normal;
font-display: swap; /* This is the key */
}
This simple declaration makes a profound difference in perceived load speed and eliminates font-related CLS.
Shopify Asset Minification and Concatenation
Shopify automatically minifies Liquid output to some extent, but for CSS and JavaScript, you're responsible. Combining multiple small CSS or JS files into fewer, larger ones (concatenation) reduces HTTP requests, and then minifying those combined files removes unnecessary characters, further reducing file size. This is often part of a custom build process or a well-structured theme setup.
While Shopify's build process handles some of this, for custom themes or advanced setups, a build tool might be used. Here's a conceptual command you might run locally using a tool like uglify-js or cssnano before uploading assets:
# Example: Minify JavaScript
uglifyjs src/js/*.js -o assets/theme.min.js -c -m
# Example: Minify CSS (using cssnano via postcss-cli)
postcss --use cssnano src/css/*.css -d assets/theme.min.css
This isn't something you'd run directly on Shopify's servers, but it demonstrates the type of work that goes into reducing asset sizes before they're ever served to a user. It's about optimizing the source, not just trying to patch the output.
Beyond the Code: A Holistic Approach to Performance
Speed isn't just about code; it's about strategy. My work with clients extends beyond technical fixes to a broader consultation on their app stack, content strategy, and long-term performance goals.
Strategic App Audits and Removal
I conduct thorough app audits, identifying redundant, underperforming, or simply unused apps. Each app should justify its presence with clear ROI that outweighs its performance cost. Sometimes, a custom solution for a specific feature is faster and more efficient than a bloated app.
Content Delivery Network (CDN) and Cache Optimization
Shopify uses a robust CDN by default, which is fantastic. But we ensure that caching headers are properly set where applicable, and that dynamic content is managed efficiently to maximize the benefits of the CDN.
Prioritizing Core Web Vitals
Performance work at ezomfy.com focuses heavily on Google's Core Web Vitals: Largest Contentful Paint (LCP), Cumulative Layout Shift (CLS), and First Input Delay (FID). These metrics directly correlate with user experience and search engine rankings. Our goal isn't just a 'faster' site, but a site that feels fast and is rewarded by search engines.
You can find more detailed guides and thoughts on performance optimization in our resources section.
If your Shopify store is struggling with speed, and you're tired of chasing elusive fixes with apps that only complicate matters, it's time for a different approach. I invite you to book a free 30-minute consultation call with me. We'll discuss your specific challenges, look at your current performance, and outline a clear, actionable path to a faster, more reliable store. No sales pitch, just honest, direct advice from someone who's built a career on making Shopify stores perform.
About the author
Ashraful
Shopify Select Partner, Top Rated Plus on Upwork. 700+ Shopify projects shipped over 7+ years — themes, apps, migrations, speed, Hydrogen. Solo shop, no agency middlemen.
Read the full storyWorking on a Shopify project?
That's what I do every day. Pick whichever feels lower-friction.
More from the blog
Keep reading

How to Hit Lighthouse 95 on Shopify Without Rebuilding Your Theme
Most Shopify stores can achieve 95+ mobile Lighthouse scores by implementing 7 key optimizations on their existing theme, avoiding expensive rebuilds.
Read
Custom Shopify app vs. App Store: when to build vs. buy
Building a custom Shopify app costs $4k–$20k. Installing one from the App Store costs $9–$99/month. Here's the real decision framework.
Read
Custom Shopify theme vs. premium theme: which one should you actually buy?
An honest comparison of building a custom Shopify theme vs. buying a premium one. With real costs, real timelines, and the decision framework we use with clients.
Read