![Federico Iglesias](https://web.dev/images/authors/federicoiglesias.jpg) Federico Iglesias [LinkedIn](https://www.linkedin.com/in/federico-iglesias-47770346) ![Jesus Biaggioni](https://web.dev/images/authors/jesusbiaggioni.jpg) Jesus Biaggioni [LinkedIn](https://www.linkedin.com/in/jesusbiaggioni) ![Kaio Graco Cardamone](https://web.dev/images/authors/kaiocardamone.jpg) Kaio Graco Cardamone [LinkedIn](https://www.linkedin.com/in/kaiocardamone) ![Lucas Demarchi](https://web.dev/images/authors/lucasdemarchi.jpg) Lucas Demarchi [LinkedIn](https://www.linkedin.com/in/lucasrdemarchi) ![Mari Viana](https://web.dev/images/authors/mviana.png) Mari Viana [LinkedIn](https://www.linkedin.com/in/marianasviana)

<br />


Published: June 24, 2026

<br />

Nuvemshop (known as Tiendanube in Spanish-speaking Latin America) is the leading
ecommerce platform in the region, powering over 180,000 online stores. With
merchants customizing their storefronts through multiple themes and dynamic
content arrangements, ensuring fast page loads across this diversity presents
unique technical challenges.

- **[Largest Contentful Paint (LCP)](https://web.dev/articles/lcp.md.txt) health improved 68%**, from 57% to 96% in one year, reflecting a major shift in how stores render content at the top of the viewport for real users.
- **[Core Web Vitals](https://web.dev/articles/vitals.md.txt) pass rate jumped from 48% to 72%**, meaning nearly 3 out of 4 stores now meet Google's baseline performance threshold.
- **Shopping engagement improved measurably:** Analyzing the same cohort of Brazilian stores active in Jan 2025 and Jan 2026, mobile visitors from Google organic search showed:
  - 8.9% increase in conversion rate (session-to-paid-order)
  - 8.4% increase in cart engagement rate (session-to-cart)
- **Mobile drove the biggest gains**, consistent with where LCP improvements were most significant.

These results align with [Deloitte research commissioned by Google (over 30
million sessions across 37
brands)](https://www.deloitte.com/ie/en/services/consulting/research/milliseconds-make-millions.html),
which found that a 0.1s improvement in load speed can increase retail conversion
rates by 8.4%, validating the direction of our investments.

## The Challenge: LCP detection in dynamic ecommerce layouts

At the start of 2025, only 48% of our stores passed Core Web Vitals thresholds,
and 57% had healthy LCP scores. Our initial hypothesis was image weight or
server latency. We were wrong.

Through PageSpeed Insights analysis across thousands of stores, we discovered
that our platform allows merchants to arrange homepage sections dynamically:
carousels, banners, product grids, and custom modules can appear in any order.

This flexibility introduced an unforeseen issue: the right element was not
always being identified as LCP. In stores with carousels, which represented 85%
of our storefronts, a banner further down in the viewport was sometimes being
marked as LCP instead of the first carousel image, depending on how the page
rendered across different screens and devices. This meant our optimization
efforts weren't having the intended effect: We were optimizing elements that
weren't actually LCP elements.

Unlike typical SaaS platforms, we couldn't just fix the homepage. We needed a
solution that worked across every possible theme configuration, section
arrangement, and merchant customization, without breaking existing stores or
limiting creative freedom.

## How dynamic layouts affect LCP element selection

Through PageSpeed Insights analysis and real-user monitoring, we discovered that
CSS transitions on carousels and banners were delayed when elements became
visible to the browser's LCP detection algorithm. Even though users perceived
the carousel as loading first, the browser sometimes marked a banner in the
second section as the LCP element---because that element's visibility wasn't
delayed by transition effects.

We identified three root causes:

- CSS transitions were delayed when elements were considered visible, pushing LCP detection to the wrong frame.
- Lazy loading was applied to images at the top of the viewport that needed to load immediately.
- Missing priority signals meant the most important images weren't being loaded first.

We also found that a significant portion of LCP measurements came from category
and product pages, not just homepages, meaning our fixes needed to apply
consistently across all high-traffic page types.

## Implementation: fixing the three root causes at scale

With the causes identified, the fixes were straightforward. We applied them
consistently across all core themes and page types, but each required careful
scoping to avoid creating new problems.

- **Removed CSS transitions for first-position sections.** Sections that appear first on the page now render immediately, ensuring the browser detects them as LCP candidates without artificial delays.
- **Removed lazy loading from images at the top of the viewport.** For images
  in the first section, we conditionally remove `loading="lazy"` to eliminate
  resource load delay. We were careful to scope this only to the first image
  in first-position sections:

      <!-- Before -->
      <img src="slide-1.webp" loading="lazy" alt="Featured product">
      <!-- After -->
      <img src="slide-1.webp" alt="Featured product">

- **Added explicit priority signals.** By adding `fetchpriority="high"`, we
  tell the browser's preload scanner that the LCP image is a top priority
  resource, letting it be discovered and downloaded sooner, before layout and
  rendering finish. We added validation logic to ensure priority signals only
  apply when the element is actually in a position where it could be the LCP
  candidate: Adding `fetchpriority="high"` to too many images would be
  counterproductive, since if everything is high priority, nothing is.

      <!-- Before -->
      <img src="slide-1.webp" alt="Featured product">
      <!-- After -->
      <img src="slide-1.webp" fetchpriority="high" alt="Featured product">

- **Reduced latency through edge caching.** Caching is effective for reducing
  load times, but in ecommerce, it carries a real risk: Serving stale pricing
  and inventory data directly affects customer trust and revenue. We
  approached this carefully by monitoring business metrics alongside
  performance data, maximizing cache hit rates while ensuring we never cached
  content that could harm the merchant or buyer experience.

## Impact and results: From 57% to 96% LCP improvement

| **Metric (Jan 2025 to Jan 2026)** | **Relative improvement** |
|---|---|
| LCP (good) | +68% (57% to 96%) |
| Core Web Vitals (pass rate) | +50% (48% to 72%) |
| Conversion rate (session to paid order) --- mobile Google organic | +8.9% |
| Cart engagement (session to cart) --- mobile Google organic | +8.4% |
[Values represent relative year-over-year improvement, averaged across Nuvemshop and Tiendanube regional operations.]

These improvements positioned Nuvemshop and Tiendanube as the #1
performance-ranked ecommerce platform in Brazil, Argentina, and Mexico.

## Key takeaways and post-mortem reflections

Nuvemshop's highly customizable architecture meant we couldn't rely on standard
optimization playbooks. The real problem wasn't image weight or server latency:
It was that browsers were selecting unexpected elements as LCP due to CSS
transitions, missing priority signals, and lazy loading applied to images at the
top of the viewport.

The fix was straightforward once we understood the root causes: Remove
transitions from first-position sections, remove lazy loading from images at the
top of the viewport, and add explicit priority signals. We applied this
consistently across all core themes, page types, and the over 180,000 stores on
our platform.

The results speak for themselves: LCP pass rates went from 57% to 96%, overall
Core Web Vitals pass rates jumped from 48% to 72%, and merchants saw measurable
gains: An 8.9% increase, in conversion rate and a 8.4% increase in cart
engagement on mobile. Fast storefronts aren't just a technical achievement, they
directly drive merchant success.