Mike Barkas

Software and DevOps

Mike Barkas

Mike Barkas

Software and DevOps

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:

    DatabaseMinimum
    MySQL8.0
    MariaDB10.6
    PostgreSQL16 (with pg_trgm)
    SQLite3.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 ^11 to core_version_requirement in your custom .info.yml files.

  • 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 .htaccess and robots.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.yml
    
  • Require 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-update
    

    If drupal/core is listed directly in composer.json, remove it with composer remove drupal/core --no-update. Drupal 11.4 also needs composer config allow-plugins.symfony/runtime true.

  • Do a dry run, then update:

    composer update --dry-run
    composer update
    

    If 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:rebuild
    
  • Put the permissions back:

    chmod 755 web/sites/default
    chmod 644 web/sites/default/*settings.php
    chmod 644 web/sites/default/*services.yml
    
  • Reapply 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 cron and 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_status
    
  • Deploy, 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.