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 10.2.3: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.2.3.tar.gztar.gz
18.08 MB
MD5: 23000d148f8ea3a1874566491a96ca37
SHA-1: cae354ef3d65c1883ca404271523e1e66e53155c
SHA-256: 099218fc41e35dd1781acca39998dd841878cfa08a7fe0d630eed210413ddb0f
Download drupal-10.2.3.zipzip
29.9 MB
MD5: 0c443d25194cd1b2f5e5aa3fe4f2700c
SHA-1: 1a5daf43848e9d79b4272d30c31169bf43e4ac63
SHA-256: 711e5cfc07ac0953f0f62f9544025e0e7fdf016e48f69dd67d1dbd5e50d2881c
Release notes
This is a patch (bugfix) release of Drupal 10 and is ready for use on production sites. Learn more about Drupal 10.
Drupal 10.2.x will receive security coverage until December 2024.
Important update information
-
If you are updating from Drupal 9, 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. Then, upgrade from Drupal 9 to 10. You should also check the Drupal 10.0.0 release notes.
All changes in this release
- Issue #3377269 by _tarik_, ReINFaTe, smustgrave, bbrala: Warning: Undefined array key "id" in Drupal\jsonapi\ControllerntityResource->patchIndividual()
- Issue #2820411 by Akhil Babu, smustgrave, larowlan, joachim, quietone: Improve the exception message when an entity handler class does not exist
- Issue #3414349 by deviantintegral, taraskorpach, alexpott, smustgrave, catch: Improve the performance of \Drupal\Core\Update\UpdateRegistry::getRemovedPostUpdates()
- Issue #3101344 by Akhil Babu, Alex Bukach, ravi.shankar, quietone, agentrickard, kriboogh, allaprishchepa, flyke, Mschudders, rgpublic, smustgrave, borisson_: hook_node_grants implementations lead to a 'URL Alias' validation error when saving translated nodes
- Issue #3419271 by catch: Only run the performance tests once each in performance test runs
- Issue #3418207 followup by longwave, fjgarlin: Spell-checking job fails with "couldn't find remote ref refs/heads/11.x" when 11.x branch does not exist in fork
- Issue #3408913 by Lillian Bozeman, Tim Bozeman: Olivero views front page template missing dom_id
- Issue #2481349 by mfb, dagmar, jofitz, smustgrave, vasi, neclimdul, ziomizar, quietone, _utsavsharma, littlepixiez, xjm, fgm, Todd Zebert, hass, dawehner, heddn, webchick, catch: Prevent the use of placeholders that cannot be converted into strings when creating logs
- Issue #3411403 by bradjones1: pgsql module's NonPublicSchemaTest can fail in non-CI environments
- Issue #3407360 by alexpott, xjm, longwave, quietone, smustgrave, mstrelan: Commit check script: nproc does not exist on Darwin
- Issue #3247040 by _shY, quietone, smustgrave, joachim: MigrateSkipRowException should document that it is for use within migration process plugins
- Issue #3375406 by Akhil Babu, vaibhav_arora, shweta__sharma, Harish1688, Gauravvvv, Indrapatil, smustgrave: The 'Name' field in the Add form mode is required, even though it lacks any indication of being mandatory
- Issue #3417365 by kristiaanvandeneynde, smustgrave: Properly set current_user service in tests
- Issue #3416074 by catch, longwave: UpdatePathTestBaseFilledTest is mostly pointless
- Issue #3415296 by catch, sudhakartag1, smustgrave: Use a dedicated runner for performance tests
- Issue #3412959 by quietone, smustgrave, longwave: Fix 12 'un' words
- Issue #3407793 by mstrelan: Add declare(strict_types=1) to all miscellaneous test classes
- Issue #3412464 by mstrelan, smustgrave, quietone: Fix strict type errors: Convert FormattableMarkup to strings (complex replacement) in core Functional tests
- Issue #3417985 by viren18febS, pooja saraah, joachim, longwave, smustgrave: Correct \Drupal\Core\DependencyInjection\Container doc
- Issue #3415412 by dww, gorkagr, acbramley, mstrelan: Field type plugin description is assumed to be an array
- Issue #3418691 by Kingdutch, dww, ronaldtebrake: ckeditor5 module has an invalid config schema which causes POTX to fail
- Issue #3076054 by godotislate, joaopauloc.dev, smustgrave, nod_, nayana_mvr, larowlan, alexpott, lauriii, quietone, benjifisher, anup.singh, bnjmnm: Existing field items should not be validated when adding another item in widget for unlimited cardinality field
- Issue #3418207 by longwave, fjgarlin, acbramley, mondrake, neclimdul: Spell-checking job fails with "couldn't find remote ref refs/heads/11.x" when 11.x branch does not exist in fork
- Issue #3383131 by WalkingDexter, xjm, allisonherodevs, ashley_herodev, pradhumanjain2311, smustgrave, marcoliver, lauriii: Entity autocomplete form element ignores entities with label "0"
- Issue #3415004 by catch, Spokje: Reevaluate the break-up of the various testsuites on GitLab
- Issue #2885351 by Nikolay Shapovalov, paulocs, clemens.tolboom, larowlan, dcam, mrshowerman, smustgrave, alexpott, borisson_: Query string duplications
- Issue #2885098 by philipnorton42, gapple, ksbuble, MerryHamster, Suresh Prabhu Parkala, joelpittet, vsujeetkumar, amjad1233, bakulahluwalia, mohit1604: Node RSS Views plugin causes wrong entity_view output to be cached
- Issue #3417935 by mstrelan, acbramley: Remove calls to clearstatcache in \Drupal\Testsile\Functional\FileFieldRevisionTest::testRevisions
- Issue #3406697 by alexpott, chr.fritsch: Fix notice in _install_prepare_import() due to alternate approach to translations
- Issue #3417560 by longwave: Remove withConsecutive() in SqlContentEntityStorageSchemaTest
- Issue #3410222 by alexpott: Autowiring does not support nullable types
- Issue #3041755 by Hardik_Patel_12, claudiu.cristea, Lendude, Spokje, smustgrave, amateescu, alexpott, longwave: Convert HandlerAllTest into a kernel test
- Issue #3417557 by longwave: Remove withConsecutive() in CronSuspendQueueDelayTest
- Issue #3416898 by Tom Konda, Tirupati_Singh: Use String.prototype.includes() instead of String.prototype.indexOf() where necessary
- Issue #3417553 by longwave: Remove withConsecutive() in CacheCollectorTest
- Issue #3417551 by longwave, Spokje: Remove withConsecutive() in EntityNormalizerTest
- Issue #3417559 by longwave, Spokje: Remove withConsecutive() in KeyValueEntityStorageTest
- Issue #3417528 by longwave: Remove withConsecutive() in MigrateSqlIdMapEnsureTablesTest
- Issue #3401988 by fjgarlin, acbramley, longwave, mstrelan, drumm: Spell-checking job fails with "Argument list too long" when too many files are changed
- Issue #3414994 by Spokje: SitesDirectoryHardeningTest does not need to use StringTranslationTrait
- Revert "Issue #3347144 by dgtlmoon, mstrelan, Evaldas Užkuras, bkosborne, FeyP, pirvudoru: Form API #states property/states should use .once() to apply its rules (Can cause failures with BigPipe and possibly other situations)"
- Issue #3409362 by quietone, smustgrave: Fix spelling of some words with 'un' prefix
- Issue #3092558 by recrit, vijaycs85, smustgrave, aloneblood, k9606, YesCT: Revisions log on translated nodes should not show original language revisions, should show revisions of translated content
- Issue #3402061 by fjgarlin, alexpott, smustgrave, catch, longwave: Disable DNS prefetch in Chromedriver on gitlabci
- Issue #3190542 by godotislate, clayfreeman, tim.plunkett, neclimdul, smustgrave, acbramley: Layout Builder overrides section storage sets local tasks block cache max-age to 0 on content entity pages without overrides enabled
- Issue #3406460 by quietone, smustgrave: Fix spelling of array keys in tests
- Issue #3415321 by Spokje, mondrake: Refactor \Drupal\Tests\Core\Test\PhpUnitCliTest::testFunctionalTestDebugHtmlOutput
- Issue #3416071 by catch: Consolidate one more jsonapi invalid file upload test method
- Issue #3414800 by plopesc, smustgrave: Access check in AnnounceBlock does not take into account $return_as_object parameter
- Issue #3416046 by catch: Split up MediaUiFunctionalTest
- Issue #3416220 by catch: Split filter tests out of JsonApiRegressionTest
- Issue #3416308 by catch: Add @group #slow to more kernel tests
- Issue #3415557 by Spokje, catch: Convert RowPluginTest into a Kernel test
- Issue #3415612 by Spokje: Convert ConfigOtherModuleTest into a Kernel test
- Issue #2793343 by justin2pin, Anybody, Grevil, mglaman, bnjmnm, Gauravvvv, lauriii, gints.erglis, Suresh Prabhu Parkala, paulocs, ranjith_kumar_k_u, finnsky, beunerd, selva.swamy@gmail.com, nod_, naveenvalecha, Daniel Kulbe, Bram Linssen, andypost, crasx: Dialog drupalAutoButtons option should be respected on initial load
- Issue #3401047 by Spokje, longwave, smustgrave, fjgarlin: Nightwatch output on GitLab not easily readable
- Issue #3394680 followup by longwave: Deprecate ContextProvidersPass in favor of using service_id_collector
- Issue #3414969 by Spokje, smustgrave: Convert TwigLoaderTest into a Kernel test
- Issue #3415038 by Spokje, kim.pepper: Convert FileMoveTest into a Kernel test
- Issue #3414501 by Spokje, smustgrave: Convert OptionsDynamicValuesApiTest into a Kernel test
- Issue #3415161 by mstrelan, Spokje, alexpott: Fix \Drupal\FunctionalTests\Core\Config\SchemaConfigListenerTest comment
- Issue #3414957 by Spokje: \Drupal\Tests\mysql\Functional\RequirementsTest is always skipped
- Revert "Issue #3358581 by pfrenssen, _tarik_, a.dmitriiev, smustgrave: Deprecated function: array_slice(): Passing null to parameter #2 ($offset) of type int is deprecated in Drupal\Core\Configntity\Query\Query->execute()"
- Issue #3414589 by Spokje: Convert SearchSetLocaleTest into a Kernel test
- Issue #3414557 by Spokje: Convert OptionsDynamicValuesValidationTest into a Kernel test
- Issue #3414481 by Spokje: Convert PathPluginTest into a Kernel test
- Revert "Issue #3413665 by Spokje: Enable modules through Nightwatch API when not testing module enabling"
- Issue #3415060 by Spokje, smustgrave: Convert AlterTest into a Kernel test
- Issue #3414144 by codebymikey, smustgrave: Invalid twig token variables are added on certain URLs and will crash the site if assertions are enabled
- Issue #3414914 by mstrelan, Spokje, kim.pepper: Convert HtmlToTextTest into a Unit test
- Issue #3046959 by Spokje, claudiu.cristea: Convert RelationshipNodeTermDataTest into a Kernel test
- Back to dev.
- Merged 10.2.2.
- Issue #3414776 by Spokje: Move EntityReferenceSelectionAccessTest to Kernel namespace and directory
- Issue #3414664 by Spokje: Convert RelationshipRepresentativeNodeTest into a Kernel test
- Issue #3414667 by Spokje, smustgrave: Delete TaxonomyTermFilterDepthTest Functional test
- Issue #3414754 by Spokje: Remove unused require-s from Nightwatch commands
- Issue #3414760 by Spokje: Remove Nightwatch exampleTest
- Issue #3414699 by Spokje, joachim, smustgrave: Convert FieldTimeIntervalTest into a Kernel test
- Issue #3412415 by larowlan, fjgarlin, longwave, drumm, benjifisher: Make CI template compatible with private repositories
- Issue #3004300 by jonathanshaw, AndyF, joachim, Lendude, alx_benjamin, quietone, webkarthik: EntityViewsData fails to set 'entity revision' in the table data for an entity's revision table
- Issue #3414499 by Spokje, smustgrave: Convert NodeTemplateSuggestionsTest into a Kernel test
- Issue #3198236 by mstrelan, Gauravvvv, smustgrave, Johan den Hollander, sonam.chaturvedi, DishaKatariya, Kristen Pol, lauriii: "Add another" buttons could use vertical margin
- Issue #3414263 by quietone, andypost: Change help headings for WCAG 2.0
- Issue #3400359 by el7cosmos, dinazaur, alexpott, ReINFaTe: External fonts cannot be loaded via add_css ajax command
- Issue #3413665 by Spokje: Enable modules through Nightwatch API when not testing module enabling
- Issue #3358581 by pfrenssen, _tarik_, a.dmitriiev, smustgrave: Deprecated function: array_slice(): Passing null to parameter #2 ($offset) of type int is deprecated in Drupal\Core\Configntity\Query\Query->execute()
- Issue #3358609 by Arantxio, daffie, Chi, larowlan, xjm: Fix PostgeSQL column name escaping in field constraints
- Issue #3413135 by Spokje: Replace deprecated functions in Nightwatch tests
- Issue #3402292 by mstrelan, ankithashetty, dww, smustgrave: Fix strict type errors: Convert FormattableMarkup to strings (simple replacement) in core/tests/Drupal/KernelTests/*
- Issue #3402297 by dww: Fix strict type errors in CommentFieldAccessTest
- Issue #3413935 by Spokje: Make CKEditor5ToolbarTest and TableTest extend WebDriverTestBase
- Issue #3414259 by Spokje: Convert FieldTypeTest into a Kernel test
- Issue #3414261 by catch: Add authenticated user umami performance tests
- Issue #3412389 by pfrenssen: Document that hook_mail_alter passes a langcode instead of a language object
- Issue #3263668 by omkar-pd, Wim Leers, hooroomoo: Re-enable inline form errors in assessActiveTextEditorAfterBuild function
- Issue #3413984 by quietone: Simple fixes for words with prefix of 'de' or 're'
- Issue #3249082 by Lendude, bbrala, quietone: Views FieldPluginBaseTest has methods with unused arguments
- Issue #3376369 by Spokje, quietone, smustgrave, catch: Remove use of book in non profile and update tests
- Issue #3413730 by catch: Speed up UpdatePathTestBaseTest
- Issue #3413879 by catch: Add @group #slow to ForumUninstallTest
- Issue #3376159 by tinto, smustgrave, lauriii, djsagar, Harish1688: Links do not align properly in Views UI field/sort rearrange dialog
- Issue #3395900 by quietone, smustgrave: Correct spelling of words in module core/tests
- Issue #3397490 by quietone, smustgrave, xjm, longwave, poker10: Fix more words that are only misspelled in comments
- Issue #3400189 by joachim, mikelutz: Add kernel tests for prefixing of migrate process errors
- Issue #3371828 by quietone: NodeCompleteNodeTranslationLookup should return NULL for non translated lookups
- Issue #3376271 by quietone, Spokje, smustgrave: Move non-migration book-related tests to the Book module
- Issue #2254189 by smustgrave, quietone, anya_m, andregp, sun, joachim: Fix test performance of Drupal
ode\Tests\NodeTranslationUITest - Issue #3399951 by neclimdul, godotislate, catch, lauriii, smustgrave, xjm: ajax_page_state leaks through request in Views Ajax
- Issue #2745755 by vasi, Steven Jones, smustgrave, mvc, Wim Leers, james.williams, Gábor Hojtsy: AliasStorage::preloadPathAlias() incorrectly prioritizes und aliases
- Issue #3412029 by catch: Split up JsonApiRegressionTest
- Issue #3411934 by catch, smustgrave, quietone: Mark some Kernel tests with @group #slow
- Issue #3413430 by catch, smustgrave: Add @group #slow to AddPermissionsUpdateTest
- Issue #3412422 by dww, catch, longwave, jwilson3, smustgrave: Use 'present' for end year in COPYRIGHT.txt
- Issue #2957279 by alexpott, pguillard, chr.fritsch, Wim Leers: Fix typo in locale_config_batch_refresh_name causing "[warning] No configuration objects have been updated."
- Issue #2254209 by smustgrave, marvil07, quietone, sun, catch, Wim Leers: Fix test performance of Drupal\system\Tests\Cache\PageCacheTagsIntegrationTest
- Issue #3384936 by marvil07, vbouchet, smustgrave, xjm, joachim: Use the API to set up languages in tests that are not specifically testing the language form
- Issue #3277003 by mcdruid, catch, poker10, smustgrave, BramDriesen, guedressel, DamienMcKenna, xjm, Heine, greggles, fjgarlin, pwolanin, moshe weitzman: Harden user_pass_rehash() against attack
- Issue #3410361 by claudiu.cristea, jonathan1055, lauriii: Fix the deprecation URL for #3356894 and #3372097
- Issue #3405085 by quietone, smustgrave: Fix test performance of \Drupal\Tests