Visual Stability Index 2026: The Next CLS Step
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.
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?
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.
| Aspect | CLS in optimization practice | Visual Stability Index |
|---|---|---|
| Measurement window | focus on load phase, lab sees initial phase only | entire visit incl. scroll and interaction |
| Scroll shifts | not captured in the lab | explicitly evaluated |
| User intent | click/keypress within the 500 ms window exempt | intent-aware across the whole visit |
| Lazy loading | often unnoticed, below the fold | direct checkpoint |
| Sticky elements | rarely in the initial score | snapping headers count |
| Typical data source | lab plus field, field often higher | field 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
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.
/* 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.
- Collect field data per template type -- product detail, category and cart behave differently, and the origin average hides outliers.
- Run a scroll and interaction profile in the lab that scrolls through the page and triggers typical actions instead of loading it only once.
- Attribute each jump to the triggering element and separate it into expected (requested) and unexpected.
- Implement the measure -- dimensions, placeholders, fixed layer, compositor animation -- and measure again across the full visit profile.
- 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
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.
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