Skip to main content
Skip to main content
Reliable By Design

Drupal 9 to 10 to 11: What the Upgrade Path Actually Looks Like

Drupal's upgrade process has improved a lot over the past several major versions. The path from Drupal 9 or 10 to Drupal 11 is the most manageable major version transition Drupal has ever offered, with tooling that identifies what needs to change before the upgrade begins and a core designed for continuous forward compatibility.

That said, manageable isn't the same as trivial. What your upgrade involves depends on your specific site: the custom modules, the contributed module dependencies, the theme, and how much technical debt has piled up since the last update cycle.

How Drupal's Version Cycle Works

Drupal releases new major versions roughly every two years, with minor versions (security and feature releases) on a regular schedule in between. Each major version has a defined end-of-life date, after which it stops receiving security updates from the Drupal security team.

Drupal 9 reached end of life in November 2023. Drupal 10 reached end of life in January 2026. Drupal 11 is the current supported major version, and Drupal 12 is on the roadmap.

What that means in practice: if you're still running Drupal 9 or 10, your upgrade is overdue. You're operating without security coverage, and the longer you wait, the more the gap grows.

What Drupal Upgrade Readiness Requires

Before an upgrade can proceed, several pieces need to be checked for compatibility with the target version.

Drupal core. Core upgrades with the version update itself. This is the easy part.

Contributed modules. Every contributed module on your site needs a release that supports the target Drupal version. Most actively maintained modules have Drupal 11-compatible releases. The abandoned and slow-moving ones either need replacements or custom patches. The Upgrade Status module tells you which are which.

Custom modules. Custom modules written for an earlier Drupal version may use deprecated APIs that were removed in Drupal 10 or 11. Upgrade Status and Rector identify deprecated API usage, and Rector can update a lot of it automatically. Custom modules built on significantly outdated patterns may need manual rewriting.

Theme. Drupal 10 removed support for Twig 1 and the legacy theme functions from the Drupal 7 and 8 era, and Drupal 11 continues that trajectory. Themes built for Drupal 9 usually need updates, and a custom theme built on older patterns may need real work. If you use a base theme like Olivero or Gin, it needs a compatible release too.

PHP version. Drupal 11 requires PHP 8.3 or higher. If your hosting is on an older PHP, that gets updated before or alongside the Drupal upgrade.

Database. Drupal 11 requires MySQL 8.0+, MariaDB 10.6+, or PostgreSQL 16+. Most modern hosting meets this. Older configurations may not.

The Upgrade Process

Step 1: Run Upgrade Status. It scans your installed modules and themes for compatibility issues with the target version and produces a report. That report is the scope.

Step 2: Update contributed modules. Each one gets updated to the version that supports the target Drupal version. Where no compatible version exists, you find a replacement or plan to retire the functionality.

Step 3: Update custom modules. Using the Upgrade Status report and Rector, update custom modules to current APIs. Test each one.

Step 4: Update the theme. If the site uses a contributed base theme, update that first, then your custom theme on top of it.

Step 5: Upgrade core. Once modules and theme are ready, upgrade core with Composer, run database updates, clear caches.

Step 6: Test. The full site, against a defined checklist. Every content type, every integration, every editorial workflow, every user role. On staging, before production ever sees it.

Step 7: Deploy. Push the upgrade through your standard deployment process and watch it closely for the first few hours.

Upgrading from Drupal 9 vs. Drupal 10

Going from Drupal 10 to 11 is usually more straightforward than going from 9 to 10 or 11. The deprecation cycle means APIs deprecated in Drupal 9 were removed in Drupal 10, so a Drupal 10 site has already cleared most of the breaking changes. Drupal 11 removed comparatively little.

Upgrading from Drupal 9 straight to 11 means addressing all the deprecations from both cycles at once. It's generally cleaner to go through Drupal 10 as an intermediate step and confirm compatibility at each stage, rather than jumping.

What Drupal 7 Sites Face

Drupal 7, which reached end of life in January 2025, has no direct upgrade path to Drupal 10 or 11. The data model, module system, and theme system changed enough that a Drupal 7 to Drupal 11 transition is effectively a migration, not an upgrade. Content moves over with Drupal's Migrate module, but the codebase gets rebuilt on the new version.

How Long an Upgrade Takes

A relatively current Drupal 10 site with actively maintained contributed modules: one to four weeks, depending on how much custom code and theme work is involved. A Drupal 9 site with some deprecated API usage and an older theme: four to eight weeks. A Drupal 9 site with heavily customized modules and significant technical debt: two to three months.

How Cool Fire Approaches Drupal Upgrades

Cool Fire Inc manages Drupal version upgrades for organizations that want the process handled by engineers who know both the old version and the new one. Every upgrade starts with an Upgrade Status assessment that produces a specific scope before any work is committed.

Frequently Asked Questions

Can I upgrade directly from Drupal 9 to Drupal 11?

Technically yes, but going through Drupal 10 as an intermediate step is usually more reliable. Drupal 10 addressed the deprecations from the Drupal 9 cycle, so upgrading to 10 first lets you clear each set of breaking changes cleanly before moving to 11.

How do I know if my contributed modules support Drupal 11?

Install the Upgrade Status module on your current site. It scans everything installed and reports which modules and themes have Drupal 11-compatible releases and which don't. That report is the starting point for scoping the upgrade.

What if a module I depend on doesn't have a Drupal 11 version?

You have four options. Wait for the module to be updated, which is fine if it's actively maintained and you're not in a hurry. Find an alternative module that does the same job. Patch it for compatibility yourself, which makes sense if you have Drupal development resources. Or retire the functionality and solve the problem a different way.

Do I need to update PHP when upgrading to Drupal 11?

Drupal 11 requires PHP 8.3 or higher. If your hosting is running PHP 8.0 or 8.1, which was fine for Drupal 10, it needs updating before Drupal 11 deploys. Most managed Drupal hosts support PHP 8.3, and the change is typically a configuration switch rather than a hosting migration.

How much does a Drupal upgrade cost?

A straightforward Drupal 10 to 11 upgrade on a site with actively maintained modules and a current theme typically runs $3,000 to $8,000. An upgrade from Drupal 9 with custom module updates and theme work runs $8,000 to $20,000. A Drupal 7 to 11 transition is effectively a migration and gets scoped as one. An Upgrade Status assessment produces a specific number for your situation.