drupal 9.0.0-beta1 | Drupal.org
Skip to search
Can we use first and third party cookies and web beacons to
understand our audience, and to tailor promotions you see
drupal 9.0.0-beta1
Try a hosted Drupal demo
Install
To start a new Drupal project with version 9.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 tar.gz
16.02 MB
MD5:
f68e669e0a50859c2fce1a0da8455d8a
SHA-1:
874f4f28570cd581fcd1b53833db8bf53010abfb
SHA-256:
c2c07d8bc3c7416321c56bc69a8410e829f56d3bf08fe6674fb0915a0950d033
Download zip
27.09 MB
MD5:
1c6f318fa1dda286849b2a917f7d0812
SHA-1:
7fd10152a2f0ab0d803119fdf1533168284eb9e1
SHA-256:
31506d005cc23e4cf71ef8b3b494f016e3a9e7f62386ca9f344ba555be279dc1
Release notes
This is a
beta release for the next major version of Drupal
. Drupal 9 beta releases are intended for site owners and module or theme authors to test compatibility and upgrade paths for Drupal 9.0. Beta releases are not intended for production.
Refer to
How to prepare your Drupal 7 or 8 site for Drupal 9
for tools you can use to check the Drupal 9 compatibility of modules, themes, and sites. For more information on 9.0.x development, see
#3007300: [META] Release Drupal 9 on June 3 2020
The 9.0.x branch also includes all the latest commits that will be backported to 8.9.x and earlier branches. 9.0.x and 8.9.x have the same APIs and features. The key changes in 9.0.x are:
Deprecated code will be removed.
Dependencies will be updated to new major versions as appropriate.
Platform requirements (supported PHP and database versions) will be increased.
For all other changes, refer to the 8.9.x branch.
Important changes since 9.0.0-alpha2
For a full list of important changes in Drupal 9.0,
be sure to also read the
9.0.0-alpha1 release notes
and
9.0.0-alpha2 release notes
Server and database requirements
Drupal 9 requires PHP 7.3 or higher, and the version requirement for Apache has been increased to Apache 2.4.7 or higher. The following database versions are supported by Drupal 9 core:
MySQL or Percona 5.7.8.
MariaDB 10.3.7 (Note that this is a more recent release than the MySQL version.)
PostgreSQL 10 with the
pg_trgm extension
SQLite 3.26 (PHP 7.4 does not use the system-provided SQLite, so verify that your PHP is compiled with at least this version). Note that we are discussing lowering this back to 3.22; see the
known issues
section below.
contributed database driver
is available to provide support for older supported versions of MySQL, Percona, and MariaDB until their end of life. (A similar driver could be created for PostgreSQL 9.)
All identifiers (table names, database names, field names and aliases) are quoted in database queries. Column names or aliases should be wrapped in square brackets when using Connection::query(), db_query(), ConditionInterface::where() or SelectInterface::addExpression. Custom or contrib database drivers should read
All identifiers should be quoted in database queries
to see what changes are necessary.
Theme system improvements
A new
Stable 9
base theme has been added for backwards-compatible markup and assets
. Its templates and CSS files have been updated to match with the most recent versions in modules. Drupal 8's Stable theme will still be shipped in Drupal 9 along with Stable 9, but will be deprecated during the Drupal 9 lifecycle to be removed in Drupal 10.
Classy is no longer a base theme of core themes
. Work is underway to further decouple core themes from the Drupal 8 Stable theme. Once this work is complete, the core internal themes will directly receive bugfixes from module changes in minor releases (rather than developers having to copy the fixes into every theme).
Dependency updates
The normalize.css dependency has been updated from 3.0.3 to 8.0.1. Themes that are not extending Stable or Classy should manually test in case they need to update. Drupal 8's Stable theme will continue using normalize.css 3.0.3 for backwards compatibility. Read the
change record on the normalize.css upgrade
for more information.
Drupal is now using stable releases for behat/mink (1.8.0) and behat/mink-selenium2-driver (1.4.0).
Additional
Composer dependency versions have been updated since 9.0.0-alpha2
. (Note that Drupal core is incompatible with symfony/dom-crawler version 4.4.5, and this is reflected in the dependency's compatibility constraint.)
jQuery Cookie replaced by js-cookie
The
jquery.cookie
has been
replaced with js-cookie version 2
. The
core/js-cookie
library is introduced, and a backwards-compatible shim is provided as
core/jquery.cookie
for Drupal 9.
This also required removing jQuery Joyride's dependency on jQuery Cookie. If your site or module initializes Joyride manually,
read the change record about the change to Joyride
We may upgrade to js-cookie 3 if it is available before 9.0.0-rc1.
jQuery UI
The jQuery UI asset libraries not in use by Drupal core have been marked deprecated and have been removed from core in Drupal 9.
For a simple upgrade path to Drupal 9, see the
change record for information on how to use the provided contributed projects that provide replacements
for any modules or themes that depend on these deprecated asset libraries.
Since
jQuery UI itself is no longer actively supported
, it is recommended to find an alternative for the longer term.
Migration system improvements
A new 'complete node migration' is now available and will migrate all nodes and node revisions, including translated nodes and the translated node revisions. The complete node migration is named
d*_node_complete.yml
(where
is the major version, 6 or 7) will eventually replace the existing trio of node migrations,
d*_node
d*_node_revision
, and
d*_node_translation
. See
the change record on the complete node migration
for more information.
Upgrading from Drupal 8
Drupal 8 sites can update to Drupal 9 using update.php or drush. Updates will only run on sites that have already been updated to 8.8.0 or later, and we recommend updating from the latest patch release of Drupal 8.8 (or Drupal 8.9.x once that is out), as well as updating all contributed modules, before updating to Drupal 9. Although Drupal 9 is not yet ready for production, we encourage testing of the upgrade path with the beta release.
Even if you are not ready to begin upgrading to Drupal 9, if you are on 8.7.x or older Drupal versions, you should aim to get onto Drupal 8.8.x as soon as possible.
Note for users of the Experimental Workspaces module
Existing Drupal 8 sites using the experimental Workspaces module must update to at least Drupal 8.8.2 before updating to Drupal 9. (This is due to a required data integrity fix.) Remember that Workspaces is currently in beta status and is not intended for production.
Upgrading from Drupal 7
Drupal 7 users can continue to migrate to Drupal 8.8 and the forthcoming Drupal 8.9 release, updating to Drupal 9.0.x can then happen following its release.
The upgrade path for multilingual sites is stable in Drupal 9.0.0-beta1! It will also included in forthcoming releases of Drupal 8.9.x and Drupal 8.8.x.
Known issues
#3113992: The 'Update' page has no idea that some updates are incompatible
#3107155: Raise SQLite version requirement to 3.26 in Drupal 9
All changes since 9.0.0-alpha2
#3120954
by
tim.plunkett
czigor
: Add function name to the deprecation message about theme functions
#3118087
by
dww
JoshaHubbers
jungle
tedbow
RajabNatshah
Kingdutch
JonMcL
xjm
Nick Hope
wroehrig
wxman
broeker
mlozano7
kazajhodo
suit4
xmacinfo
BrightBold
: If any extension has a missing or invalid version, Update manager throws errors and is confused about site update status
#3119373
by
alexpott
BramDriesen
: Configuration synchronisation that both enables & configures a module fails and drupal_flush_all_caches()
#2550717
follow-up by
droplet
bnjmnm
tedbow
lauriii
: [JS] Replace jQuery.cookie with JS-cookie and provide a BC layer
Revert "Issue
#2550717
follow-up by
bnjmnm
tedbow
lauriii
: [JS] Replace jQuery.cookie with JS-cookie and provide a BC layer"
#2550717
follow-up by
bnjmnm
tedbow
lauriii
: [JS] Replace jQuery.cookie with JS-cookie and provide a BC layer
#474684
by
bnjmnm
dawehner
tedbow
pfrenssen
JohnAlbin
ademarco
kalpaitch
vdacosta@voidtek.com
rensingh99
markcarver
jungle
jhedstrom
RobLoach
almaudoh
kevineinarsson
shaal
dpagini
thedavidmeister
sreynen
Snugug
Miguel.kode
kamkejj
alexpott
Pol
sun
Wim Leers
lauriii
tim.plunkett
eaton
: Allow themes to declare dependencies on modules
#3117342
by
longwave
alexpott
: Update dependencies for Drupal 9
SA-CORE-2020-001 by lauriii, Wim Leers, catch
#3120124
by
effulgentsia
daffie
: Raise the minimum MariaDB version to 10.3(.7) in Drupal 9
#3103529
by
alexpott
mcdruid
Chris Burge
greg.1.anderson
rfay
anavarre
catch
Gábor Hojtsy
: Drupal 8.8.1+ and 9 can fail to install in the web browser due to cache pollution
#3118832
by
effulgentsia
alexpott
daffie
: Allow custom database drivers to extend and have the same name as the core ones
#3119910
by
mondrake
: Change hardcoded quote identifier in EntityQueryTest to square brackets
#3119847
by
jungle
dww
: Fix typos in InfoParserUnitTest and UpdaterTest doc comments
#3105925
by
kiamlaluno
: The description of the arguments for FieldDefinition::setDisplayOptions() conflicts with what reported in FieldDefinitionInterface::getDisplayOptions()
#3119445
by
kiamlaluno
Deepthi kumari
: The documentation comment for BanIpManager::__construct() says it constructs the BanSubscriber
#3115005
by
bnjmnm
: Remove fieldset CSS that was only there to work around a now-fixed Firefox bug
#3118581
by
kiamlaluno
: The documentation for Crypt::randomBytesBase64() is wrong about the output length
Issue #3105701 by
tedbow
xjm
Gábor Hojtsy
Krzysztof Domański
dww
Wim Leers
jungle
: Do not allow core: 9.x in info.yml files
#2999549
by
mtift
Daniel Korte
mherchel
alexpott
larowlan
: Allow button tag in LinkGenerator for better accessibility
#2550717
by
mradcliffe
bnjmnm
finnsky
Manuel Garcia
lauriii
longwave
tedbow
silesky
catch
xjm
droplet
johndevman
nod_
marassa
: [JS] Replace jQuery.cookie with JS-cookie and provide a BC layer
#2966856
by
Gábor Hojtsy
quietone
alexpott
vuil
catch
heddn
: Hide and disable Drupal Migrate Multilingual
Revert "Issue
#3103529
by
mcdruid
alexpott
Chris Burge
greg.1.anderson
rfay
anavarre
Gábor Hojtsy
: Drupal 8.8.1+ and 9 can fail to install in the web browser due to cache pollution"
#3078671
by
alexpott
Simon Peacock
greg.1.anderson
vuil
jungle
rodrigoaguilera
sam-elayyoub
mmjvb
karolrybak
catch
: Pin behat/mink and behat/mink-selenium2-driver to use resolvable release
#2986452
by
alexpott
andypost
kostyashupenko
daffie
kriboogh
larowlan
kristiaanvandeneynde
chrisrockwell
bleen
nevergone
: Database reserved keywords need to be quoted as per the ANSI standard. Also resolves
#3103529
by
mcdruid
alexpott
Chris Burge
greg.1.anderson
rfay
anavarre
Gábor Hojtsy
: Drupal 8.8.1+ and 9 can fail to install in the web browser due to cache pollution
#3114909
by
hchonov
ravi.shankar
alexpott
: Inconsistency between EntityTypeInterface ::getHandlerClass() and ::hasHandlerClass()
Revert "Issue
#3113403
by
Beakerboy
daffie
: Make Drupal\Core\Database\Query\Condition driver overridable"
#3113403
by
Beakerboy
daffie
: Make Drupal\Core\Database\Query\Condition driver overridable
#3114041
by
swatichouhan012
longwave
chr.fritsch
alexpott
mondrake
: PhpUnit 8 tests breaking because of compatibility issue with setUp()
#3113211
by
bnjmnm
lauriii
xjm
: Create test for theme asset decoupling from Stable and address any regressions that decoupling may cause
#2746541
by
quietone
alexpott
maxocub
Wim Leers
mikelutz
jofitz
masipila
firewaller
Madhura BK
Gábor Hojtsy
catch
heddn
plach
hchonov
: Migrate D6 and D7 node revision translations to D8
#2865416
by
owenpm3
swatichouhan012
neelam_wadhwani
cilefen
: Root README.txt installation profile section links to D7 docs
#3050374
by
bnjmnm
lauriii
alexpott
DyanneNova
xjm
: Create Drupal 9 stable theme
#3119017
by
Gábor Hojtsy
effulgentsia
catch
daffie
: Tests fail with MariaDB 10.2.7, but not 10.3.22
#3118477
by
mondrake
Mile23
: RegistryTest, RegistryLegacyTest both define the same class, use mock instead
#3078671
by
Simon Peacock
greg.1.anderson
vuil
alexpott
jungle
rodrigoaguilera
sam-elayyoub
mmjvb
karolrybak
: Pin behat/mink and behat/mink-selenium2-driver to use resolvable release
#3106666
by
catch
jungle
xjm
alexpott
tim.plunkett
Berdir
: Remove post updates added prior to 8.8.0
#3043471
by
longwave
catch
Wim Leers
xjm
: Replace the DiactorosFactory message factory in symfony/psr-http-message-bridge with a PSR-17 compliant message factory
#3118998
by
katherined
neelam_wadhwani
phenaproxima
effulgentsia
: Remove null default for $memory_cache in entity storage handler constructors
#3117558
by
alexpott
xjm
longwave
: 9.0.x core's hash in composer.lock is wrong
#3118439
by
kiamlaluno
: PrivateKey::__construct() describes itself as "Constructs the token generator."
#3010378
by
benjifisher
piotrkonefal
: BookManager::buildItems() is slow because it loads nodes
#2821525
by
bnjmnm
chrisrockwell
tedbow
alexpott
droplet
lauriii
DyanneNova
effulgentsia
xjm
joelpittet
Cottser
andrewmacpherson
: Update normalize.css to the most recent version
#3119027
by
Berdir
andypost
: Use filled dump for RestSettingsDeletionUpdateTest
#3098475
by
Berdir
catch
TravisCarden
xjm
benjifisher
alexpott
larowlan
webchick
dww
: Add more strict checking of hook_update_last_removed() and better explanation
#2917600
by
tedbow
alexpott
catch
anthonyf
xjm
andypost
Alan D.
moshe weitzman
Berdir
: update_fix_compatibility() puts sites into unrecoverable state
#3066801
by
catch
WidgetsBurritos
pobster
jungle
tim.plunkett
xjm
dww
alexpott
webchick
benjifisher
longwave
worldlinemine
lauriii
Berdir
: Add hook_removed_post_updates()
#3118958
by
lauriii
: Follow-up to
#3102724
: CSSLint failure
#3087130
by
alexpott
aleevas
rensingh99
andypost
chr.fritsch
DanielVeza
: Profile configuration should be able to depend on optional configuration provided by modules
#2846994
by
Gábor Hojtsy
jungle
andypost
daffie
swatichouhan012
xjm
catch
effulgentsia
bzrudi71
mradcliffe
TravisCarden
Mixologic
: Increase minimum version requirement for Postgres to 10 and require the pg_trgm extension
#3114079
by
johndevman
catch
Liam Morland
longwave
mr.baileys
alexpott
Charlie ChX Negyesi
: [policy, no patch] Update minimum supported Apache version to >= 2.4.7
#3117217
by
bnjmnm
lauriii
: Decouple core theme dependency on functions in stable.theme
#3118454
by
catch
andypost
xjm
Gábor Hojtsy
mradcliffe
mondrake
: Drupal\KernelTests\Core\Database\SelectTest fails on postgres 10
#3107155
by
catch
effulgentsia
andypost
xjm
daffie
Gábor Hojtsy
alexpott
mondrake
: Raise SQLite version requirement to 3.26 in Drupal 9
#3109534
by
TravisCarden
mondrake
effulgentsia
andypost
Gábor Hojtsy
catch
daffie
xjm
: Raise the minimum MySQL version to 5.7.8 and MariaDB version to 10.2.7 in Drupal 9
Revert "Issue
#3107155
by
effulgentsia
catch
daffie
Gábor Hojtsy
andypost
xjm
: Raise SQLite version requirement to 3.26 in Drupal 9"
#3118079
by
lauriii
bnjmnm
: Remove postcss-header workaround
#3115624
by
martijn.cuppens
jungle
JeroenT
greg.1.anderson
Mile23
: Scaffolding: Only add root files to gitignore
Revert "Issue
#3109534
by
TravisCarden
mondrake
andypost
Gábor Hojtsy
daffie
effulgentsia
xjm
: Raise the minimum MySQL version to 5.7 and MariaDB version to 10.2 in Drupal 9"
#3113556
by
tedbow
DamienMcKenna
bnjmnm
lauriii
: Change Views UI to use drupal.dialog instead of jquery.ui.dialog
#3117250
by
alexpott
longwave
: Update StringLoader and TestLoader for Twig 3 compatibility
#3116856
by
alexpott
Mile23
: Workaround PHPUnit 8 warnings
#3074585
by
mikelutz
alexpott
Berdir
Mile23
heddn
effulgentsia
Wim Leers
: [Symfony 5] Replace app.root and site.path string services with container parameters
#3117188
by
dww
Gábor Hojtsy
: Change @todo comment in core/modules/update/src/ProjectSecurityData.php to point to a better issue
#3003401
by
Sam152
: UpdatePathTestBase calls setDatabaseDumpFiles twice, resulting in duplicate fixtures in some scenarios
#3055197
by
mikelutz
: [Symfony 5] The "Goutte\Client" class extends "Symfony\Component\BrowserKit\Client" that is deprecated since Symfony 4.3, use "\Symfony\Component\BrowserKit\AbstractBrowser" instead
#3108416
by
catch
amateescu
alexpott
xjm
: Remove workspace_update_8803()
#3107155
by
effulgentsia
catch
daffie
Gábor Hojtsy
andypost
xjm
: Raise SQLite version requirement to 3.26 in Drupal 9
#3109534
by
TravisCarden
mondrake
andypost
Gábor Hojtsy
daffie
effulgentsia
xjm
: Raise the minimum MySQL version to 5.7 and MariaDB version to 10.2 in Drupal 9
What’s next?
Learn how to install Drupal
Learn how to update Drupal
Extend Drupal to do more
Get training
Check out what others built
Created by:
xjm
Created on: 20 Mar 2020 at 19:30 UTC
9.0.0-beta1
Bug fixes
Insecure
Unsupported
Other releases
9.5.11
20 September 2023
9.5.10
5 July 2023
9.4.15
3 May 2023
9.5.9
3 May 2023
9.4.14
19 April 2023
9.5.8
19 April 2023
9.5.7
24 March 2023
9.4.13
24 March 2023
9.5.6
24 March 2023
9.4.12
15 March 2023
9.5.5
15 March 2023
9.5.4
1 March 2023
9.4.11
1 February 2023
9.5.3
1 February 2023
9.4.10
18 January 2023
9.5.2
18 January 2023
9.5.1
4 January 2023
9.5.0
15 December 2022
9.5.0-rc2
9 December 2022
9.4.9
7 December 2022
9.5.0-rc1
16 November 2022
9.4.8
6 October 2022
9.5.0-beta2
29 September 2022
9.4.7
28 September 2022
9.3.22
28 September 2022
9.4.6
20 September 2022
9.5.0-beta1
16 September 2022
9.4.5
3 August 2022
9.3.21
3 August 2022
9.4.4
28 July 2022
9.3.20
28 July 2022
9.3.19
20 July 2022
9.4.3
20 July 2022
9.3.18
8 July 2022
9.4.2
7 July 2022
9.3.17
21 June 2022
9.4.1
21 June 2022
9.4.0
15 June 2022
9.4.0-rc2
10 June 2022
9.2.21
10 June 2022
9.3.16
10 June 2022
9.4.0-rc1
9 June 2022
9.3.15
1 June 2022
9.4.0-beta1
30 May 2022
9.2.20
25 May 2022
9.3.14
25 May 2022
9.2.19
11 May 2022
9.3.13
11 May 2022
9.4.0-alpha1
6 May 2022
9.5.x-dev
29 April 2022
9.3.12
20 April 2022
9.2.18
20 April 2022
9.2.17
14 April 2022
9.3.11
14 April 2022
9.3.10
13 April 2022
9.3.9
21 March 2022
9.2.16
21 March 2022
9.2.15
16 March 2022
9.3.8
16 March 2022
9.2.14
11 March 2022
9.3.7
3 March 2022
9.2.13
16 February 2022
9.3.6
16 February 2022
9.2.12
4 February 2022
9.3.5
4 February 2022
9.3.4
2 February 2022
9.2.11
19 January 2022
9.3.3
19 January 2022
9.3.2
5 January 2022
9.3.1
5 January 2022
9.3.0
8 December 2021
9.3.0-rc1
26 November 2021
9.1.15
24 November 2021
9.2.10
24 November 2021
9.3.0-beta3
24 November 2021
9.3.0-beta2
18 November 2021
9.1.14
17 November 2021
9.2.9
17 November 2021
9.3.0-beta1
12 November 2021
9.2.8
3 November 2021
9.4.x-dev
29 October 2021
9.3.0-alpha1
29 October 2021
9.2.7
6 October 2021
9.1.13
15 September 2021
9.2.6
15 September 2021
9.2.5
1 September 2021
9.1.12
12 August 2021
9.2.4
12 August 2021
9.2.3
3 August 2021
9.1.11
21 July 2021
9.2.2
21 July 2021
9.2.1
7 July 2021
9.2.0
16 June 2021
9.2.0-rc1
7 June 2021
9.1.10
4 June 2021
9.2.0-beta3
28 May 2021
9.2.0-beta2
26 May 2021
9.1.9
26 May 2021
9.0.14
26 May 2021
9.2.0-beta1
20 May 2021
9.2.0-alpha1
6 May 2021
9.0.13
5 May 2021
9.1.8
5 May 2021
9.3.x-dev
1 May 2021
9.0.12
21 April 2021
9.1.7
21 April 2021
9.1.6
7 April 2021
9.1.5
4 March 2021
9.1.4
3 February 2021
9.0.11
20 January 2021
9.1.3
20 January 2021
9.1.2
7 January 2021
9.1.1
7 January 2021
9.0.10
3 December 2020
9.1.0
2 December 2020
9.0.9
26 November 2020
9.1.0-rc3
26 November 2020
9.1.0-rc2
25 November 2020
9.0.8
18 November 2020
9.1.0-rc1
18 November 2020
9.1.0-beta1
6 November 2020
9.1.0-alpha1
23 October 2020
9.2.x-dev
16 October 2020
9.0.7
7 October 2020
9.0.6
16 September 2020
9.0.5
3 September 2020
9.0.4
2 September 2020
9.0.3
5 August 2020
9.0.2
8 July 2020
9.0.1
17 June 2020
9.0.0
3 June 2020
9.0.0-rc1
22 May 2020
9.0.0-beta3
16 May 2020
9.0.0-beta2
30 March 2020
9.0.0-beta1
20 March 2020
9.0.0-alpha2
4 March 2020
9.0.0-alpha1
11 February 2020
9.1.x-dev
10 October 2019
9.0.x-dev
10 October 2019
View usage statistics for this release
Infrastructure management for Drupal.org provided by
Need a Drupal 7 extended support partner? Consider Tag1.
News items
News
Planet Drupal
Social media
Sign up for Drupal news
Security advisories
Jobs
Our community
Community
Services
Training
Hosting
Contributor guide
Groups & meetups
DrupalCon
Code of conduct
Documentation
Documentation
Drupal Guide
Drupal User Guide
Developer docs
API.Drupal.org
Drupal code base
Download & Extend
Drupal core
Modules
Themes
Distributions
Governance of community
About
Web accessibility
Drupal Association
About Drupal.org
Drupal is a
registered trademark
of
Dries Buytaert