Drupal Release: 10.3.1
Tag Name: 10.3.1
Release Date: 7/4/2024
DrupalHighly flexible, open-source content management system known for complex, scalable web applications. Preferred by government, educational, and large enterprise websites requiring advanced customization and security features. Robust module ecosystem.
TL;DR
Drupal 10.3.1: Bug Fixes and Accessibility Improvements
This minor release for Drupal 10.3.x includes important bug fixes, accessibility improvements, and code refinements. Key updates include fixes for the #states API, vertical tabs functionality, form validation, and mobile navigation. This release also improves accessibility with better focus visibility and addresses several documentation and code quality issues.
Highlight of the Release
- Fixed #states API functionality when using logical combinations of multiple fields
- Improved accessibility with better focus visibility for Field UI refresh button
- Fixed mobile navigation close button positioning when navigation module is enabled
- Resolved container compile crash when a service decorates a destructable service
- Added performance index on locales_location table for multilingual sites
Migration Guide
This minor release does not require any specific migration steps. However, developers should note the following API changes:
- The method
ensure_existshas been renamed tocreateIfNotExistsfor better clarity and consistency with Drupal coding standards. - The method
simpleConfigUpdatehas been camel-cased for consistency with other methods.
If you have custom code that extends or uses these methods, you should update your code accordingly.
Upgrade Recommendations
It is recommended to update to Drupal 10.3.1 as soon as possible, especially if you are experiencing any of the issues fixed in this release. This is a minor release with bug fixes and improvements, so the upgrade process should be straightforward.
To upgrade:
- Back up your database and site files
- Update your codebase to Drupal 10.3.1 using Composer:
composer update drupal/core --with-all-dependencies - Run database updates:
drush updatedb - Clear caches:
drush cache:rebuild
If you are using a version prior to 10.3.0, please review the release notes for 10.3.0 as well to understand all changes that will be applied.
Bug Fixes
-
#states API Functionality: Fixed issues with the #states API not working correctly when built from logical combinations of multiple fields (Issue #3386191).
-
Vertical Tabs JavaScript: Resolved problems with vertical tabs when multiple forms with vertical tabs are present on a page. The
[0]hatch inmisc/vertical-tabs.jswas causing issues in these scenarios (Issue #3291764). -
Mobile Navigation: Fixed incorrect positioning of the close button on mobile devices when the navigation module is enabled in the Olivero theme (Issue #3450773).
-
Form Validation: Resolved a TypeError in
FormValidator->performRequiredValidation()related to illegal offset type in isset or empty operations (Issue #3447748). -
Container Compilation: Fixed container compile crash that occurred when a service decorates a destructable service (Issue #3441010).
-
Secondary Tabs Design: Fixed distorted secondary tabs design on the block view page (Issue #3444998).
-
Drupal Message Library: Resolved an issue where the core/drupal.message library required a status_messages render element (Issue #3396099).
-
Test Job Detection: Fixed an issue where test-only jobs were not detecting failures correctly (Issue #3409733).
-
Sort Fields Property: Corrected the definition of the Sort::fields property, which was incorrectly defined as a string (Issue #3453068).
-
JavaScript Tests: Fixed regression in running JS tests using ddev by updating lullabot/php-webdriver (Issue #3458751).
New Features
-
Navigation Subsystem Maintainers: Added dedicated subsystem maintainers for Navigation, improving the oversight and development of navigation-related features.
-
Performance Index for Multilingual Sites: Added a new index on the
locales_locationtable ontypeandnamefields, which improves performance for multilingual sites. -
API Method Renaming for Clarity: Renamed
ensure_existstocreateIfNotExistsand camel-casedsimpleConfigUpdatefor better API consistency.
Security Updates
No specific security fixes were included in this release. However, keeping your Drupal installation up to date with the latest minor releases is always recommended as a security best practice.
Performance Improvements
-
Locales Location Index: Added an index on the
locales_locationtable for thetypeandnamecolumns, which improves query performance for multilingual sites (Issue #3156439). -
Container Compilation: Fixed a container compile crash issue that could impact performance when a service decorates a destructable service (Issue #3441010).
Impact Summary
Drupal 10.3.1 is a minor release that focuses on bug fixes, accessibility improvements, and code refinements. The impact is generally positive across different user roles:
For site administrators, the release improves the mobile navigation experience and provides better organization of development settings. Content editors will benefit from fixed issues with file widgets in the Claro theme and more reliable form validation.
Developers gain significant improvements with fixes to the #states API, container compilation, and form validation. The release also enhances documentation clarity and API consistency.
Users with accessibility needs will appreciate the improved WCAG Focus Visible compliance and better mobile navigation accessibility. Multilingual site managers benefit from performance improvements with the new index on the locales_location table.
Overall, this release addresses several pain points reported by the community while maintaining backward compatibility. The changes are focused on stability, accessibility, and developer experience rather than introducing major new features.
Statistics:
User Affected:
- Improved mobile navigation experience when the navigation module is enabled
- Better organization of development settings page with reordered checkboxes
- Fixed issues with vertical tabs when multiple forms are present on a page
