Insights & Resources
Platform Operations

What Drupal 9 Actually Changed: A Reference for Institutional Operators

Drupal 9 was deliberately not a major architectural change from Drupal 8. The differences mattered operationally in specific ways that affected institutional upgrade planning.

4 min readMay 28, 2020

What Drupal 9 Actually Changed

Drupal 9 launched on June 3, 2020, after several years of preparation. Unlike previous major Drupal releases, the design philosophy explicitly avoided architectural disruption. Drupal 9 was deliberately Drupal 8 without the deprecated code, with updated underlying dependencies. The differences mattered operationally for institutional Drupal operators in specific ways. This post is a reference for what Drupal 9 actually changed and what it meant for federal agency, higher education, and nonprofit Drupal sites.

The Three Core Changes

Drupal 9 introduced three structural changes from Drupal 8.

Removal of deprecated code. Drupal 8's release cycle had been flagging code for deprecation since the 8.0 launch. Drupal 9 removed the deprecated code that had accumulated. The result was a cleaner codebase with smaller surface area, which made the platform faster, more maintainable, and easier to audit.

Updated underlying dependencies. Drupal had been built on Symfony 3.4 and Twig 1.x in Drupal 8. Drupal 9 upgraded to Symfony 4.4 and Twig 2.0. These third-party dependencies had their own end-of-life cycles, and Drupal's upgrade kept the platform on supported versions of its foundations.

A new continuous-improvement release model. Major releases (Drupal 9, then Drupal 10, then Drupal 11) were designed to be smooth in-place upgrades from the previous version's last minor release. The pattern of "major release equals re-platform" that had defined Drupal 7 to Drupal 8 was deliberately broken.

What These Changes Meant Operationally

For institutions running Drupal 8 on the latest minor version with deprecated code cleaned up, the upgrade to Drupal 9 was structurally a routine in-place upgrade. The version number changed; the operational character did not.

For institutions running older Drupal 8 minor versions or with deprecated code in custom modules, the upgrade required preparatory work before the upgrade itself. The Upgrade Status module flagged what needed cleanup; the Drupal-Rector tool automated some of the cleanup; the rest was manual code review.

For institutions running Drupal 7, Drupal 9's release did not change anything immediately. The Drupal 7 to Drupal 9 migration remained a re-platform regardless of which Drupal 9 minor version was the destination. We covered the strategic decision in The Drupal 7 vs Drupal 8 vs Wait-for-Drupal 9 Decision and the tactical checklist for the actual upgrade in Drupal 9 Readiness Checklist.

Modules Removed from Core in Drupal 9

A handful of modules that had been part of Drupal 8 core were removed from Drupal 9:

  • Panelizer (replaced by Layout Builder in core)
  • Color (deprecated as part of theming layer modernization)
  • Statistics (replaced by Google Analytics integration or contributed alternatives)

For institutions whose sites depended on these modules, the upgrade required either migration to the replacement (typically straightforward) or installing the contributed-version replacement. Most institutional sites we operated through the upgrade had Layout Builder migration as the most substantive change.

Contributed Module Compatibility

By the time Drupal 9 launched, the major contributed modules in active maintenance had Drupal 9 releases or Drupal 9 compatibility flagged in their info.yml files. The compatibility model was designed so that a single contributed module codebase could work on both Drupal 8 and Drupal 9 (with the deprecated code removed).

For institutional sites with twenty or more contributed modules, the upgrade preparation typically involved auditing each module's Drupal 9 status. Modules with active maintenance had compatibility ready; modules without active maintenance sometimes required forking, vendoring internally, or replacement.

What Stayed the Same

Drupal 9 did not change:

  • The content model and field API
  • The publishing workflow and editorial interface
  • The site configuration management approach
  • The theming layer's overall architecture (Twig was upgraded but the theme structure stayed the same)
  • The contributed module API (modules continued to use the same hooks and APIs they had used in Drupal 8)

For content editors and site administrators, Drupal 9 was indistinguishable from a current Drupal 8 deployment. The changes were under the hood.

What This Pattern Set Up for Future Releases

Drupal 9's design philosophy (in-place upgrade from the previous version, deprecated code cleanup, dependency refresh) became the template for Drupal 10 in 2022 and Drupal 11 in 2024. The major-release-equals-re-platform pattern that defined earlier Drupal upgrades was structurally retired.

For institutions, this changed the upgrade economics. Major version upgrades became scheduled maintenance work rather than multi-quarter projects. The institutions that stayed current with minor releases captured the benefit; the institutions that fell behind on minor releases discovered that the in-place upgrade still required cleanup work proportional to how far behind they were.

For managed Drupal hosting for government clients, this is the operational pattern we run: stay current with minor releases as part of routine operations, treat major version upgrades as scheduled work rather than special projects.

Frequently Asked Questions

Was Drupal 9 a meaningful upgrade from Drupal 8?

Operationally yes, even though the user-visible changes were minimal. The dependency refresh kept the platform on supported foundations. The deprecated code removal reduced the maintenance burden. The new release model set up smooth future upgrades.

What is the difference between Drupal 8 and Drupal 9 for content editors?

Effectively none. The editorial interface, the workflow, the content model, and the day-to-day editing experience were unchanged. Drupal 9's changes were in the codebase, not in the user-facing surface.

What is the difference between Drupal 9 and Drupal 10?

Drupal 10 (December 2022) followed the same pattern: dependency refresh (CKEditor 5, PHP 8.1+, Symfony 6), deprecated code removal, and continuous-improvement release model. We covered the Drupal 10 upgrade in detail in Drupal 10 Upgrade Checklist.

Should institutions still on Drupal 8 upgrade directly to Drupal 9 or wait?

Drupal 8 reached EOL in November 2021, so the question is now historical. Institutions still on Drupal 8 after EOL should plan migration to current Drupal (Drupal 11 as of mid-2024). The longer the deferral, the more accumulated migration work the institution faces.

Ready to take ownership of your platform?

Stop managing vendors. Start operating a platform.

We assess your current environment, identify operational gaps, and outline what a managed engagement looks like for your organization.

No commitment requiredResponse within 1 business dayTrusted by 100+ institutionsWe will not spam your inbox