Install

To start a new Drupal project with version 10.0.0-beta1@beta:

To update your site and all dependencies to the latest version of Drupal:

To update your site to this specific release:
Pinning to a specific release may make it more challenging to update your site in future, see composer documentation for managing pinned versions

Using Composer to manage Drupal site dependencies

Downloads

Download drupal-10.0.0-beta1.tar.gztar.gz 16.5 MB
MD5: 38ddbe9cda1b7a74aeec9586e77f3df6
SHA-1: 1de3b939ff382b0fae7b1a05e02eacb218fb04e2
SHA-256: 386efea8328b37f81b889d7ae68eb6d25b307743706cff8a156414ef6fd74812
Download drupal-10.0.0-beta1.zipzip 27.52 MB
MD5: a8f59902cfc058ff2624a221af6dc7ab
SHA-1: d42637b10d91d0e5ac42c2b0ed539a17714c746d
SHA-256: dd82635c07dde3404c59057777704138a42431248cd064a65549dc570599a0e4

Release notes

This is a beta release for the next major version of Drupal. Drupal 10 beta releases are intended for site owners and module or theme authors to test compatibility and upgrade paths for Drupal 10.0. Beta releases are not intended for production.

Refer to Preparing your site to upgrade to a newer major version for tools you can use to check the Drupal 10 compatibility of modules, themes, and sites. For more information on 10.0.x development, see #3118143: [meta] Release Drupal 10 on December 14... or 15... 2022.

The 10.0.x branch also includes all the latest commits that will be backported to 9.5.x and earlier branches. 10.0.x will be nearly identical to 9.5.x except that:

  1. Deprecated code will be removed, including entire deprecated modules.
  2. Dependencies will be updated to new major versions as appropriate.

For all other changes, refer to the 9.5.x branch.

Important update information

 

Sites should update to the latest release of 9.4 prior to updating to Drupal 10

Drupal sites running 9.3.x or earlier versions must first update to 9.4.0 or later prior to updating to Drupal 10, because all core updates added prior to 9.4.0 have been removed.
To ensure CKEditor data is upgraded to CKEditor 5 correctly, sites using CKEditor should update to Drupal 9.4.4 or higher prior to updating. In general, sites should update to the most recent release of their current major branch before updating to the next major release.

Changes to site-owner-managed files

  • Drupal\Component\Assertion\Handle will be deprecated in a future release. For this reason, example.settings.local.php has been updated to change the default assertion handling from:

    assert_options(ASSERT_ACTIVE, TRUE);
    \Drupal\Component\Assertion\Handle::register();
    

    to:

    assert_options(ASSERT_ACTIVE, TRUE);
    assert_options(ASSERT_EXCEPTION, TRUE);
    

    Site owners using settings.local.php for development sites should update their workflow with this change.

Platform requirements changes

PHP requirements

PostgreSQL requirements

Drupal 10's PostgreSQL database driver requires PostgreSQL12 with the pg_trgm extension enabled. A requirements error is now displayed when installing or updating a PostgreSQL site without this extension enabled.

SQLite requirements

Drupal 10's SQLite database driver requires SQLite 3.26 with the json1 extension. In Drupal 9.4, site owners will receive warnings if this extension is not available. In Drupal 10, Drupal cannot be installed or updated without the extension. (Refer to the change record for information on checking for JSON support with other computational database drivers.)

MySQL requirements

