Core Web Vitals · July 29, 2026

Shopify Avoid Large Layout Shifts: Find and Fix Moving Elements

The avoid large layout shifts Shopify warning means shoppers see content move while the page loads. Run a free Shopify speed test, use Thunder to improve common Core Web Vitals issues, then use the checks below to fix theme and app elements that still jump.

Quick Fix with Thunder

Thunder handles many speed and Core Web Vitals optimizations automatically, which gives you a stronger layout stability baseline before digging into custom theme code. That matters because Shopify layout shifts often come from a stack of small issues, not one obvious broken section.

Why Large Layout Shifts Happen on Shopify

Google's CLS guidance defines layout shift as visible content moving from one rendered frame to the next. Lighthouse's "Avoid large layout shifts" diagnostic lists affected elements, but those elements are not always the root cause. If a discount bar appears above the product title, Lighthouse may report the product title as shifted even though the bar caused the movement.

Shopify stores are vulnerable because many parts of the page are dynamic: announcement bars, app embeds, consent banners, review stars, product media, variant pickers, sticky headers, cart drawers, collection filters, recommendation blocks, and fonts. Each one can load after the first paint and push content.

If your store is failing the actual Core Web Vital, start with the deeper Shopify CLS fix guide. This article focuses on the PageSpeed diagnostic and the practical theme patterns that usually cause it.

Manual Step-by-Step: Fix Avoid Large Layout Shifts on Shopify

1. Identify the shifted element and the cause above it

In PageSpeed Insights, expand the diagnostic and note the shifted elements. Then open Chrome DevTools, record a Performance trace on mobile throttling, and watch the Layout Shift track. Look above the shifted element for late content, resized media, injected widgets, or font changes.

Test the templates that matter commercially: homepage, best-selling product pages, top collections, and landing pages. Pair this with Shopify's Web Performance Dashboard so you do not optimize one lab run while field data keeps failing.

2. Reserve image and video space

Missing image dimensions are the most common fix. Use explicit width and height for raw images, or reserve an aspect-ratio slot around dynamic media. This protects product grids, lookbooks, homepage tiles, and article thumbnails.

.media-slot {
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: #f6f6f6;
}

.media-slot img,
.media-slot video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

If PageSpeed specifically reports image dimensions, use the Shopify image width and height guide.

3. Give app widgets a placeholder before they load

Review stars, loyalty blocks, recommendations, and chat launchers often load after the theme has painted. If the widget appears in the first viewport, reserve the space in your theme so content below it does not jump.

<div class="reviews-summary-slot" data-reviews-summary>
  <!-- Review app injects stars here -->
</div>

.reviews-summary-slot {
  min-height: 32px;
  display: flex;
  align-items: center;
}

For app-heavy stores, read Shopify apps that slow down stores and fixing app scripts slowing down Shopify.

4. Stabilize announcement, promo, and consent bars

A top bar that appears after JavaScript runs can push the entire page down. Render the slot server-side or reserve its height from the first paint. Do not inject it above the header after the page is already visible.

.announcement-slot {
  min-height: 40px;
}

@media (max-width: 749px) {
  .announcement-slot {
    min-height: 56px;
  }
}

5. Fix font swaps that resize headings

Fonts can create layout shift when the fallback text takes different space from the final brand font. Use font-display: swap, reduce font variants, and tune fallback metrics when needed. The font-display swap guide and reduce font load guide cover this in more depth.

6. Animate with transform, not layout properties

Avoid animating top, left, height, margin, or padding for entrance effects. Those properties recalculate layout. Use transform and opacity when motion is needed.

.promo-card {
  transform: translateY(12px);
  opacity: 0;
  transition: transform 180ms ease, opacity 180ms ease;
}

.promo-card.is-visible {
  transform: translateY(0);
  opacity: 1;
}

Manual Fix vs Thunder Fix

Shift source Manual fix Thunder fix
Images resize after loadAdd dimensions or aspect-ratio containers.Improves common image and Core Web Vitals behavior automatically.
Apps inject late contentReserve placeholder space or delay below-the-fold widgets.Optimizes app loading patterns and reduces first-load pressure.
Fonts resize textUse font-display swap and reduce font variants.Helps with storefront font-loading pressure as part of automated optimization.
Animated sections move layoutUse transform and opacity instead of layout properties.Provides a faster baseline; custom animation code may still need a developer.

How to Confirm Large Layout Shifts Are Fixed

Retest with PageSpeed Insights and the free Shopify speed test. The large layout shift diagnostic should shrink, and CLS should trend toward 0.1 or below. Also watch the mobile page load with throttling. Your eyes will catch shifts that a single lab score can hide.

If layout shift is only one problem, continue with the complete Shopify speed optimization guide, LCP optimization, and Shopify INP fixes. For hands-on work, compare professional speed optimization with no-code automation.

FAQ

What does avoid large layout shifts mean on Shopify?

It means visible elements moved during page load. Lighthouse reports the elements that shifted, but the cause may be something above them, such as a late banner, image, font swap, app widget, announcement bar, or injected review block.

Is avoid large layout shifts the same as CLS?

It is a Lighthouse diagnostic that helps explain CLS. CLS is the Core Web Vital score. The diagnostic shows which elements moved so you can find the source of the shift.

What is a good CLS score for Shopify?

A good CLS score is 0.1 or less for at least 75% of page visits. Product pages, collection filters, announcement bars, and app widgets are common Shopify sources of higher CLS.

Can Thunder fix large layout shifts?

Thunder can improve common Core Web Vitals and resource-loading causes of layout instability. Theme-specific markup, custom animations, and app widgets may still need manual space reservation or settings changes.

How do I find what is causing layout shift?

Use PageSpeed Insights, Chrome DevTools Performance recordings, and the Layout Shift track. Watch the mobile load slowly and inspect elements above the shifted item, not only the item Lighthouse lists.