Drupal’s upgrade process has improved significantly 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 offered, with tooling built to identify what needs to change before the upgrade begins and a core that has been designed for continuous forward compatibility.
That said, manageable is not the same as trivial. What the upgrade involves depends on the specific site — its custom modules, its contributed module dependencies, its theme, and how much technical debt has accumulated 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 throughout. Each major version has a defined end-of-life date after which it no longer receives security updates from the Drupal security team.
Drupal 9 reached end of life in November 2023. Drupal 10 will reach end of life in January 2026. Drupal 11 is the current supported major version, and Drupal 12 is on the roadmap.
The implication for organizations running Drupal 9: upgrade is overdue. For organizations running Drupal 10: the window to upgrade to 11 is open and should be planned before the end-of-life date arrives.
What Drupal Upgrade Readiness Requires
Before an upgrade can proceed, several components need to be assessed for compatibility with the target version.
Drupal core. Core itself upgrades with the Drupal version update. This is the straightforward part.
Contributed modules. Every contributed module installed on the site needs a version that supports the target Drupal version. Most actively maintained modules have Drupal 11-compatible releases. Modules that have not been updated — abandoned or slow-moving projects — either need replacements or need custom patches. The Upgrade Status module identifies which installed modules have compatible releases and which do not.
Custom modules. Custom modules written for an earlier Drupal version may use deprecated APIs that were removed in Drupal 10 or 11. The Upgrade Status and Rector tools identify deprecated API usage and, in many cases, can automatically update it. Custom modules that use significantly outdated patterns may require manual rewriting.
Theme. Drupal 10 removed support for Twig 1 and legacy theme functions used in Drupal 7/8-era themes. Drupal 11 continues this trajectory. Themes built for Drupal 9 typically require updates. A custom theme may need significant work if it was built on older patterns. A base theme used as a dependency (Olivero, Gin, or a contributed base theme) needs to have a compatible release.
PHP version. Drupal 11 requires PHP 8.3 or higher. If the hosting environment is running an older PHP version, that needs to be updated before or alongside the Drupal upgrade.
Database. Drupal 11 requires MySQL 8.0+, MariaDB 10.6+, or PostgreSQL 16+. Most modern hosting environments meet these requirements, but older hosting configurations may not.
The Upgrade Process
Step 1: Run Upgrade Status. The Upgrade Status module scans installed modules and themes for compatibility issues with the target version and produces a report. This report is the starting point for scoping the upgrade.
Step 2: Update contributed modules. For each contributed module, update to the version that supports the target Drupal version. Where a compatible version does not exist, find a replacement module or plan to remove the functionality.
Step 3: Update custom modules. Using the report from Upgrade Status and the Rector tool (which can automate many deprecated API updates), update custom modules to use current APIs. Test each updated module.
Step 4: Update the theme. Update the custom theme for compatibility with the new version. If the site uses a contributed base theme, update that first and then update the custom theme on top of it.
Step 5: Upgrade Drupal core. Once modules and theme are updated, upgrade core using Composer. Run database updates and clear caches.
Step 6: Test. Test the full site against a defined checklist. Every content type, every integration, every editorial workflow, every user role. Staging environment testing before production deployment.
Step 7: Deploy. Deploy the upgrade to production using the site’s standard deployment process. Monitor for issues in the hours following deployment.
Upgrading from Drupal 9 vs. Drupal 10
Upgrading from Drupal 10 to Drupal 11 is typically more straightforward than upgrading from Drupal 9 to Drupal 10 or 11. The deprecation cycle means that APIs deprecated in Drupal 9 were removed in Drupal 10, so a Drupal 10 site has already navigated most of the breaking changes. Drupal 11 introduced fewer removals relative to Drupal 10.
Upgrading from Drupal 9 directly to Drupal 11 requires addressing all deprecations from the Drupal 9-to-10 cycle as well as the Drupal 10-to-11 cycle. It is generally more efficient to go through Drupal 10 as an intermediate step, ensuring compatibility at each stage, rather than jumping directly to 11.
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 in the traditional sense. The data model, module system, and theme system are different enough that a Drupal 7 to Drupal 11 transition is effectively a migration rather than an upgrade. Content can be migrated using Drupal’s Migrate module, but the codebase is rebuilt from scratch on the new version.
How Long an Upgrade Takes
A site on a relatively current Drupal 10 installation with all actively maintained contributed modules: one to four weeks depending on the volume of custom code and theme work required. A site on Drupal 9 with some deprecated API usage in custom modules and an older theme: four to eight weeks. A site on Drupal 9 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 need the process handled by engineers who know both the old and new versions. Every upgrade begins 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 proceeding through Drupal 10 as an intermediate step is typically more reliable. Drupal 10 addressed the deprecations from the Drupal 9 cycle, so upgrading to 10 first ensures each set of breaking changes is addressed cleanly before moving to 11.
How do I know if my contributed modules support Drupal 11?
Install the Upgrade Status module on your current Drupal site. It will scan all installed modules and themes and report which have Drupal 11-compatible releases and which do not. This report is the starting point for scoping the upgrade.
What if a module I depend on doesn’t have a Drupal 11 version?
The options are: wait for the module to be updated (appropriate if the module is actively maintained and the timeline is not urgent), find an alternative module that provides similar functionality, patch the module for compatibility (appropriate for organizations with Drupal development resources), or remove the functionality and replace it with a different approach.
Do I need to update PHP when upgrading to Drupal 11?
Drupal 11 requires PHP 8.3 or higher. If your hosting environment is running PHP 8.0 or 8.1 (sufficient for Drupal 10), it will need to be updated before deploying Drupal 11. Most managed Drupal hosting providers support PHP 8.3; the update is typically a configuration change rather than a hosting migration.
How much does a Drupal upgrade cost?
A straightforward upgrade from Drupal 10 to Drupal 11 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 modules requiring updates and theme work runs $8,000 to $20,000. A Drupal 7 to Drupal 11 transition — which is effectively a migration — is scoped as a migration project. An Upgrade Status assessment produces a specific estimate for each situation.