Zum Inhalt springen
Core Web Vitals specialists
Performance

Visual Stability Index 2026: The Next CLS Step

14 min read
Visual Stability IndexVSICLSCore Web VitalsLayout Shift

Anyone who invested in Cumulative Layout Shift (CLS) over the past years knows the playbook: fixed image dimensions, placeholders for ads, metrically matched fallback fonts -- and the value calms down during page load. But in 2026 the yardstick shifts. With the Visual Stability Index (VSI) as part of what the industry discusses as Core Web Vitals 2.0, Google measures layout stability no longer only during loading but across the entire visit -- including scrolling, interactions and late-loading content (Source: Core Web Vitals 2026 industry reports). In May 2026, 81.3 percent (Chrome UX Report May 2026) of origins reach a good CLS value, yet only 55.9 percent (Chrome UX Report May 2026) pass all three Core Web Vitals together. This article explains why classic CLS optimization will no longer be enough, where layout jumps occur after loading and how a well-considered Core Web Vitals optimization stabilises websites for the future now.

CLS vs. Visual Stability Index - what gets measuredCLS - the load phase onlyPage render0 to ~5 sscroll, interaction and late loading stay unaccounted forblind spot after loadVisual Stability Index - the whole visitLoadingimages, fontsScrollinglazy contentInteractionclick, filterDwell timebanners, adsintentional movements are recognised - unexpected jumps count across the whole visitintent-aware scoring instead of load phase onlyField data May 2026 (CrUX)81.3%good CLSof origins55.9%pass all threeCore Web VitalsWhat VSI captures on topshifts during scroll and lazy loadinglate-injected banners and sticky elementsmovement during interaction

From the Load Phase to the Whole Visit

CLS was designed as a metric for the unexpected movement of visible elements. In field measurement, CLS already captures the entire page lifetime, but in practice -- and especially in lab tests -- the load phase dominates the picture. A headless browser loads the page once, without scrolling, without a mouse, without interaction, and therefore sees only the shifts of the initial phase (Source: DebugBear). This is exactly where the Visual Stability Index comes in: it evaluates visual stability across the complete visit and thereby captures shifts that CLS systematically underestimates in common optimization practice -- such as during scrolling or with late-loading content (Source: Core Web Vitals 2026 industry reports).

The decisive conceptual difference is intent awareness. VSI is considered intent-aware: movements that users trigger themselves and expect -- an expanding accordion, a filter that re-sorts a list, a carousel that advances on click -- are generally not scored negatively. What gets penalised are unexpected shifts, such as late banners, delayed ads, snapping sticky elements or dynamically injected content (Source: Core Web Vitals 2026 industry reports). This moves optimization away from the pure load phase toward the question: does the layout stay calm even while the user is using it?

Important for context: VSI is currently considered an emerging signal, not a primary ranking factor like LCP, INP or CLS. Industry reports assume that Google is already collecting data through the Chrome User Experience Report and that VSI, following the pattern of earlier Core Web Vitals rollouts, could become a primary factor within 12 to 18 months (Source: Core Web Vitals 2026 industry reports). This lead time is the real lever -- those who stabilise now gather clean field data before the factor goes live.

What Does Intent-Aware Mean?

Unlike the classic 500-millisecond window of CLS, which only accepts click and keypress as user intent (Source: Google web.dev), VSI evaluates movements in context across the whole visit. If content opens after a click, that counts as requested. If the same content slides into the viewport without the user doing anything, it counts as unexpected instability.

Why Classic CLS Optimization Is No Longer Enough

Previous CLS practice concentrates on the visible area during initial render: images above the fold get dimensions, the hero area is stabilised, web fonts are preloaded. That is correct and remains the basis. But as soon as the user scrolls, an area begins that lab tests rarely enter. Continuous interactions such as scrolling, dragging or zooming explicitly do not count as recent input in the sense of the recent-input window -- every shift during these gestures therefore counts as unexpected, even if it occurs within 500 milliseconds (Source: Google web.dev).

This creates a blind spot: a page can show a clean CLS value in the Lighthouse lab and still score worse in field data because real users scroll and trigger shifts from late-loading images, ads or embeds (Source: DebugBear). Field data is typically higher than lab values because it covers exactly these visit phases. The Visual Stability Index makes this difference the yardstick -- and so the previously tolerated area after loading becomes the assessment-relevant core.

