Skip to main content
TIEMAN.IT
Back to portfolio

CarCare24

Magento 2PerformanceCore Web VitalsHypernode

Magento 2 webshop performance optimization: LCP from 14-16s down to 2.14s CrUX real users. Nine waves, custom Tieman_Csp module, all Core Web Vitals passing.

Screenshots

https://carcare24.eu
CarCare24 desktop
CarCare24 mobile

About this project

CarCare24 is a Magento 2 webshop with ~3,400 products running in four languages. Mobile LCP was at 14 to 16 seconds in lab. After nine performance waves, WebP hero conversion, Redis and FPC tuning, defer third-party scripts, and a custom Tieman_Csp module, LCP is 2.14 seconds for real CrUX users. A11y from 90 to 100, Best Practices from 88 to 96, SEO 100.

Highlights

LCP CrUX real users: 2.14 seconds
INP CrUX: 111ms
All Core Web Vitals passing
Custom Tieman_Csp module
A11y 90 to 93
Magento 2.4.7-p10

Case Study

CarCare24 is a Magento 2 webshop for car maintenance with ~3,400 products and ~13,600 generated pages, running in four languages (NL, EN, DE, FR). The shop runs on Hypernode with Cloudflare Free on top, Infortis Ultimo theme, PHP 8.1.34-fpm, and as of May 2026, Magento 2.4.6-p15.

The challenge

Mobile load time was critical. Lab measurements via PageSpeed Insights (Slow 4G, 4× CPU) showed an LCP of 14 to 16 seconds. Not a single outlier, but nine repeated measurements with comparable results. For a shop in the automotive parts segment, that means lost conversions on mobile, the largest traffic segment.

Beyond LCP there were:

  • A11y score at 90 due to missing alt attributes and contrast issues
  • Best Practices at 88 due to CSP violations and unsafe-inline scripts
  • SEO issues from missing canonicals on CMS pages

What I worked on

9 performance waves

Each wave targeted a specific bottleneck. In summary:

  • Hero image — WebP conversion, loading="eager", fetchpriority="high". The LCP element was waiting on a 2× oversized JPEG.
  • Third-party scripts — Defer gate added so tracking and chat only load after user interaction. Significantly reduced blocking time on slow 4G.
  • Redis and FPC — Magento Full Page Cache and session storage tuned. TTFB dropped from ~974ms to ~390ms in CrUX over 28 days.
  • PHP-FPM workers — Configuration adjusted to the Hypernode worker model. Less queue wait time under load.
  • Checkout INP — Reduce cart abandonment via faster interaction in checkout. INP improved for selected flows.
  • SRI hashes — Race condition found where SRI hashes were out of sync with served assets post-deploy (P1 incident). Resolved via Tieman_Csp module.
  • CMS canonicals — CanonicalForCms component added to prevent duplicate content on flat pages.

Custom Tieman_Csp module

Four components in one module:

  • CanonicalForCms — Canonical tag on CMS pages where Magento does not set it automatically
  • DeferThirdPartyScripts — Interaction gate for all non-essential scripts
  • InteractionGate — Generic defer wrapper for lazy-loaded widgets
  • SriRepositoryLock — SRI hash synchronization, fixes the race condition at deploy time

Multi-tenant context

CarCare24 runs as stores 1 through 4 plus website 1 in a multi-store database. Every change is built multi-store aware so all four languages benefit consistently.

Magento p14 to p15

On 15 May 2026, the upgrade from 2.4.6-p14 to 2.4.6-p15 was completed. I supported the deploy process and handled post-deploy verification.

Results

Lab vs CrUX — what do these numbers mean?

Lab scores (PSI) are worst-case: Slow 4G simulation, 4× CPU throttling, no CDN benefit, no warm cache. The range 38 to 65 mobile and 71 to 92 desktop reflects PSI variance of ±15 points on the same page. A single run at 8.6 seconds LCP says less than the average across nine runs.

CrUX is real user data from Chrome users over 28 days. Those 2.14-second LCP and 111ms INP are what visitors actually experience. All Core Web Vitals passing.

Stack

  • Magento 2.4.6-p15, PHP 8.1.34-fpm
  • 328 enabled modules (incl. Tieman_Csp custom)
  • Infortis Ultimo theme
  • Hypernode hosting, Cloudflare Free
  • ~3,400 products, ~13,600 pages
  • 4 store views: NL, EN, DE, FR

What this difference means

An LCP that goes from 15 seconds to 2.14 seconds for real users is not a benchmarking exercise. Visitors on mobile see the hero within two seconds. Checkout runs faster. SRI issues that caused a production incident during a deploy are structurally resolved, not temporarily patched.

Lighthouse Before and After

Two measurements via Google PageSpeed Insights (Slow 4G, Emulated Moto G Power, Lighthouse 13.0.1). Left is the starting point, right is after the performance waves.

Before — Performance 39Lighthouse measurement before optimization: Performance 39, LCP 24.2s, TBT 1080ms
After — Performance 61Lighthouse measurement after optimization: Performance 61, LCP 5.6s, TBT 50ms

Lighthouse measurement before and after the performance waves. Lab data via Google PSI.


Is your webshop also too slow on mobile? Get in touch for a no-obligation analysis.