Shopify notes

Performance

Shopify Performance Optimization

How to diagnose storefront performance and improve the parts that affect loading, stability, and interaction.

By Mo Oumha10 min read
Shopify storefront performance optimization illustration

Performance work is most useful when it begins with evidence. A lower Lighthouse score can come from a slow hero image, expensive Liquid, third-party scripts, layout shifts, or a combination of all four.

The goal is not to chase a perfect score. It is to find the bottleneck customers actually experience, fix it without breaking the storefront, and prevent the same problem from returning.

Key takeaways

  • Use field data to choose the problem
  • Separate server-rendering issues from browser work
  • Measure again after every meaningful change

01

Establish a useful baseline

Start with field data when the store has enough traffic, then use controlled lab tests to reproduce the issue. Review performance by page type and device because a fast homepage can hide a slow product or collection template.

  • Record LCP, CLS, INP, and TTFB
  • Test representative product and collection pages
  • Note recent theme publishes and app changes

02

Fix the largest visible element

Largest Contentful Paint is often a hero or product image. Give that asset explicit dimensions, an appropriate responsive size, and high fetch priority when it appears in the initial viewport. Do not hide it behind a loading animation.

Practical note: Images below the fold can be lazy-loaded. The main above-the-fold image generally should not be.

03

Reduce Liquid and rendering work

Slow server rendering delays everything that follows. Look for deeply nested loops, repeated metafield access, and large product or variant iterations that produce more data than the page uses.

  • Move repeated lookups outside loops
  • Render only the products and variants needed
  • Use Theme Inspector when TTFB points to Liquid

04

Protect the main thread

Theme scripts, analytics, and apps all compete for browser time. Load only what a page needs, use event delegation where appropriate, and avoid rebuilding interactions that HTML and CSS can already handle.

  • Defer non-critical scripts
  • Load section-specific code with the section
  • Review third-party impact before adding another app

05

Create a performance release habit

A one-time cleanup will fade as campaigns, apps, and theme changes accumulate. Add a small performance check to release reviews and compare both lab and field data after deployment.

Mo Oumha

Written by Mo Oumha

Shopify and full-stack developer working on themes, custom storefront features, integrations, and performance.

About Mo ↗

Need help applying this to a store?

Bring the Shopify problem. We'll work through the next step.

Discuss your store