AspectCLS in optimization practiceVisual Stability Index
Measurement windowfocus on load phase, lab sees initial phase onlyentire visit incl. scroll and interaction
Scroll shiftsnot captured in the labexplicitly evaluated
User intentclick/keypress within the 500 ms window exemptintent-aware across the whole visit
Lazy loadingoften unnoticed, below the folddirect checkpoint
Sticky elementsrarely in the initial scoresnapping headers count
Typical data sourcelab plus field, field often higherfield across the whole visit

The good news: anyone who has already worked cleanly on CLS does not start from zero. The principles -- reserve space, run movements on the compositor layer, avoid late injections -- stay the same. They only need to be extended consistently to the area after loading. An accompanying performance analysis with field and lab data shows which templates still jump during scrolling and interaction.

Layout Jumps During Scrolling and Lazy Loading

Lazy loading is one of the most recommended performance techniques because it reduces the initial load weight. In practice, however, it is often misused and then creates exactly the jumps VSI captures: content appears only on scroll, without space reserved for images or embeds, and pushes the content below it downward (Source: DebugBear). The result is a janky experience during scrolling -- invisible in classic lab CLS, fully effective in the Visual Stability Index.

  • Images below the fold with loading="lazy" still need width/height or aspect-ratio so the browser knows the space upfront -- otherwise the layout jumps on scroll.
  • Avoid lazy loading hero or LCP images; prioritise them with fetchpriority="high"; a delayed hero image typically worsens both LCP and stability (Source: web.dev).
  • Late-loading lists and infinite scroll need skeleton placeholders at the expected height so arriving content triggers no jump.
  • Embeds and iframes (maps, videos, widgets) get a container with a fixed aspect-ratio before they initialise on scroll.
  • Ad slots receive a fixed min-height at the realistically expected size so they do not grow further when filled.

The common denominator is the same as for initial CLS, just in a new place: reserve space before content arrives. The difference lies in the test procedure. A static lab test that loads the page only once does not surface these jumps -- it takes a scroll profile that runs through the page like a real user. How to load critical resources early and non-critical ones late without losing stability is explored in our article on fetchpriority and priority hints for LCP.

Sticky Headers as an Underrated VSI Trap

Sticky navigations and snapping search or filter bars often snap in with a delay during scroll and change the available height. If the height is not defined upfront via CSS, the content jumps at the moment of snapping. Because this happens during scrolling, it slips through the classic CLS lab but is captured by the Visual Stability Index.

Jumps During Interaction

The second major area that VSI upgrades compared to classic CLS practice is interaction. The subtlety here lies in intent awareness. If a user opens an accordion and the following content moves down, that is a requested movement and usually unproblematic. But if the same click triggers an unplanned shift somewhere else entirely -- for example because a filter rebuilds not only the list but also the page layout -- it can be scored as unexpected (Source: Core Web Vitals 2026 industry reports).

Filters and Sorting

Place result lists in a container with a reserved minimum height so re-sorting only swaps the content, not the surrounding layout.

Tabs and Accordions

Animate expanding panels with reserved space or via transform instead of recalculating the document flow through height and margin.

Asynchronous Actions

Add-to-cart, reviews or load-more buttons should show state changes in place rather than pushing the layout open with injected notices.

Technically, the guiding rule remains: implement movements via transform: translate() and opacity, because these properties run on the compositor layer and trigger no reflow. Changes to width, height, top or margin force the browser into another layout pass and shift surrounding elements. Since VSI evaluates interaction phases too, this rule -- previously mainly important for perception -- now becomes relevant for the stability metric as well. How compute-heavy responses additionally burden interactivity is examined in the context of Core Web Vitals 2026.

stable-interaction.css
/* Unstable: triggers reflow and a jump when expanding */
.panel { transition: height 0.3s, margin-top 0.3s; }

/* Stable: runs on the compositor layer, no layout shift */
.panel {
  transition: transform 0.3s, opacity 0.3s;
  will-change: transform;
}

/* Result list keeps its height while filtering */
.results { min-height: 480px; }

/* Lazy image below the fold reserves space */
.card img { aspect-ratio: 4 / 3; width: 100%; height: auto; }

Measuring VSI in Practice

