Support for Drupal 7 is ending on 5 January 2025—it’s time to migrate to Drupal 10! Learn about the many benefits of Drupal 10 and find migration tools in our resource center.
Install
To start a new Drupal project with version 8.9.2: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-8.9.2.tar.gztar.gz
18.86 MB
MD5: f3f64fbef97831efd1c943f392975f45
SHA-1: e865fdba31fe4950bd8bad19eb5b3bddbdc44635
SHA-256: 59d0086d5d96a3aaf1a3c578f9d5d2530020f8adbf109bb1d11912a3fc8fa8df
Download drupal-8.9.2.zipzip
30.21 MB
MD5: d4156b706aa9d90e9a23425dce5c915b
SHA-1: 6ac25e57d7f8bf5f58d2d79ebe3d9aa82d89d126
SHA-256: fb1220cc6236a2e4925dfebfb0091f9b34990bf997e4d9eb52a00ba71d354fb0
Release notes
This is a patch (bugfix) release of Drupal 8 and is ready for use on production sites. Learn more about Drupal 8.
Drupal 8.9 is the final minor release of the 8.x series. It is a long-term support (LTS) version, and will receive security coverage until November 2021. It provides the same public API as Drupal 9.0 aside from deprecated code and dependency changes. (Learn more about Drupal 9.)
If you are upgrading to this release from 8.8.x, read the Drupal 8.9.0 release notes before you upgrade.
Known issues
Search the issue queue for known issues.
All changes since Drupal 8.9.1
- Issue #2914785 by acbramley, jungle, Hardik_Patel_12, mrinalini9, larowlan: Entities with external urls as a uri relationship can not be deleted when menu_link_content is installed
- Issue #3149930 by Lendude, ravi.shankar, Bobík, dww, joaomachado, alexpott, lauriii: Views table settings exposes "Details" field even when empty
- Issue #3152003 by Beakerboy, sanjayk, alexpott, daffie: EndOfTransactionQueriesTest does not include bootstrap.inc early enough for contrib database drivers
- Issue #3027763 by quietone, LiamPower, pratik_kamble: UnroutedUrlAssembler removes query params array item key in buildExternalUrl()
- Issue #3144046 by Matroskeen: Incorrect example of adding Cache metadata in hook_menu_local_tasks_alter()
- Issue #3144354 by alexpott, vijaycs85, andypost: ModuleInstaller loads .module and .install before allowing classes to autoloaded
- Issue #2834525 by alexpott, kim.pepper, jummonk, joshua.roberson, Ruuds: Permission denied caused by race condition during ensureDirectory should be silenced
- Issue #3151520 by adityasingh, pavnish, daffie, alexpott: Replace the database query with an entity query in UserInstallTest
- Issue #2120877 by quietone, BryanGullan, duellj, jibran, miro_dietiker, dags: Add tests for tracker module's Tools menu link
- Issue #2898947 by rajandro, jungle, ankit.singh, AkashkumarOSL, Lal_, shimpy, Saurabh_sgh, markdorison, gnikolovski, jordanwood, librarylasso, Swapnil_Kotwal, mrinalini9, chiranjeeb2410, codersukanta, daffie, xjm, alexpott, mmjvb, mparker17, MaskyS, larowlan, quietone: Change "writeable" to "writable" in documentation
- Issue #3145930 by bnjmnm, lauriii, msuthars, nod_: Tableheader should recalculate on toolbar tray toggle
- Issue #3154461 by Hardik_Patel_12: Removing getFormObject call from UserAccountFormFieldsTest
- Issue #3116147 by idebr, tim.plunkett: Remove @todo pertaining to RequestHelper::duplicate(), which has been removed
- Issue #3138796 by jungle, mohrerao, sja112, kkalashnikov, xjm, ketikagrover: Fix the typos "cotrol" and make the one-line summaries containing it conform to standards)
- Issue #3154611 by jungle, xjm, longwave: Update composer.lock for 9.0.x and 8.9.x based on Composer 1.10 availability
- Issue #3146474 by shaktik, kiamlaluno: Remove Unused variable $next from AggregatorController.php file
- Issue #3154533 by jperk224, jungle: Fix "Drupal" typos in core
- Issue #3028621 by jungle, John Cook: BatchBuilder included files fails
- Issue #2904467 by quietone, andyg5000: Plugins do not preserve integer keys when parsing annotations
- Issue #3149799 by mxr576, jungle: BasicAuth::authenticate() does not respect the implemented interface
- Issue #3154203 by jungle: Fix "appear" typos in core
- Issue #3150731 by andypost, Beakerboy, kim.pepper: FileSystemModuleDiscoveryDataProviderTrait needs to use DIRECTORY_SEPARATOR
- Issue #3138788 by jungle, sja112, xjm: Fix "autcomplete" typos in core
- Issue #3138791 by jungle, sja112, xjm, mohrerao: Fix "bubbleable" relevant typos in core
- Issue #3143316 by Lendude, sunset_bill, alexpott, daffie, xjm, facine: "Getting the base fields is not supported for entity type" exception in ViewsConfigUpdater
- Revert "Issue #3143316 by Lendude, sunset_bill, daffie, xjm, facine: "Getting the base fields is not supported for entity type" exception in ViewsConfigUpdater"
- Issue #3143316 by Lendude, sunset_bill, daffie, xjm, facine: "Getting the base fields is not supported for entity type" exception in ViewsConfigUpdater
- Issue #3150471 by durgeshs, joachim: incorrect constant in docs for DoTrustedCallbackTrait::doTrustedCallback()
- Issue #3151091 by dww, rik-dev, alexpott: Replace use of whitelist/blacklist in \Drupal\Component\Utility\Xss and its test and core/lib/Drupal/Core/Render/theme.api.php
- Issue #3097540 by imganesh, boulaffasae, antoineh, sauravk, KondratievaS, atul4drupal, lauriii, Neetika K, Devipriya Rajamanickam: The 'M' of Machine name overlaps with the green border around text box
- Issue #3133033 by munish.kumar, xjm, Hardik_Patel_12, daffie, swatichouhan012: Fix Drupal.Array.Array.LongLineDeclaration coding standard for instances of the drupalCreateUser() test method
- Issue #3153677 by xjm: Lockfile hash is wrong in 8.9.x since 8.9.1, causing test failures on PHP 7.3+
- Issue #3143196 by DevJoJodae, himanshu_sindhwani, nitvirus, alexpott, sykesjs, jungle: Change the download link in CHANGELOG.txt to Drupal 9
- Issue #3072305 by jungle, andypost, thursday_bw, longwave, larowlan: Notice: Undefined index: #item in user_user_view_alter()
- Back to dev.
- Merged 8.9.1.
- Issue #3139414 by cburschka, mohrerao, pavnish, jungle, ravi.shankar, daffie, mondrake, sja112: Replace usages of deprecated AssertLegacyTrait::assert(No)Link()
- Issue #3150474 by jungle, munish.kumar: Inaccurate return type of \Drupal\views\Views::getView()
- Issue #3139402 by mondrake, sja112, xjm: Replace usages of AssertLegacyTrait::assertIdenticalObject(), which is deprecated
- Issue #2673688 by himanshu_sindhwani, kkalashnikov, atul4drupal, Saurabh_sgh, walangitan, andypost, markdorison, Bunty Badgujar, xjm, catch: Remove remains of hook_field_schema()
- Issue #2947588 by mrinalini9, borisson_, shaktik, andypost, daffie, joachim, Lendude: Refactor \Drupal\Tests\views\Kernel\ModuleTest::testViewsGetHandler
- Issue #3150661 by cburschka: FileFieldRSSContentTest uses XPath incorrectly
- Issue #2937513 by longwave, eltori, klausi, catch, idebr, xjm: Fix 'Drupal.Commenting.DocComment.TagGroupSpacing' coding standard
- Issue #3142752 by sja112, mondrake, xjm, longwave: AssertLegacyTrait::assert(No)Escaped() in functional tests still have a message passed in
- Issue #3137430 by TR, jungle, alexpott: label_collection is defined twice in BlockContentType entity annotation
- Issue #3139422 by sja112, jungle, akanksha-hp, mondrake, xjm: Replace usages of deprecated AssertLegacyTrait::assertOptionByText()
- Issue #3139132 by Beakerboy, daffie: Query uses hardcoded LIMIT instead of queryRange()
- Issue #2946750 by Sam152, merauluka, timmillwood, catch: Node revisions forced even if bundle not under moderation workflow
- Issue #3020387 by Sam152, luisnicg, bahuma20, jungle: Moderation state is the same for all node's translations in edit page
- Issue #3151087 by rik-dev, dww, alexpott, Matroskeen: Replace use of whitelist/blacklist in file_munge_filename() and its tests
- Issue #3127918 by jungle, longwave: Add funding info in composer.lock
- Issue #3150990 by cburschka: Updater::install() crashes on file transfer exceptions