Why Shopify stores get slower over time

When you first install a clean Shopify 2.0 theme (like Dawn or Sense), it often scores 85+ on mobile PageSpeed tests. Six months later, the score drops below 35.

This speed degradation rarely comes from Shopify's servers—Shopify's edge CDN infrastructure is exceptionally fast. The culprit is almost always third-party app scripts injected into the document head, oversized product photography, and nested Liquid loops that block the browser from rendering the page.

Step 1: Audit and purge ghost app scripts

When you click "Delete App" in your Shopify admin, many legacy apps leave behind orphaned tracking tags, CSS stylesheets, and external JavaScript calls inside theme.liquid.

Open your theme code editor and inspect layout/theme.liquid. Search for tags referencing apps you no longer use (such as inactive currency converters, deleted popup builders, or abandoned loyalty tools). Removing these orphaned scripts often recovers 1.5 to 3 seconds of blocking script execution.

Step 2: Optimize hero images and stop lazy-loading LCP

A common developer mistake on Shopify is applying loading="lazy" to every image on the page, including the top hero banner.

Google's Largest Contentful Paint (LCP) measures when the largest above-the-fold visual finishes rendering. If your hero image is lazy-loaded, the browser delays fetching it until scripts evaluate, directly adding 1 to 2 seconds of perceived latency.

  • Set loading="eager" and fetchpriority="high" on your primary hero image.
  • Use Shopify's native image filter: {{ section.settings.image | image_url: width: 1400 }}.
  • Apply loading="lazy" only to below-the-fold product grids, reviews, and footer logos.

Step 3: Fix expensive Liquid loops in collection templates

Liquid runs server-side on Shopify before transmitting HTML to the shopper. When themes nest loops—such as looping through all collection products and then looping through every product's variants to check tag availability—server response time (TTFB) spikes.

Refactor collection grids to paginate cleanly (maximum 24 products per page) and avoid querying entire store inventories in client-facing Liquid loops.

Action plan: Quick wins vs deep technical fixes

Optimization actionDifficultyTypical speed impact
Remove unused apps and leftover theme codeLow (1–2 hours)15–30 PageSpeed points
Set hero banner to eager loading + fetchpriorityLow (30 minutes)0.8s – 1.5s LCP reduction
Delay third-party chat and review scriptsMedium (2–4 hours)Significant TBT / INP win
Custom Liquid theme refactoringHigh (Developer required)Long-term architectural stability