MySQL database server requirements are unchanged from Drupal 9. (More information on Drupal 10's database server requirements.)

Internet Explorer 11 is no longer supported

Internet Explorer 11 is not supported in Drupal 10 since CKEditor 5 does not support it. Other functionality already does not work in Internet Explorer 11, and more functionality will stop working in the future. See the browser support policy for more information.

Older versions of UC browser are no longer supported

Drupal has removed explicit support for older versions of UC Browser that relied on a forked version of Chrome. Newer versions of the browser that rely on WebView should be unaffected.

Composer 2.3.6 is required

Drupal 10 requires Composer version 2.3.6 or higher to support Automatic Updates and PHP 8.2. Core developers must update to at least Composer 2.3.6 to work on Drupal core, and site owners may also receive a warning or error about older Composer versions in the future.

Multiple core modules and themes have been removed from core and moved to contributed projects

Numerous modules and themes have been removed from Drupal core and moved to contributed projects. In many cases, the removed extensions have little to no impact on site development and can be removed from the site safely (or easily replaced with an alternative, such as using the Claro theme in place of Seven).

Sites that depend on a removed module or theme should download the contributed project version (either manually, or by requiring it with Composer) prior to updating their sites to Drupal 10. Drush may bypass warning and error messages on update.php related to missing modules or themes. The status report will display errors about missing modules after upgrading, but missing active themes will cause fatal errors and/or a white screen.

Removed modules

If a removed module is required for a site's functionality, the contributed version should be downloaded to the codebase or added to the Composer requirements prior to upgrading. Do not uninstall the module, since this would destroy the module configuration.

In addition to the below changes, some related CSS and templates have been removed from core base themes, so sites using the below modules may need to update their themes.

  • Aggregator

    The Aggregator module has been removed from Drupal 10 and is available as the Aggregator contributed module.

  • CKEditor 4

    The old CKEditor module (which integrates with CKEditor 4) has been removed from core in Drupal 10 and is replaced by a new "CKEditor 5" module that integrates with CKEditor 5.

    Sites should update to at least Drupal 9.4.4, and then enable the CKEditor 5 module and begin converting their text formats to use CKEditor 5. Go to Text Formats ⮕ Editors in the Drupal user interface to convert your text editors. Text formats must be updated one at a time, but switching the editor to "CKEditor 5" will automatically migrate your text format configuration to CKEditor 5.

    A contributed CKEditor 4 module is available. However, CKEditor 4 is reaching its end-of-life at the end of 2023. The contributed module will receive coordinated security releases alongside Drupal 9 core, and no other maintenance or bug fixes. Once Drupal 9 is end-of-life, core maintainers will no longer provide security coverage for the module. Therefore, sites should only use the CKEditor 4 module if they use contributed modules extending CKEditor that have not yet been updated to work with CKEditor 5.

  • Color

    The Color module has been removed from Drupal 10 and is available as a contributed module.

  • HAL

    HAL has been removed from Drupal 10.0 and moved to a contributed project. In most cases, sites should be converted to use JSON:API instead. More information on replacing HAL.

  • Quick Edit

    The Quick Edit module has been removed from Drupal 10 and moved to a contributed project. Most users do not use Quick Edit and it can usually be uninstalled safely. If you want to keep using this functionality, read the recommendations for Quick Edit.

  • RDF

    The RDF module has been removed from Drupal 10 and moved to a contributed project.
    RDF was previously installed as part of the standard install profile, but many sites do not use the functionality it provides. If you are not sure what RDF is, it is likely that you can safely uninstall it.
    If you want to keep using the functionality provided by RDF, read the recommendations for RDF.

  • Entity Reference (stub module)

    Entity Reference: If this module is installed on your site for some reason, simply uninstall it. (It is obsolete with no impact on site functionality.)

  • Migrate Drupal Multilingual (stub module)

    Migrate Drupal Multilingual: This functionality is now provided by the core Migrate Drupal module. If this module is installed on your site for some reason, simply uninstall it. (It is obsolete with no impact on site functionality.)

Removed themes

Even if you do not use the below themes directly, you should check whether your installed themes extend them. This information is available in the .info.yml file for the theme. For example, to see if themes/mytheme uses Classy as a base theme, check in themes/mytheme/mytheme.info.yml for this line:

base theme: classy

Base themes may extend other base themes, so if a non-core base theme is listed, you should also check whether or not that theme extends one of the below themes (especially Classy or Stable).

Composer integration changes

Composer 2.2 requires Composer projects to authorize individual plugins. This means that Composer commands to install and update Drupal projects will fail unless either the required plugins are allowed in the project configuration or the user manually replies y to a prompt to allow the plugin. Existing projects may need to update their configuration to authorize these plugins. This can be done by running the following commands:

composer config –no-plugins "allow-plugins.composer/installers" true
composer config –no-plugins "allow.plugins.drupal/core-composer-scaffold" true
composer config –no-plugins "allow-plugins.drupal/core-vendor-hardening" true
composer config –no-plugins "allow-plugins.drupal/core-project-message" true

For more information, review Composer 2.2+ authorized plugins.

API changes

Backend (PHP) dependency changes

Added PHP dependencies

  • Drupal core now has a direct dependency on the guzzlehttp/psr7 package (previously an indirect dependency) since it is used for the default implementation of several core services for PSR-17.

Removed PHP dependencies

The following dependencies have been removed from Drupal core:

Updated PHP dependencies

  • Drupal 10 requires Symfony 6.1. (Symfony 6.2 will be required prior to 10.0.0.) Additionally, symfony/http-foundation 6.1.3 is required to resolve a bug with destructable services. Several indirect dependencies have changed as a result of the Symfony 6 update.

    Additionally, the symfony/deprecation-contracts, symfony/event-dispatcher-contracts, symfony/service-contracts, and symfony/translation-contracts libraries have been updated from 2.5.2 to 3.1.1.

  • Twig has been updated from 2.x to 3.x. Review the Twig 3 changes for PHP developers and template creators.

  • psr/log has been updated to version 3. All the methods that are on \Psr\Log\LoggerInterface have stricter typehints. Contrib and custom modules that provide logger implementations will need to be updated for Drupal 10.

  • guzzlehttp/guzzle 7.5 and guzzlehttp/psr7 2.4 are now required.

  • egulias/email-validator has been upgraded to 3.2.1. Support for 2.1 is removed as the version is no longer supported by the upstream project.

  • asm89/stack-cors has been updated from version 1.3.0 to 2.1.1.

    Enabling CORS now preserves cacheability whenever possible.

    Previously, enabling CORS would add Vary: Origin to all requests of a different origin. With this change, enabling CORS will only add this if absolutely necessary.

  • psr/cache has been updated from 1.0.1 to 3.0.0, and psr/container has been updated from 1.1.1 to 2.0.2.

  • Drupal core's pinned Composer dependency versions have been updated for the latest minor and patch releases and, where appropriate, constraints have been increased to require the latest minor versions.

Frontend (CSS and JavaScript) dependency changes

Removed frontend dependencies

  • The public Backbone and Underscore core libraries have been removed, and the JavaScript dependencies are deprecated and for internal use only. Consequently, the drupal.editor.admin and drupal.filter.filter_html.admin libraries no longer depend on Underscore. Backbone and Underscore will eventually be removed from core.

    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.

  • Since Internet Explorer 11 is no longer supported, Drupal 10 deprecates all polyfill libraries in Drupal 10 and removes the files. Additionally, the details HTML tag is available in all supported browsers, so the supporting code that provided this element for Internet Explorer has been removed. If you plan to continue supporting Internet Explorer 11 even when used with Drupal 10, your project will have to depend on or implement any required polyfills directly.

  • The Farbtastic library has been removed from Drupal core. There is no replacement. Developers should consider using browser-native color pickers instead.

  • The jQuery Joyride third-party JavaScript library has been removed as a core dependency.

  • The third-party PopperJS JavaScript library has been removed as a core dependency. It was used only by Quick Edit, which has been removed from core. If you need to use it, you should define the library in a custom module.

Updated frontend dependencies

  • tabbable has been updated to 6.0.0.

  • The Shepherd.js JavaScript package has been updated to 10.0.1. Additionally, the public core library for this package has been deprecated. Shepherd.js should only be used internally by Drupal core.

  • jQuery has been updated from 3.6.0 to 3.6.1.

  • The internal version of Underscore has been updated from 1.13.3 to 1.13.4.

Development dependencies

  • The JavaScript ES6 build process has been removed given that all browsers supported by Drupal Core are now ES6-compatible. This means that once the build tooling is removed from Drupal 10, core developers are no longer required to run the commands when they make changes to core JavaScript. This also means that babel/core and all related dependencies are no longer used as core development dependencies.

  • Node.js is a required 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 with npm or yarn.

  • The PHPStan static analysis tool has been added to Drupal core's development dependencies and is run against all core patches and merge requests.

  • PHPUnit has been upgraded from 8.5.21 to 9.5.24, and all its sub-packages have been updated. PHPUnit 9.5 or higher is required, and PHPUnit 8 is no longer supported.

    phpspec/prophecy-phpunit and Mink 1.10 or later are also now required for PHPUnit.

  • Drupal 10 development now requires composer/installers version 2.0 or higher (up from version 1.9).

  • Drupal core's JavaScript and PHP development dependencies have been updated to the latest versions.

    Core developers should completely remove their node_modules directory and re-run yarn install from within the core/ directory.

  • The Nightwatch testing library has been updated to version 2.1.3. Reference the Nightwatch developer guide for a list of high level changes in the 2.0.0 release.

  • The Stylelint development dependency 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.

  • stylelint-config-standard, which enforces Drupal's CSS style, has been upgraded from 23.0.0 to 28.0.0. Developers who relied on this ruleset may have to make minor tweaks to their CSS to comply with the new standards.

  • cspell has been updated from version 5 to 6. This results in some slight changes to the dictionary for core development.

  • Chalk has been removed as a JavaScript development dependency.

  • glob has been updated from version 7.1.2 to 8.0.3.

  • PostCSS has been upgraded from 7.0.39 to 8.4.16. Developers who used custom PostCSS plugins may need to refer to the PostCSS 8 plugin migration guide.

  • eslint-plugin-yml, the YAML style checker for ESLint, has been upgraded from 0.14.0 to 1.2.0.

  • The jsdom development dependency has been updated from 18.1.1 to 20.0.0.

  • The ESLint JavaScript development dependency has been updated to version 8.9.0. core/.eslintrc.passing.json has been updated to reflect the new rules.

  • The Chromedriver JavaScript development dependency has been updated from 87.0.0 to 98.0.1.

Known issues

Search the issue queue for known issues.

All changes since Drupal 10.0.0-alpha7

What’s next?

  1. Learn how to install Drupal
  2. Learn how to update Drupal
  3. Extend Drupal to do more
  4. Get training
  5. Check out what others built
Created by: xjm
Created on: 16 Sep 2022 at 19:47 UTC
Last updated: 14 Dec 2022 at 20:18 UTC
Bug fixes
New features
Insecure

Other releases