Store owners compress their images, watch the score barely move, and conclude the platform is the problem. The images were rarely the problem.
Installed apps are the single biggest cause of Core Web Vitals failure on Shopify, and the cost is not obvious from the admin, because an app that runs on one page usually loads its JavaScript on every page.

What Are the Thresholds?
LCP under 2.5 seconds, INP under 200 milliseconds, CLS under 0.1.
INP is the harder and more representative bar for a store, because it measures responsiveness during real interaction rather than initial paint, and it is the vital most affected by heavy JavaScript.

How Much Does Each App Cost?
A new Shopify app adds roughly 50KB to 150KB of JavaScript to every page load, on average. That is an average rather than a rule, and the damage depends on how the app is implemented on your theme.
The pattern that causes the worst outcomes:
- Site-wide loading for an app that is only used on one template
- Review, chat, popup and upsell apps, which are the usual heavyweights
- Apps left installed after they stopped being used, still injecting code
- Overlapping apps doing the same job, where one could be removed entirely
- Apps that duplicate structured data the theme already outputs
Does the Theme Matter?
Yes, and drag-and-drop page builders are measurably slower. Builders have been found to run 22% to 37% slower than native-code equivalents, while builders that write native Liquid and CSS into the theme add no runtime cost at all.
Where theme weight comes from:
- Render-blocking CSS and JavaScript in the head, which is the usual cause of late first paint
- Excessive Liquid render calls, which slow server response
- Sections and blocks loaded on templates that never display them
- Fonts and icon sets loaded in full when a subset would do

What Should You Fix First?
Reduce what loads before compressing what remains. The order matters, because compression on a page carrying twelve apps changes very little.
The sequence:
- App audit: remove what is unused, restrict what is template-specific
- Render-blocking resources: defer non-critical scripts, inline critical CSS for above-the-fold content
- Template work on collection and product pages specifically, since that is where buyers land
- Images in modern formats at the sizes actually displayed
- Layout stability, especially around the add-to-cart area where a shift costs an order
Where Is the Platform Ceiling?
Shopify controls the hosting layer, so some server-side gains available on self-hosted stores simply are not reachable.
Being explicit about this matters, because agencies promise scores they cannot deliver. What you can control is what the page loads, how it is ordered and how stable it is. What you cannot control is the server, the CDN configuration beyond Shopify’s own, and some platform-level response time.
Shopify does handle several fundamentals correctly without help: sitemaps generated and updated in real time, HTTPS enforced, and robots.txt generated automatically.
Last Thoughts on Shopify Performance
The fix is subtraction, and it is unglamorous. Remove apps that are not earning their weight, restrict the rest to the templates that need them, then deal with render blocking and images.
Measure INP rather than only LCP, because it is the harder bar and the one heavy JavaScript breaks. The Shopify SEO service includes the app audit, and Shopify collection pages that rank covers the templates where the work matters most.
Key Takeaways
- Apps are the single biggest cause of Core Web Vitals failure on Shopify, not image size.
- A new app adds roughly 50KB to 150KB of JavaScript to every page load on average.
- INP is the harder bar and the vital most affected by heavy JavaScript.
- Drag-and-drop page builders run 22% to 37% slower than native-code equivalents.
- Reduce what loads before compressing what remains. Compression on a page carrying twelve apps changes little.
- Shopify controls hosting, so some server-side gains are simply not reachable. Say so rather than promising them.
Frequently Asked Questions (FAQs)
Why is my Shopify store slow despite compressing images?
Because the weight is usually app JavaScript rather than imagery. Apps are the single biggest cause of Core Web Vitals failure on Shopify.
How much does a Shopify app cost in performance?
On average roughly 50KB to 150KB of JavaScript per page load, though the real cost depends on how the app is implemented on your theme.
What are the Core Web Vitals thresholds?
LCP under 2.5 seconds, INP under 200 milliseconds, and CLS under 0.1.
Do page builders slow Shopify down?
Drag-and-drop builders have been found to run 22% to 37% slower. Builders that write native Liquid and CSS add no runtime cost.
Can every Shopify store pass Core Web Vitals?
Not always. Shopify controls hosting, so some server-side gains available elsewhere are not reachable. Be wary of anyone guaranteeing a score.
Want More Sales From Search?
Get a free, no-obligation store audit and a clear plan to grow your revenue.