Drupal 10 Upgrade Checklist for Drupal 11
October 20, 2026
Drupal 10 reaches end of life on December 9, 2026. After that, no security fixes, no bug fixes, nothing. Your site will keep running, of course. So did a lot of Drupal 7 sites.
The same week, Drupal 12 is released. That doesn’t change the plan: you can’t skip a major version, so every Drupal 10 site goes to Drupal 11 next.
The good news is that a 10 to 11 upgrade isn’t a rebuild like the 7 to 8 days. It’s mostly Composer, deprecated code, and a few removed modules. Here’s the checklist to use as a guide.
Before you start
Get on Drupal 10.3 or later. Drupal 11 removed all database updates from before 10.3, so you can’t jump from an older 10.x. Ideally, be on 10.6, the last Drupal 10 minor and the only one still getting security fixes.
Check your PHP version. Drupal 11 needs PHP 8.3 or later.
Check your database version. Drupal 11 needs one of these:
Database Minimum MySQL 8.0 MariaDB 10.6 PostgreSQL 16 (with pg_trgm)SQLite 3.45 Take a backup of the database and files. Then check that you can restore it. A backup you’ve never restored is just a hopeful file.
Work locally first. DDEV makes this easy. Don’t do your first attempt on production.
Find what will break
Install Upgrade Status and run it. It scans your contrib and custom code and tells you what isn’t Drupal 11 ready.
Update contrib modules and themes to versions that support Drupal 11. Most popular modules have been ready for a while.
Fix custom code. Drupal Rector fixes a lot of deprecated API calls automatically. Remember to add
^11tocore_version_requirementin your custom.info.ymlfiles.Deal with removed core modules. These were removed from core in Drupal 11:
- Actions UI
- Activity Tracker
- Book
- Forum
- Statistics
- Tour
If you use any of them, install the contributed version while you’re still on Drupal 10, or uninstall it.
Write down customized scaffold files like
.htaccessandrobots.txt. The upgrade may overwrite them.
Upgrade
Run these from the project root.
Make the settings directory writable:
chmod u+w web/sites/default chmod u+w web/sites/default/*settings.php chmod u+w web/sites/default/*services.ymlRequire Drupal 11 (and an updated Drush):
composer require 'drupal/core-recommended:^11' \ 'drupal/core-composer-scaffold:^11' \ 'drupal/core-project-message:^11' --no-update composer require drush/drush --no-updateIf
drupal/coreis listed directly incomposer.json, remove it withcomposer remove drupal/core --no-update. Drupal 11.4 also needscomposer config allow-plugins.symfony/runtime true.Do a dry run, then update:
composer update --dry-run composer updateIf Composer complains, read the whole message. It usually names the one contrib module still holding you back on Drupal 10.
Run the database updates:
drush updatedb:status drush updatedb drush cache:rebuildPut the permissions back:
chmod 755 web/sites/default chmod 644 web/sites/default/*settings.php chmod 644 web/sites/default/*services.ymlReapply your scaffold file changes from the earlier step.
After the upgrade
Check the status report at
/admin/reports/status.Watch the logs while you click around:
drush watchdog:tail.Run cron with
drush cronand your tests (PHPUnit, Behat), if you have them.Test the important stuff by hand: login, forms, editing content, anything that takes money.
Remove Upgrade Status once you’re done:
drush pm:uninstall upgrade_status -y composer remove drupal/upgrade_statusDeploy, then check file permissions and ownership on the server.
Summary
Drupal 10 ends December 9, 2026. Get to Drupal 10.3 or later, PHP 8.3, and a supported database. Then run Upgrade Status, fix what it finds, and let Composer do the rest.
Doing it now, in October, beats doing it in December when everyone else realizes the date is real. The full official guide is on drupal.org: How to upgrade from Drupal 10 to Drupal 11.
