Drupal 9.4.0 was released on June 15, bringing us some highly anticipated updates. We discussed some of these latest improvements—and some other ones still in development—in an article about how to get ready for Drupal 10, scheduled to be released in December. Here, we'll roll out what's available for developers right now with the launch of Drupal 9.4.0.

Default Front-End Theme: Olivero

The most accessible Drupal theme to date, Olivero is WCAG AA compliant right out of the box. It uses a design system carefully designed to be both accessible and beautiful, with a simple, high-contrast colour palette, ample whitespace, and sparing use of effects like drop shadows and gradients. The Olivero theme is also built for optimal compatibility with Drupal's current site building features.

Olivero is named after Rachel Olivero, who passed away in 2019 at the age of 36. Rachel was a long-time member of the Drupal community, bringing her expertise and advocacy for technology accessibility from her work with the National Federation of the Blind and her life experience.

A New Default Back-End Theme: Claro

Site builders, administrators, and content creators get a shiny new theme as well. Claro is now stable and officially the default theme for the Drupal admin.

The Claro admin theme uses a new design system created to be user-friendly and significantly more accessible than prior themes. It is visually simple and features a high-contrast colour palette, minimalist iconography, and carefully designed visual cues emulating physical properties like depth and shadows.

New Experimental Starterkit Theme and Generator

It's here! The new Starterkit theme and theme generator is now available on an experimental basis in Drupal core.

The Starterkit theme is essentially the same as Classy and provides the same markup to get themers started. The Starterkit theme generator, however, marks a major shift in how Drupal themes work in production.

Historically, we've started with a base theme, like Classy, and created a subtheme to run on top of that with our customizations. At runtime, the production theme would grab the code from the base theme and add its own modifications. That gave us the benefit of letting the base theme do the heavy lifting of Drupal-specific markup, basic responsiveness, and other infrastructure, while our subthemes provided our unique design and functionality.

The drawback of this approach, however, is that any change to the base theme risks creating errors in subthemes. This risk has resulted in stagnation between major versions, due to an inability to make iterative changes to base themes like Classy.

With the Starterkit theme generator, an independent copy of the base theme is created to serve as a starting point for the custom theme. By removing runtime inheritance, the core Starterkit theme can be updated with minor releases without the risk of disrupting production themes.

UI Performance Boost: Lazy Image Loading

At long last, Drupal core includes an image field configuration option for lazy loading. If you are not familiar with lazy loading, it means that instead of all the images on an entire page loading at once, images further down the page only load when and if they are needed.

With lazy loading, an image-heavy page is ready to use much more quickly than it would be if all images were loaded at once. This improves engagement and makes pages more accessible to users relying on slow, unreliable, or expensive data connections.

Pain Relief: Easier Permissions Management

Administrators can now configure permissions in-context for content types, vocabularies, and other entity bundles via a "Manage permissions" tab. Previously, they had to go into the sitewide Roles and Permissions, causing potential confusion and errors.

Better Security: Patch-Level Composer Dependency Updates

With Drupal 9.4, site owners using drupal/core-recommended are now able to apply patch-level updates for Composer dependencies. This allows them to apply Composer dependency security updates as they are released, rather than waiting for an update to Drupal core.

This is accomplished with a small change to the code in drupal/core-recommended, which now allows patches to be installed until they reach the next minor version. For example, a dependency constraint set to a patch version 3.2.6 can now be updated through 3.2.9 without waiting for a new Drupal core release.

It's Time to Get Your Migration Going

If you're still running on Drupal 7, you are missing out on the best Drupal has to offer. Today's Drupal is more flexible, more secure, more accessible, more user-friendly, and much more powerful than the Drupal of 2011. Also, Drupal 7 end of life is closing in, so migrating now is the best way to go to ensure your Drupal-based websites are fully supported.

However, we know migrating can be a daunting task, so we're here to help. Check out a few resources to help you get started!

👩‍💻 Still think you need support for your Drupal migration? Get in touch!