Because VSI evaluates the whole visit, a one-off lab test is not enough. What matters is a measurement approach that runs through the page like a real user: load, scroll, interact -- and log every jump along the way. Field data from the Chrome User Experience Report reflects the real distribution and updates over a rolling 28-day window (Source: DebugBear), so measures become fully visible only after a few weeks. The decisive benchmark remains the 75th percentile of real users (Source: Google web.dev) -- a value that looks clean in the lab says little if a quarter of users experience stronger jumps.

  1. Collect field data per template type -- product detail, category and cart behave differently, and the origin average hides outliers.
  2. Run a scroll and interaction profile in the lab that scrolls through the page and triggers typical actions instead of loading it only once.
  3. Attribute each jump to the triggering element and separate it into expected (requested) and unexpected.
  4. Implement the measure -- dimensions, placeholders, fixed layer, compositor animation -- and measure again across the full visit profile.
  5. Add a stability ceiling as a performance budget to the pipeline so new plugins and scripts cannot introduce regressions.

Anyone who takes field data seriously combines it with insights from real-user monitoring and the distributions from CrUX. The difference between the two data sources and how to derive robust performance budgets from them is explored in our article on RUM versus CrUX and performance budgets.

Stability Is a Process, Not a One-Off Fix

Every new plugin, every theme update and every marketing script can introduce fresh jumps -- and with VSI also those that appear only on scroll or interaction. A stability budget integrated into the build catches regressions before they become visible across the 28-day field window and protects the values achieved with effort for the long term.

Stable Layouts in Shopware Storefronts

In a Shopware storefront on an open-source basis, the critical spots move downward and into interaction with VSI. Product image components still need width and height from the media data, but in addition galleries, cross-selling sliders and review blocks that load via AJAX on scroll come into focus. They belong in reserved areas with skeleton placeholders at the expected height. Filters on category pages should swap only the result list, not the surrounding layout, and the list keeps its minimum height while loading.

  • Product image component writes width/height from the media data, galleries use a fixed aspect-ratio.
  • Lazy-loaded images below the fold keep reserved space, the hero image stays eager with fetchpriority high.
  • AJAX blocks (reviews, cross-selling) load into reserved areas with skeleton placeholders.
  • Filters and sorting swap only the result list, which keeps its minimum height.
  • Sticky headers and filter bars get a predefined height so snapping triggers no jump.
  • Consent and marketing scripts sit in fixed layers instead of the document flow.
  • A stability budget in the build prevents new extensions from introducing scroll or interaction jumps.

The advantage of this template-centric approach remains unchanged: once a component is built cleanly, it stays stable across all products, categories and landing pages -- now also during scrolling and interaction. This work belongs in the context of a comprehensive Shopware performance service that considers stability, loading time and interactivity together instead of pulling in isolated single fixes.

Layout stability does not end when the page has loaded. Every prevented misclick on a jumping button -- even deep in the visit -- is an order that was not abandoned.

Principle from performance optimization

Early Optimization as a Ranking and Conversion Edge

The economic lever lies in timing. As long as VSI is collecting data as an emerging signal, a website has time to build clean values across the 28-day field window before the factor goes live. Those who wait until VSI is officially ranking-relevant only start collecting data then -- and then compete with rivals who have already stabilised their field data. That layout stability affects business results is well documented: currently only around 47 percent (Core Web Vitals 2026 industry reports) of websites reach good values across all three Core Web Vitals -- a clear headroom for differentiation.

Secure a Ranking Edge

Build clean field data across the 28-day window before VSI becomes a primary factor -- instead of reacting only after it goes live.

Protect Conversion

Stable layouts during scrolling and interaction prevent misclicks and abandoned orders deep in the visit, not only during initial render.

Catch Regressions

A stability budget in the pipeline protects achieved values against new plugins, themes and marketing scripts -- including in scroll and interaction paths.

In practice this means: extend the proven CLS discipline consistently across the whole visit, measure with a scroll and interaction profile and check the results against the 75th percentile of real users. Anyone who anchors these steps as part of a continuous frontend optimization treats visual stability not as a cosmetic detail but as a plannable lever on visibility and revenue -- long before the competition catches up.

Sources and Studies

This article is based on data from: Chrome User Experience Report (CrUX) May 2026 (pass rates LCP, INP, CLS, overall), Google web.dev (CLS documentation, recent-input window, session window, 75th percentile), DebugBear (lab vs. field differences, lazy loading, 28-day field window), Core Web Vitals 2026 industry reports (Visual Stability Index, intent-aware scoring, rollout path). Thresholds and recommendations reflect the status of June 2026. At the time of writing, VSI is considered an emerging, not yet primary, ranking signal.