This is a release candidate for the next minor version (feature release) of Drupal 10. Release candidates are not supported for production sites, but they are intended for widespread testing in preparation for the upcoming stable release. More information on release candidates.
This minor release provides improvements and new functionality. It does not not break backward compatibility (BC) for public APIs. There may be changes in internal APIs and experimental modules. If so, contributed and custom modules and themes may need updating. This is according to Drupal core's backward compatibility and experimental module policies.
This release may include string changes and additions. Translators can review the latest translation status on localize.drupal.org.
Drupal 10.3.x contains new features, and should be the target for new site development. Drupal 10.2.x will continue to have security support until December 2024.
Drupal 10 will be supported until the release of Drupal 12. Sites must update to at least Drupal 10.3.0 prior to updating to Drupal 11, which will be released in August. For information on the upcoming Drupal 11 release, read the Drupal 11.0.0-beta1 release notes.
Known issues
-
CKEditor dialogs to fail to appear above jQuery UI dialogs due to a changed class name in ckeditor5. This issue to resolve this is: [#3453320]
-
Drupal core does not currently have an effective way of handling data model updates that are needed in two separate versions of Drupal (for example, Drupal 10.4 and 11.1, or 10.3 and 11.0). The issue to resolve this is: [#3108658]
Until this issue is resolved, bug fixes requiring a data model change may be held to a later release.
-
PHP 8.4 compatibility for Drupal 10 and 11 remains under development. 10.4 (or even a later patch release of 10.3) will provide full compatibility with PHP 8.4.
-
[#3441010]
-
[#3446026]
-
[#3453324]
Search the issue queue for known issues.
Important update information
-
For security hardening, a backwards-compatibility break was introduced in
ImageStyleDownloadControllerin 10.3.0-beta1 (but not included in those release notes). This change may affect modules that provide custom stream wrappers or extendImageStyleDownloadController. Review the change record for information on how to update your routing entries for this change. -
Sticky table headers are now implemented with pure CSS instead of JavaScript.
Claro's custom implementation of sticky table headers (which was already using pure CSS) has been removed and Claro now relies on the default implementation.
Themes that heavily customize the sticky tableheaders markup, CSS, or JavaScript may need to update, or may be able to remove overrides if they were implementing a CSS-only solution similar to Claro's.
-
update.php will now use the Claro theme instead of the configured maintenance theme, to ensure that updates are run in a consistent environment.
Bugs with 10.3.0-beta1 that are resolved in this release
- [#3449302]
- [#3447198]
All changes since Drupal 10.3.0-beta1
- Issue #3443576 by finnsky, mherchel, arunkumark, smustgrave, ckrina, Gauravvvv: Mobile version of Navigation menu doesn't properly reset Drupal.displace() on closing
- Issue #3180696 by Spokje, Nikolay Shapovalov, adamzimmermann, quietone, manish-31, xjm, SuperfluousApostrophe, smustgrave, jonathan1055, longwave: Fix 'Drupal.Commenting.TodoComment' coding standard
- Issue #3450516 by kim.pepper: Add support for !service_closure custom tag in YamlFileLoader
- Issue #3399956 by shashwat-tiwari, nod_, Gauravvvv, Meeni_Dhobale, ahsannazir, sakthi_dev, Kanchan Bhogade, shweta__sharma, joachim, Mithun S, smustgrave, saschaeggi, xjm, Anilu@: Tab highlights for current/hover/click are too high up when other tabs have 2 lines of text
- Issue #3450253 by SandeepMahlawat, Gauravvvv, finnsky, SKAUGHT: Navigation: Avoid layout builder form submit
- Issue #3447942 by Redwan Jamous, ahsannazir, smustgrave: Update stylelint rule unit-allowed-list to include container query units
- Issue #3443577 by Gauravvvv, rishabjasrotia, Rajan Kumar@2026, mherchel, finnsky, ckrina: Navigation overlay z-index is not defined
- Issue #3427999 by andypost, Ayesh, bbrala: [PHP 8.4] Fix implicitly nullable type declarations
- Issue #3451701 by dww, Mingsong, MegaphoneJon: The update module should not crash with releases that contain invalid values for core_version_requirement
- Issue #3422537 by bbrala, cmlara, dww, longwave, joachim: Autoresolve cspell GIT_DEPTH issue when diff fails
- Issue #3451738 by Grimreaper, BramDriesen: Remove JavaScript from Views configuration form now that it is only CSS
- Issue #3442227 by dww, smustgrave: Use labels in Views argument summaries for entity references
- Issue #3450890 by kristiaanvandeneynde: Provide default values for an Access Policy API method that was overlooked
- Issue #3450576 by kristiaanvandeneynde: Access policies should be marked as final to encourage decorating
- Issue #3303557 by benjifisher, Binoli Lalani, quietone, catch, Tom Konda, smustgrave, nod_: Deprecate and remove the AJAX replace method
- Issue #3450760 by SandeepMahlawat, benjifisher, smustgrave: Add missing 'label' key to navigation.layouts.yml
- Issue #3424744 by bronzehedwick, ckrina, m4olivei, finnsky, smustgrave, plopesc, kostyashupenko, KeyboardCowboy: If no icon for a top-level item is provided, use the first two letters
- Issue #3441222 by kristiaanvandeneynde, nicxvan, catch, alexpott, smustgrave, lauriii, quietone: Allow update.php to load when entity type info needs to be updated
- Issue #2640994 by dww, tduong, Alex Bukach, Berdir, ameymudras, catch, mohit_aghera, raman.b, jofitz, Ben Buske, ankithashetty, smustgrave, nikitagupta, nicxvan, FeyP, pameeela, technoveltyco, dawehner, kim.pepper, Lendude: Fix label token replacement for views entity reference arguments
- Issue #3438878 by skyriter, ahsannazir, rkoller, ckrina, mradcliffe, smustgrave, Gauravvvv: Regression: The drawer in Safari is missing the drop shadow
- Issue #3085360 by bradjones1, josephdpurcell, Giuseppe87, ravi.shankar, rajandro, ridhimaabrol24, bbrala, andregp, jhedstrom: RouteProvider::getRouteCollectionForRequest() can poison query string of next request
- Issue #3447881 by plopesc, catch, larowlan, smustgrave, quietone: Improve access logic for Navigation blocks page
- Issue #3437166 by Utkarsh_33, smustgrave, Jaypan, wdmartin: Update documentation for table.html.twig around table cells
- Issue #3446413 by shaal, Gábor Hojtsy, smustgrave, quietone: Update the Drupal logo in Drupal core with the 2024 brand evolution
- Issue #3444699 by Gauravvvv, finnsky, ahsannazir, nod_, SKAUGHT, Kanchan Bhogade: Navigation LayoutBuilder UI has dead click zone
- Issue #3449743 by catch: Try to optimize test ordering when run-tests.sh is used with a mixture of test types
- Issue #3447625 by tim.plunkett, DanielVeza, DyanneNova, tedbow: Add DanielVeza as a co-maintainer of Layout Builder
- Issue #3344877 by alexpott, silverham: [regression] FTPExtension class can no longer connect as of 9.5.x
- Issue #3449564 by harivansh, bbrala: Calling normalize without account context generates a warning
- Issue #3449852 by mondrake: Show error codes in PHPCS reports
- Issue #3449455 by mondrake: Correct placement of use statements in ClearTest
- Issue #3418489 by ahsannazir, m4olivei, patrickfgoddard, Amandeep123, adwivedi008, ckrina, Kanchan Bhogade, rkoller, xjm, smustgrave, baluv3, kostyashupenko, plopesc, finnsky: Choose an icon for the Announcements link
- Issue #3447206 by pdureau: Add pdureau as a co-maintainer for the Theme API with a focus on SDC
- Issue #3350947 by camilledavis, smustgrave, mgifford: "Skip to main content" link skips over content that is essential to the page, banner role should be for global content
- Issue #3447487 by e0ipso: Add e0ipso as a co-maintainer of core theme system with focus on SDC
- Issue #3446807 by quietone, divya.sejekan, smustgrave: Put 'Not supported' update status on the correct side of the page
- Issue #3446504 by Utkarsh_33, smustgrave, Tom Konda: Mismatch between implementation and description for Drupal.Message.prototype.remove()
- Issue #3439580 by dipakmdhrm, balagan, Shriaas, catch, BramDriesen, nicxvan: Make drupal.tableheader only use CSS for sticky table headers
- Issue #3449302 by catch: core.libraries.yml mis-implements moved_files syntax
- Issue #3449214 by alexpott, nicxvan: A revert has cause cspell to fail due to the word yarhar
- Issue #3298580 by Utkarsh_33, Eduardo Morales Alberti, smustgrave, Akram Khan, skipper-vp, bnjmnm: Claro details component does not have the right class
- Issue #3446357 by mglaman, Gauravvvv, finnsky, smustgrave, mherchel: Fix overflow visibility for wrapper content in navigation CSS
- Issue #3424162 by camilledavis, dineshkumarbollu, smustgrave: Claro highlighted row not communicated to keyboard users
- Issue #3425104 by finnsky, catch, smustgrave: Umami views should use responsive grid
- Issue #3445033 by finnsky, smustgrave: Replace dialogContentResize jQuery event with CustomEvent
- Issue #3374464 by luenemann, Utkarsh_33, vpa24, jennypanighetti, smustgrave, bnjmnm: Claro CSS for dropbutton items adds large gap of white space
- Issue #3439017 by catch, smustgrave: Umami page.tpl.php breaks block placeholders
- Issue #3446116 by sjothivelu, m4olivei, plopesc: Rename UserNavigationBlock to NavigationUserBlock for class name consistency
- Issue #2941189 by DanielVeza, longwave, smustgrave, xjm, tim.plunkett: Confirmation form for disabling per-entity layout overrides shows a success message and should not
- Issue #3446381 by tim.plunkett, smustgrave, sarahjean: SDC's discovery has overly lenient regex
- Issue #3172550 by bradjones1, DuaelFr, alexpott, smustgrave, longwave: Register Drupal's mime type guesser the Symfony MimeTypes service
- Issue #3448487 by catch: CoreRecipesTest is slow
- Issue #3444232 by andypost, smustgrave: [8.4] Fix implicitly nullable type declarations for phpstan job (manual ones)
- Issue #2868384 by RoSk0, poker10, tuutti, rgeerolf, sokru, jofitz, pooja saraah, cilefen, catch, ThomWilhelm, larowlan, quietone: Allow the session name suffix to be configurable
- Issue #3385934 by phthlaap, joegraduate, useernamee, alexpott: The configuration synchronization page encounters errors when core.extension.yml is missing in the config/sync directory
- Issue #3447198 by phenaproxima, alexpott, nicxvan, larowlan: RecipeCommand mistakenly tries to apply a recipe even if you don't give it a valid directory
- Issue #3445184 by plopesc, matthieuscarset, m4olivei: Fatal error when accessing Navigation Blocks on a minimal profile installation because of the Shortcut block