
Core Web Vitals in the green on real phones
Magento Performance
Magento speed optimization for Magento 2 and Adobe Commerce: Core Web Vitals passed on real phones, with the server, the cache and the theme fixed in that order.
Book a Speed ReviewServer first
2.5 s Largest Contentful Paint, the Core Web Vitals limit at the 75th percentile200 ms Interaction to Next Paint, the metric that replaced First Input Delay in 2024
Google judges a store on three numbers from real visitors: Largest Contentful Paint inside 2.5 seconds, Interaction to Next Paint inside 200 milliseconds and a layout shift under 0.1, each measured at the 75th percentile of page loads. Interaction to Next Paint replaced First Input Delay in 2024, and it is the one most Magento stores fail.
The usual response is a theme change. It is often the wrong first move. A Magento page that takes two seconds to leave the server fails Largest Contentful Paint before a single stylesheet loads, and no frontend fixes that. Adobe's own guidance is plain: the built-in full-page cache is much slower than Varnish, and Varnish is what production should run.
So the order matters. First the server: Varnish or Fastly actually hitting, Redis for sessions and cache, OpenSearch and the indexers healthy, PHP and the database tuned. Then the frontend: the theme's weight, the forty extension scripts, the images shipped at full size. Then a budget so it stays fixed.
We measure on your traffic before and after, on mid-range phones rather than a laptop on office wifi, and the free Magento audit gives you the baseline before you spend anything.
Where the seconds go
Each one shows up in Search Console as a red Core Web Vitals report before it shows up in revenue. Most stores have three of them at once.

The server takes two or three seconds to answer before anything renders. Full-page cache is on in the admin and missing in practice, and every product page is built from scratch for every visitor.

Largest Contentful Paint over four seconds on mobile, Interaction to Next Paint over 500 milliseconds, and a ranking that slid when the report turned red.

Varnish is installed and bypassed: a session cookie, a block marked uncacheable, an extension that sets a header. The hit rate stays low while the servers work for nothing.

Each extension added a script, a stylesheet and a database query to every page load. Half of them are unused; all of them run.

A 4,000-pixel product photo served to a 400-pixel slot, in JPEG, with no lazy loading. The largest element on the page is the slowest by design.

The store passes on a desktop in the office and fails on the mid-range Android a customer holds on a weak signal, which is where Google measures it.
What the work includes

Field data from your real visitors and lab runs on mid-range phones, every finding ranked by the seconds it costs.

Varnish or Fastly actually hitting: cacheable blocks, correct headers, cookies that no longer bypass the cache.

Slow queries found and indexed, indexers on schedule, OpenSearch sized and tuned for the catalog.

Blocking scripts deferred, unused extension assets removed, critical CSS inlined, the theme measured page by page.

Images resized and served as WebP with lazy loading, fonts subset and preloaded, third-party tags moved off the critical path.

A performance budget checked on every release and field data watched month by month, so the store does not drift back.
Measure, server, frontend, keep
What you are left with
75th percentile of real visits, where Google reads every number1 report a month on what moved, from Google's field data
The work ends with numbers, not a feeling that the store is quicker.
A before-and-after report on your own traffic: Largest Contentful Paint, Interaction to Next Paint and layout shift at the 75th percentile, per template, from Google's field data rather than a single lab run. A server that answers in a fraction of the time it did, with Varnish or Fastly hitting on the pages that matter and the hit rate on a dashboard you can open.
A frontend that carries only what it uses: extension assets removed, scripts deferred, images sized to their slot and served as WebP, fonts preloaded. Every change is a commit in your repository with the measurement that justified it, so a future developer knows why a script is deferred and what happens if it is not.
And a budget that holds. Speed decays one extension at a time, which is why most stores are optimised twice. The budget check on every release and the monthly field report are what stop the third time, and both come with the ongoing support plan if you want them kept.
Pick the way in
The full programme: the Core Web Vitals audit on your traffic, the server fixed first and the frontend second, a before-and-after report and a budget written into your releases. For a store that fails in Search Console today.
When the audit shows Luma cannot pass Core Web Vitals at any weight: a Hyvä theme on the Magento theme model you already have, extensions ported, rankings kept. The server work carries over unchanged.
For a store already optimised, by us or by someone else: the performance budget checked on every release, field data watched month by month, and the fix made when a new extension or a campaign page pushes a number over the line.
Not our word for it

