Screencast: Updating to Drupal 9 in 15 minutes

Drupal 9.0.0-alpha1 came out yesterday! I decided to take it for a test drive by updating this very blog from Drupal 8 to Drupal 9. It was easier than I expected.

I started by doing a bit of preparatory housecleaning to make the update process easier. I recommend you do the same! Specifically I:

  • Updated to the latest version of Drupal 8
  • Updated all of my contributed modules to their latest versions
  • Removed all contributed modules that were not enabled, drush pm-list --status=disabled --no-core
  • Removed my require-dev dependencies from composer.json to reduce the possible version conflicts (I'll add them back in later)

Some background on the Drupal application that I updated:

  • Dependencies are managed by Composer
  • There are no custom modules (though I show you how to deal with them a bit)
  • There is a custom theme

Check out this video to watch me perform the update and troubleshoot issues as they arise:


  • Use Composer's alias capability to "trick" various modules into considering Drupal 9.0.0-alpha1 to be 8.8.2: "drupal/core": "9.0.0-alpha1 as 8.8.2", This allows you to test against contributed modules that may not be 100% Drupal 9 ready.
  • Use Acquia's Drupal 9 Deprecation Status page to quickly search for the Drupal 9 readiness status of contributed modules and find related issues and patches
  • Use cweagans/composer-patches to apply patches to contributed modules where necessary
  • Use Drupal Check to scan custom modules and themes for deprecated code usage
  • Clear caches, reload pages, fix issues, and repeat until things stop blowing up!

The process ended up being far smoother and faster than I had expected. Total time was actually a bit less than 10 minutes to get a working updated application locally.

By the time that we have a beta or stable release, I expect it to even better. For those of you following along at home, good luck!

Have you carried put any performance metrics for before and after the update?

Great video! I would note that drupal-check does not detect deprecated Twig syntax use and deprecated Drupal library use. So when you ran drupal-check on your theme, it really only parsed as much as the PHP code of the theme. See for an issue to introduce these features.

Until those are available in drupal-check, you can install and use it with drush. That has twig deprecated syntax checking and deprecated library checking, as well as core_version_requirement validation, etc. That said, funnily enough, Upgrade Status itself is not yet Drupal 9 compatible due to Drupal 8.8 deprecations involved. There is a patch for that too :D

Add new comment

Plain text

  • No HTML tags allowed.
  • Lines and paragraphs break automatically.