Drupal 11: The Upgrade Experience I've Been Waiting For

Image
Laptop showing upgrade to Drupal 11, coffee mug on desk.

Blog Categories

Recently I upgraded this site from Drupal 10 to Drupal 11. While I've been through my share of Drupal upgrades over the years, this one stood out for a different reason: it was surprisingly straightforward.

Like many Drupal site owners, I started with the Upgrade Status module. Before touching core, I wanted a clear picture of what needed attention. Upgrade Status did exactly what it was designed to do, identifying deprecated code and highlighting modules that weren't quite ready for Drupal 11.

One of the first things I ran into was Drupal 11.3's requirement for PHP 8.4. A few contributed modules I rely on, including Cloudflare and Mailgun, had compatibility issues that needed to be resolved before moving forward. Fortunately, active issue queues already existed for both projects:

I also took the opportunity to address a future problem. My site was still using Drupal core's Contact module. Since the Contact module will be deprecated in Drupal 11.4 and is scheduled for removal in Drupal 12, I decided now was the right time to move away from it. The migration itself was straightforward, although I did run into an issue while uninstalling the Contact Storage module:

Contributed module compatibility ended up being the biggest hurdle in the entire process. Over time, I had already worked around several Drupal 11 readiness issues using patches or by adopting more modern alternatives. However, one remaining blocker was the Juicer.io module. I had spent some time contributing to the Drupal 11 compatibility issue queue and was planning to dig in further when time allowed:

Then something unexpected happened.

Before I could continue the work myself, the team behind Juicer released an official Drupal module with support for Drupal 10 and Drupal 11:

That immediately gave me a supported upgrade path and removed one of the last major obstacles standing between my site and Drupal 11. Migrating to the new module ended up unblock the entire upgrade project.

There was one final dependency to address. Upgrade Status indicated that I needed to update Webform to version 6.3.0-rc1 in order to achieve full Drupal 11 compatibility. Once that was complete, Upgrade Status finally reported 100%.

At that point, it was time for the easy part (fingers crossed).

With the contrib module ecosystem ready, I followed the official Drupal.org guide for upgrading from Drupal 10 to Drupal 11:

https://www.drupal.org/docs/upgrading-drupal/upgrading-drupal/how-to-upgrade-from-drupal-10-to-drupal-11

After updating Drupal core, running database updates, and clearing caches, my site was running Drupal 11.3.

Looking back, the most interesting part of this upgrade is how unremarkable the core upgrade itself was. The majority of the work involved ensuring contributed modules were ready and cleaning up a few technical debt items along the way. Once those pieces were in place, the actual Drupal upgrade was smooth and predictable.

That's a very different experience from some of the major upgrades I've done in the past, and it's a welcome change. In many ways, this felt like the upgrade experience Drupal has been working toward for years. Dare I say it was easy.

If this is what Drupal 11 upgrades look like, I'm excited for Drupal 12 and future releases. The combination of Upgrade Status, a healthy contrib ecosystem, and a commitment to good documentation made this one of the least stressful Drupal upgrades I've completed.

This site has grown alongside Drupal through many major releases. After an upgrade experience like this, I'm excited to keep it up to date and see what future versions of Drupal have to offer.

💡 Note: ChatGPT was used to assist in the writing of this article. Its contents have been vetted by me and the thoughts, statements, facts and figures within are my own. Thanks for reading!