Adobe Certified Expert
7 professionals
Adobe Certified Expert
4 masters
Adobe Certified Expert
9 experts
Adobe Certified Expert
14 experts
Adobe Certified Expert
14 experts
Google Analytics Certification
6 expertsTrusted by 100+ companies
Keep reading



FAQ
Tell us about your store and we will come back with straight answers.
Talk to usFast enough to pass Core Web Vitals on a mid-range phone: Largest Contentful Paint inside 2.5 seconds, Interaction to Next Paint inside 200 milliseconds and layout shift under 0.1, at the 75th percentile of real visits. Magento 2 on Varnish with a lean frontend does that. Most stores that fail are not limited by the platform but by what was bolted onto it.
Not always, and never first. A slow server fails Largest Contentful Paint before the theme loads, so the server is fixed before the frontend is judged. Luma can pass with disciplined weight on simpler stores; where it cannot at any weight, the audit says so with numbers, and the Hyvä theme development page describes the move.
Usually because something bypasses it: a block marked uncacheable, an extension that sets a session cookie on every page, a header that tells Varnish not to store the response. The cache is on in the admin and missing in practice. We find the bypass, fix it, and put the hit rate on a dashboard so you can see it hold.
Varnish is the HTTP cache Adobe recommends for production; Adobe's own documentation calls the built-in full-page cache much slower. On Adobe Commerce on cloud infrastructure the same role is played by Fastly, which is included. If your store runs the built-in cache in production, that is the first finding of the audit.
The audit takes about a week on your field data and lab runs. Server fixes follow in days; frontend work depends on how much the theme carries, from a week to several. The before-and-after report closes it. A store that needs Hyvä to pass is a separate project, scoped from the audit.
Fixed scope after the audit, because the audit decides how much server and how much frontend work there is, and no two stores carry the same extensions. There is no price list on this site; the written estimate comes with the ranked findings.
Every change runs on staging first with the regression checks on checkout, catalog, accounts and admin, and every change is a commit in your repository with the measurement behind it. Cache changes in particular are tested for stale content before production. If a number regresses, the commit is reverted and the report says why.
Core Web Vitals are a ranking signal and Search Console reports them per URL, so a store that moves from red to green removes a penalty on the pages that fail. It does not replace content and links; it stops speed holding them back, and it lifts conversion on the pages that were losing shoppers while they waited.
Yes. Fastly is the cache there, included with the cloud infrastructure, with image optimisation and a web application firewall on production environments. The server work is Fastly configuration, Redis, OpenSearch and the application itself; the frontend work is the same as on any Magento store.
The audit lists them by what each one adds to every page: scripts, stylesheets, database queries, blocks that bypass the cache. Unused ones are disabled, heavy ones are replaced or trimmed, and the ones that earn their keep stay. We do not remove an extension without showing what it costs.
A performance budget checked on every release and field data watched month by month. Both are part of the ongoing support plan, and the monthly report says what moved and why. Speed decays one extension at a time; the budget is what catches it before customers do.
Yes. The free Magento audit reads speed, Core Web Vitals, SEO and security from the storefront with no access at all. The paid audit goes inside: field data, lab runs on phones, server timing, cache hit rate and a ranked list of findings. Either stands on its own, and the paid one is the first step of the full programme.
Let’s build something great together!
Send the store URL and the Search Console report if you have one. We come back with where the seconds go and what the fix would take.