Install
To start a new Drupal project with version 9.4.0-alpha1@alpha:To update your site and all dependencies to the latest version of Drupal:
To update your site to this specific release:
Using Composer to manage Drupal site dependencies
Downloads
Release notes
This is an alpha release for the next minor (feature) release of Drupal 9. Alphas are good testing targets for developers and site builders who are comfortable reporting (and where possible, fixing) their own bugs. Alpha releases are not recommended for non-technical users, nor for production websites. More information on alpha releases.
This minor release provides new improvements and functionality without breaking backward compatibility (BC) for public APIs. Note that there may be changes in internal APIs and experimental modules that require updates to contributed and custom modules and themes per Drupal core's backwards compatibility and experimental module policies.
Drupal 9.4.x contains new features, and should be the target for new site development. Drupal 9.3.x will continue to have security support until December 2022. Security support for 9.2.x ends with the release of 9.4.0 on June 15, 2022.
Important update information
Updating from Drupal 8
For information on updating from Drupal 8 to Drupal 9, see Upgrading a Drupal 8 site to Drupal 9.
Upgrading from Drupal 6 and 7
Drupal 6 and 7 users can continue to migrate to Drupal 9.4 directly. The migration paths from Drupal 6 and Drupal 7 to Drupal 9 will remain supported throughout Drupal 9's release cycle.
Important changes for this release
-
Drupal 9.4's minimum PHP requirement has been increased from PHP 7.3 to 7.4. Sites on PHP 7.3 may still be installed and updated (with a warning), but their security coverage is not guaranteed unless they update to at least PHP 7.4. For more information, see the PHP requirements handbook page.
PHP 8.1 is now the recommended PHP version to use with Drupal 9.4 and above.
-
The root
.htaccess
file now has a section for PHP 8 settings. This brings .htaccess files into alignment with Drupal’s supported PHP version.If you have a custom
.htaccess
file and its PHP settings are working, you can keep using your existing.htaccess
file unchanged. If you are upgrading from PHP 7 to PHP 8, you should copy the custom settings that you need from the PHP 7 section to the PHP 8 section. -
Drupal core will begin warning in the status report if a database connection doesn't support JSON, in preparation for this becoming an installation requirement in Drupal 10.
API changes
-
ImageStyleStorageInterface
now extendsConfigEntityStorageInterface
. If you are directly implementingImageStyleStorageInterface
you will need to ensure you also implement methods fromConfigEntityStorageInterface
. Refer to the storage interface change record for more information.
Changes to the Standard and Umami Demo profiles
-
The Standard profile now use Olivero as a frontend theme instead of Bartik, and both Standard and the Umami Demo profile use Claro instead of Seven for the administrative theme. The default configurations for Bartik and Seven have been moved to the optional configuration. Standard and Umami now install with default configuration for Olivero and Claro according to core standards.
This change does not affect existing sites, but does affect new site installation where the new themes will be the defaults.
-
Standard profile will no longer enable the Color module when installed.
PHP Dependency updates
The following dependencies have been changed or updated since 9.3.
-
Drupal 10 will switch its PSR-17 implementation from
laminas/laminas-diactoros
to Guzzle. It should not be necessary to make any changes unless you are directly referencing Diactoros classes. If your project does depend directly on any Diactoros code (uncommon), you should make sure it is declared as a dependency in yourcomposer.json
or change the code to use Guzzle. -
Drupal core's pinned Composer dependency versions have been updated for the latest minor and patch releases.
JavaScript Dependency updates
Production dependencies
-
The Backbone and Underscore core JavaScript dependencies are deprecated and will no longer be provided as public core libraries in Drupal 10. Consequently, the
drupal.editor.admin
anddrupal.filter.filter_html.admin
libraries no longer depend on Underscore. Backbone and Underscore will eventually be removed from core, possibly prior to Drupal 10.0.0.Modules or themes which depend on these libraries should either refactor their code to remove the dependencies, or treat them as third-party dependencies for the contributed module.
Most Underscore functionality has simple replacements in modern ES6 JavaScript. Review the change record about the Underscore deprecation for more information on upgrading your code.
-
The latest minor versions of all JavaScript dependencies are now required by core yarn constraints. Additionally, the constraints have been changed to only allow patch-level updates for production dependencies. This allows yarn upgrades can be done easily and safely when there are security issues with the dependencies, without accidentally making disruptive updates to production dependencies.
The constraints will be deliberately increased as necessary for future updates and future Drupal minor versions.
-
The CKEditor 5 module now uses version 34.0.0 of the CKEditor 5 JavaScript library, which fixes several critical issues.
-
The CKEditor 5
ckeditor5.list
library has been updated to 34.0.1. -
Shepherd.js is updated to 9.0.0. According to its release note, there should be no breaking changes that affect our usage.
-
Popper.js has been updated from 2.11.2 to 2.11.5.
-
The deprecated Backbone and Underscore dependencies have received patch level updates: Backbone has been updated from 1.4.0 to 1.4.1, and Underscore has been updated from 1.13.2 to 1.13.3.
Development dependencies
-
Node.js is a development dependency for Drupal core. In Drupal 9 and 10, Drupal core's Node.js requirement has been updated from 12.0.0 to 16.0.0. (Information on changes in Node.js 16.) An updated version of Node.js can be installed directly or with
nvm
. This only affects sites that have installed Drupal core's JavaScript development dependencies withnpm
oryarn
. -
The Chromedriver JavaScript development dependency has been updated from 87.0.0 to 98.0.1.
-
Eslint is updated to 8.9.0.
core/.eslintrc.passing.json
has been updated to reflect the new rules. -
Stylelint has been updated to version 14, and minor changes have been made to whitespace and quoting in core CSS. Refer to the change record on the Stylelint 14 update for more information.
-
The
jsdom
development dependency has been updated from 18.1.1 to 19.0.0. -
All of Drupal core’s JavaScript development dependencies have been updated to the latest allowed minor and patch versions to address security issues in those dependencies. This should have minimal impact on contributed or custom code and CI workflows. Core developers should completely remove their
core/node_modules
directory and re-runyarn install
from within thecore/
directory.
Changed coding standards
-
JavaScript linting now uses eslint-config-airbnb-base instead of eslint-config-airbnb for linting core JavaScript. Anyone who uses core’s ESLint config to lint React or JSX code should add eslint-config-airbnb back to their yarn dev dependencies.
Known issues
Search the issue queue for known issues.