Drupal 12 Upgrade Guide: Release Date, Requirements and Removed Modules
The stable Drupal 12.0.0 release is scheduled for the week of 7 December 2026, requires PHP 8.5 and Symfony 8.1, and refuses database updates from sites running anything older than Drupal 11.3.0. Drupal 12.0.0-alpha1 opened the release phase on 2 September 2026, followed by 12.0.0-beta1 on 30 September 2026 and 12.0.0-beta2 on 14 October 2026.
According to the Drupal core release schedule, the Drupal 12 release week also marks the end of life for Drupal 10 on 9 December 2026, when security coverage ends for 10.6.x (and for 11.3.x once 11.5.0 ships). Core development is tracked in the Drupal 12 release meta issue (#3449806).
Before starting major-version upgrade work, site administrators on supported branches should apply the latest patch releases: 11.4.11, 11.3.20 or 10.6.20, released on 21 October 2026. These follow the 14 October security releases (11.4.10, 11.3.19 and 10.6.19, shipped alongside 12.0.0-beta2), which patch SA-CORE-2026-014, a critical remote code execution vulnerability, as well as two moderately critical cross-site scripting advisories (SA-CORE-2026-015 and SA-CORE-2026-016).
Key Dates for Drupal 10, 11 and 12
| Milestone | Date | What changes for site owners |
|---|---|---|
Drupal 12.0.0-alpha1 | 2 September 2026 | Alpha testing opened; platform floors, Symfony 8.1 / Guzzle 8.0 / PHPUnit 12.5 upgrades, removal of Migrate Drupal, and seven modules plus the Stable 9 theme moved to contributed projects |
Drupal 12.0.0-beta1 | 30 September 2026 | Beta phase opened; Search, Toolbar, Claro and Olivero moved to contributed projects (nine modules and three themes in total by beta1); Default Admin theme marked stable |
Drupal 12.0.0-beta2 | 14 October 2026 | Obsolete navigation_top_bar module and Query serialisation removed; fixes SA-CORE-2026-014, SA-CORE-2026-015 and SA-CORE-2026-016 alongside 11.4.10, 11.3.19 and 10.6.19 |
Drupal 12.0.0-rc1 and 11.5.0-rc1 (target, release schedule) | Week of 9 November 2026 | Release candidate window prior to final tag |
Drupal 12.0.0 and 11.5.0 (target, release schedule) | Week of 7 December 2026 | First stable Drupal 12 release and the next feature minor release of Drupal 11 |
| Drupal 10 end of life (release schedule) | 9 December 2026 | Security and bug-fix support ends for 10.6.x |
The Minimum Upgrade Path: Drupal 11.3 Floor, 11.4 or 11.5 Recommended
Sites cannot upgrade directly from Drupal 10, or from Drupal 11.2 and earlier, to Drupal 12.
The 12.0.0-beta1 release notes and change record #3585783 ("Sites must update to Drupal 11.3.0 or higher before updating to Drupal 12.x") state that database update functions added before Drupal 11.3.0 have been removed from Drupal 12.
Core maintainers recommend updating to the latest release of Drupal 11.4 (11.4.11, released on 21 October 2026) or to 11.5, which reached 11.5.0-beta1 on 15 October 2026 and is due the same week as 12.0.0, before upgrading to Drupal 12. Sites still on Drupal 10.6 should first update to 10.6.20, which includes the October security fixes, and complete their upgrade to Drupal 11.4 or 11.5 ahead of the 9 December 2026 end-of-life cutoff.
Platform and Dependency Requirements in Drupal 12
Drupal 12 raises database floors and the major versions of core PHP and JavaScript dependencies:
| Component | Drupal 11 requirement | Drupal 12 requirement (12.0.0-beta2) | Notes |
|---|---|---|---|
| PHP | 8.3+ | 8.5 | Default password hashing algorithm switched to argon2id (change record #3530196), configurable via the password.algorithm container parameter (with bcrypt fallback) |
| MySQL | 8.0+ | 8.0+ | |
| MariaDB | 10.6+ | 10.11+ | |
| PostgreSQL | 16+ | 18+ | Required by the installer check and INSTALL.txt in 12.0.0-beta2. The 12.0.0-alpha1 and 12.0.0-beta1 release notes said 19, which was still at release candidate on 20 October 2026; 18 is PostgreSQL's current stable version |
| SQLite | 3.45+ | 3.45+ (with json1) | Requires the json1 extension |
| Symfony | 7.x | 8.1 | |
| Guzzle | 7.x | 8.0 | |
| PHPUnit | 10 / 11 | 12.5 | Legacy docblock annotations removed and PHP 8 attributes (#[Group()]) required (change record #3581981) |
| Coder | 8.3.x | 9.0 (9.0.1) | Minor backward compatibility breaks; PHP_CodeSniffer configuration files may need updating |
| HTMX | 2.0 | 4.0 | Upgraded in 12.0.0-beta1 (change record #3583674) |
12.0.0-beta1 removes the legacy Backbone and Underscore JavaScript libraries. Its release notes also list changes that landed earlier: Twig-CS-Fixer and the removal of the update_fetch_with_http_fallback setting (both in 12.0.0-alpha1), twig/html-extra for Class Variance Authority support in Twig templates (already in Drupal 11.4), and alphabetically sorted allowed HTML tags in filter configurations, which will appear in drush cex configuration diffs. In 12.0.0-beta2, database Query objects can no longer be serialised following the removal of __sleep() and __wakeup().
The 12.0.0-alpha1 and 12.0.0-beta1 release notes record that hosting Drupal directly on Microsoft Windows web servers in production is deprecated because Drupal core does not have an automated Windows test environment. Sites on Windows servers in production should plan to use Linux on Windows, while support for Windows in development environments continues.
Nine Core Modules and Three Themes Moved to Contributed Projects
The removals came in two releases:
- Removed in
12.0.0-alpha1(seven modules and one theme): Ban, Contact, Field Layout, History, Settings Tray, Shortcut and Telephone, plus the Stable 9 theme. - Removed in
12.0.0-beta1(two modules and two themes): Search and Toolbar, plus the Claro and Olivero themes.
In place of Claro, the Default Admin theme (default_admin), which entered core as an experimental theme in Drupal 11.4, is marked stable in 12.0.0-beta1 and becomes the default administration theme.
The 12.0.0-alpha1 and 12.0.0-beta1 release notes include two warnings for site administrators whose sites use any of these twelve extensions:
Do not uninstall a needed core module or theme before upgrading. Uninstalling an extension destroys its configuration and data. Instead, require the contributed replacement with Composer on a compatible Drupal 11 release before upgrading core. The following is an illustrative command for sites already on Drupal 11.5; do not run it unchanged on Drupal 11.4, and review the version constraints of every extension your site actually uses:
ddev composer require drupal/toolbar drupal/search drupal/telephone drupal/claroThe stable releases of Search (
1.0.0), Toolbar (2.0.0), Claro (3.0.0) and Shortcut (2.0.0) require Drupal^11.5 || ^12, according to their package metadata on packages.drupal.org, so sites on Drupal 11.4 cannot install those specific releases until they update to Drupal 11.5. Where a site must remain on 11.4 temporarily, check for a compatible contributed release rather than assuming that the latest stable release can be installed.- Do not rely on
drush updatedbalone to catch missing extensions. The release notes warn that Drush may bypass warning and error messages onupdate.phprelated to missing extensions, leaving the errors to surface on the status report after upgrading. Administrators should check their installed modules and themes against the twelve projects above before updating core.
Removals Without a Contributed Replacement
Three other removals across 12.0.0-alpha1, 12.0.0-beta1 and 12.0.0-beta2 do not move to a drop-in contributed project, and one demonstration profile is hidden from the installer:
- Migrate Drupal (
migrate_drupal) and Migrate Drupal UI (migrate_drupal_ui). Removed in12.0.0-alpha1. The underlying Migrate API (migrate) module remains in core. Sites migrating from Drupal 6 or Drupal 7 must migrate to Drupal 11 first and then update to Drupal 12. - Navigation Top Bar (
navigation_top_bar). Removed in12.0.0-beta2(issue #3627057 and change record #3627750) after its features were merged into the core Navigation module in Drupal 11.3. Unlike the nine modules moved to contributed projects, the12.0.0-beta2release notes state that sites with this obsolete module enabled should uninstallnavigation_top_barprior to updating to12.0.0-beta2. - Syndicate block plugin. Removed in
12.0.0-beta1after being deprecated in Drupal 11.2.0 with no replacement. The12.0.0-beta1release notes state that any configured placement of the Syndicate block is removed automatically when updating to Drupal 12.0.0. - Umami (
demo_umami). Not deleted from core, but hidden from the interactive installer in Drupal 12 (change record #3587286, "The Umami demonstration profile is now hidden") and retained in core for automated performance tests. The Dashi site template takes over Umami's role as a multilingual demonstration site in Drupal CMS.
How to Audit a Site for Drupal 12 Readiness
Teams on Drupal 11 can check their custom and contributed code for Drupal 12 compatibility using three tools:
- Upgrade Status. Maintained by Gábor Hojtsy and supported by Acquia, Upgrade Status offers two release lines with Drupal 12 readiness checks: stable release
4.3.10(8 June 2026, for Drupal^9 || ^10 || ^11, covered by security advisories) and pre-release5.0.0-alpha3(2 July 2026, for Drupal^10.4 || ^11 || ^12). Both scan installed projects for deprecated APIs,info.ymlcore_version_requirementconstraints and removed core extensions, and provideddev drush upgrade_status:analyze --allfor command-line and continuous integration checks. - PHPStan Drupal (
mglaman/phpstan-drupal). Created by Matt Glaman and paired withphpstan/phpstan-deprecation-rules, it flags calls to functions, services and class constants marked as deprecated in Drupal 11 and removed in Drupal 12. - Drupal Rector (
palantirnet/drupal-rector). Automates common code rewrites for deprecated Drupal APIs and PHPUnit attribute conversions. As The DropTimes reported in Dries Buytaert Introduces AI-Generated Rector Rules for Drupal Upgrades, Dries Buytaert published "AI-generated Rector rules for Drupal" on 6 May 2026, describing using Drupal Digests to generate Rector rules from Drupal core commits to speed up major-version transitions.
Drupal 10.6 and earlier Drupal 11 sites need to reach Drupal 11.4.x, or 11.5.0 once it is stable, before upgrading. Upgrades can be tested on PHP 8.5 against 12.0.0-beta2 now and against the release candidate due the week of 9 November 2026. Drupal 12 beta releases are intended for compatibility and upgrade testing, not for production deployment.


