Magento 2 Upgrade Guide: Planning a Safe Version Upgrade

Magento 2 Upgrade Guide: Planning a Safe Version Upgrade

Nobody completes a safe Magento upgrade by running one Composer command and hoping. This is the repeatable process — the one that works regardless of which versions you're moving between. For the specifics of the current jump, we cover 2.4.6 to 2.4.9 separately; this is the methodology underneath it.

Why upgrade at all

Three reasons, in order of how much they'll cost you if you ignore them:

  • Security support windows. Each Magento version has an end-of-support date, after which no more patches ship. Magento 2.4.6 reaches end of support on August 11, 2026 — after that, an unpatched store is a growing liability, not just an old one.
  • PHP compatibility. Magento 2.4.8 requires PHP 8.3 or 8.4; 8.1 and 8.2 are gone. Your PHP version is tied to your Magento version, and old PHP branches stop getting security fixes of their own.
  • Compounding cost. The longer you wait, the bigger the jump, the more extensions have drifted, and the more the upgrade turns from routine maintenance into a project. Falling behind is the expensive option; it just doesn't send an invoice until later.

Step 1: Take inventory before you plan

You can't plan an upgrade you haven't measured. Write down:

  • Current Magento version and edition (Open Source, Adobe Commerce, Mage-OS).
  • Current PHP version, and the target version's requirement.
  • Every third-party extension, with its installed version and whether a compatible release exists for the target.
  • The volume and shape of custom code — modules, theme overrides, core patches, and anything touching checkout or catalog.

This list is the whole risk profile. A store with ten well-behaved extensions and clean custom modules is a different upgrade from one with forty extensions and a decade of accreted overrides, even between the same two versions.

Step 2: Audit compatibility — this is where the risk lives

The Magento core upgrade itself is largely mechanical. The risk is in everything bolted onto it.

Go through the inventory extension by extension:

  • Is there a version compatible with the target Magento release? If yes, note it. If no, you have a decision: wait, replace, fork, or drop the extension.
  • Which custom modules touch APIs that changed? Deprecations and removed methods between versions are the usual breakage. Static analysis and the bin/magento upgrade compatibility tooling help, but a senior read of the custom code finds what tooling misses.
  • Any core patches or core edits? These are the landmines. Code that modified core will silently revert or conflict on upgrade. Find them now, not in production.

If an extension has no compatible release and no maintainer, that's not a footnote — it's a scope item that can dominate the whole project.

Step 3: Choose the path

You don't always step through every intermediate version. Adobe supports going directly from 2.4.6 to 2.4.8 without the intermediate release, for example. But the right path depends on how far behind you are:

  • One or two minor versions: usually a direct jump.
  • Several versions, or crossing a major PHP requirement: consider a staged path, upgrading PHP and search infrastructure as discrete steps rather than all at once, so a failure has one obvious cause.
  • Crossing the Elasticsearch-to-OpenSearch line (removed in 2.4.8): that's a search-engine migration in its own right, not a flag you flip mid-upgrade.

Sequence the infrastructure changes — PHP, search engine, cache backend — so each is verifiable on its own.

Step 4: Build a staging environment that mirrors production

Every upgrade problem you can find in staging is one you didn't find in production. Staging has to be realistic:

  • Production-like data volume. An upgrade that's fine against 200 sanitized products can choke on a 200,000-SKU catalog with real indexers.
  • The same PHP, search, cache, and web-server versions you'll run live.
  • The real extension set, not a trimmed-down copy.

A sanitized copy of the production database — with customer PII scrubbed — is the standard here. Testing against toy data is how "it worked in staging" becomes a lie.

Step 5: Regression test the revenue paths

Test everything, but test the paths that make money first and hardest:

  • Checkout — every payment method, every shipping method, guest and logged-in, virtual and downloadable carts, tax and discount edge cases.
  • Catalog and search — category pages, layered navigation, search results, especially after a search-engine migration.
  • The admin — order management, product editing, and any custom admin tools your team lives in daily.
  • Integrations — ERP, PIM, payment, and tax connections that a version bump can quietly break at the API layer.

Automated coverage helps, but a disciplined manual pass over checkout is non-negotiable.

Step 6: Deploy with zero downtime and a tested rollback

The upgrade is only real once it's live without taking the store down.

  • Use Magento's deploy mode and maintenance windows properly, or a blue/green approach where the new version is warmed and switched to, rather than upgraded in place.
  • Pre-generate static content and warm caches before the switch, so the first customer doesn't pay for a cold store.
  • Have a rollback you've actually tested — a database backup and a way back to the previous release. An untested rollback is a hope, not a plan. Reindex and cache state need to be part of it.

Step 7: After the upgrade

The best way to make the next upgrade small is to not fall behind again:

  • Apply security patches on cadence rather than saving them for the next big jump.
  • Keep extensions current so compatibility drift never accumulates.
  • Baseline performance after the upgrade — a new version plus a new PHP branch often changes it, and you want to know in which direction. Our performance checklist is the run-list for that.

What we'd do

Strip it down and a safe upgrade is inventory, compatibility audit, realistic staging, ruthless checkout testing, and a rollback you've rehearsed — in that order. The command that actually performs the upgrade is the smallest part; everything around it is where projects succeed or fail. If you're staring at a version deadline and would rather have a tested path than a hopeful one, ongoing Magento support and upgrades exist precisely so the deadline never becomes an emergency.


Emyrix plans and runs Magento and Adobe Commerce upgrades — compatibility audits, staged rollouts, and zero-downtime deployments. If an end-of-support date is coming at you, get in touch.

Frequently asked questions

When does Magento 2.4.6 reach end of support?

Magento 2.4.6 reaches end of support on August 11, 2026, after which no more patches ship and an unpatched store becomes a growing liability.

What PHP version does Magento 2.4.8 need?

Magento 2.4.8 requires PHP 8.3 or 8.4; PHP 8.1 and 8.2 are no longer supported.

Do I have to upgrade through every intermediate Magento version?

Not always. Adobe supports going directly from 2.4.6 to 2.4.8 without the intermediate release, though a staged path is worth considering when you are several versions behind or crossing a major PHP requirement.

Why does the Elasticsearch-to-OpenSearch change matter during an upgrade?

Elasticsearch was removed in 2.4.8, so crossing that line is a search-engine migration in its own right rather than a flag you flip mid-upgrade, and it should be sequenced as a discrete, verifiable step.

Work with Emyrix

Need help with your Magento store?

Emyrix helps businesses upgrade, optimize, and maintain Magento and Adobe Commerce stores — scoped honestly, delivered by the engineers who write these posts.