Drupal

Upgrading from Drupal 10 to Drupal 11: what actually changes

Drupal 11 is a far smaller step than the Drupal 7 to 9 migration was. Here is what the upgrade touches, what breaks, and the order to do it in.

Key takeaways

  • Drupal 11 is an incremental upgrade, not a rebuild — the data model carries forward.
  • Your contributed and custom modules gate the timeline, not core.
  • Reach a fully current Drupal 10 before attempting the jump.
  • Rehearse the whole sequence, including database updates, on a copy of production.

Why this upgrade is different

Organisations that lived through the Drupal 7 to 8 transition tend to assume every major version is a rebuild. Drupal 11 is not. Since Drupal 8 the project has followed a continuous upgrade path: deprecated code is removed at major releases, but the data model, configuration system and module architecture carry forward.

In practice that means a site on a current Drupal 10 with well-maintained contributed modules can often move to Drupal 11 in a matter of days rather than months. The work concentrates in dependency compatibility, not in content migration.

Check your dependencies before anything else

The upgrade is gated by your contributed and custom modules, not by core. Start with an inventory: run composer outdated and the Upgrade Status module to produce a compatibility report for every installed extension.

  • Modules with a Drupal 11 compatible release: no action beyond updating.
  • Modules with an open compatibility issue: check whether a patch exists and can be applied through Composer.
  • Modules that are abandoned upstream: decide now whether to adopt, replace or remove them. This is usually the item that sets the timeline.
  • Custom modules: run PHPStan with the Drupal extension to find deprecated API calls.

It is worth being ruthless here. A module carried forward through three major versions purely because nobody wanted to remove it is a recurring cost, and an upgrade is the natural moment to retire it.

Environment requirements

Drupal 11 raises the floor on the underlying platform. Confirm your hosting supports the required PHP version and database server versions before scheduling anything, because on shared or managed hosting that can be the longest lead item.

If you are running your own infrastructure, treat the platform upgrade as a separate change from the Drupal upgrade. Doing both at once makes it much harder to attribute a failure to a cause.

A sensible order of work

Get to the latest Drupal 10 release first, with every module current. An upgrade from an up-to-date 10 is straightforward; an upgrade from a 10.0 site that has drifted for two years is not.

Then resolve deprecations in custom code, update the platform, and only then bump core. Rehearse the whole sequence on a copy of production, including the database update step, and time it so you know what the maintenance window really needs to be.

Keep configuration in code throughout. If site configuration lives only in the production database, every rehearsal is guesswork and the real upgrade becomes a one-way door.

What to do about abandoned modules

Every upgrade surfaces a handful of modules with no Drupal 11 release and no active maintainer. There are four honest options and it is worth naming them explicitly rather than drifting.

You can adopt the module and maintain it yourself, which is reasonable if it is small and central to your site. You can replace it with a maintained alternative, which usually costs configuration and content changes. You can fold the functionality into a small custom module, which is often the cheapest answer for something simple. Or you can remove the feature, which is the right call more often than teams expect.

Make this decision consciously for each one, and record the reasoning. The team doing the next upgrade will need it, and “we do not know why this is here” is how technical debt compounds across versions.


Frequently asked questions

For a well-maintained site with current modules, the technical work is often a matter of days. The variable is dependency remediation: a site carrying several abandoned modules or a large amount of custom code with deprecated API usage will take considerably longer, and that assessment should happen before any schedule is agreed.

No. Unlike the Drupal 7 to 8 transition, this is an in-place upgrade rather than a migration. Content and configuration carry forward. That said, the upgrade should still be rehearsed against a copy of production so that any module-specific update hooks are exercised before the real run.

For a while. Each major version has a defined end-of-life after which security coverage stops, so staying put is a decision with a deadline attached. Planning the upgrade while the current version is still supported is materially cheaper than doing it under pressure afterwards.

Working on this?

A conversation with our team, no charge and no obligation.

Book a conversation