Drupal Release: 9.1.0-alpha1
Pre Release
Tag Name: 9.1.0-alpha1
Release Date: 10/23/2020
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 9.1.0-alpha1 introduces significant enhancements including the new Olivero frontend theme (in beta), native image lazy-loading support, improved accessibility features, and the Claro admin theme redesign. This release also includes important security fixes, performance improvements, and preparations for PHP 8 and Symfony 5 compatibility. The update represents a substantial step forward in Drupal's evolution with over 5,100 changes across 300 files.
Highlight of the Release
- Introduction of Olivero frontend theme (beta) with modern design and accessibility improvements
- Native image lazy-loading support for better performance
- Redesigned modules page and maintenance page with Claro admin theme
- Front matter support in Twig templates for metadata
- Multiple security fixes addressing critical vulnerabilities
- Preparation for PHP 8 and Symfony 5 compatibility
- Improved performance for multi-value fields in views
Migration Guide
PHP 8 Compatibility Changes
If you're developing custom modules or themes, be aware that Drupal 9.1.0-alpha1 includes several changes to prepare for PHP 8 compatibility:
- Support for nullable typehints and return types in ProxyBuilder
- Fixed error handler signature changes
- Addressed issues with call_user_func_array() and named arguments
- Fixed division by zero handling
Symfony 5 Preparation
Several changes have been made to prepare for Symfony 5 compatibility:
- Updated usage of EventDispatcherInterface::dispatch() for return type hint
- Replaced deprecated MimeTypeGuesser with MimeTypes
- Updated Process class usage to use arrays instead of strings
- Replaced deprecated Symfony\Component\Lock\Factory with LockFactory
Deprecated APIs
Several APIs have been deprecated in this release:
- AssertLegacyTrait::assert() and related methods
- AssertLegacyTrait::assertArrayEquals()
- UiHelperTrait::drupalPostForm()
- Allowing NULL as $edit parameter to drupalPostForm()
- Config schemas can now be deprecated with a new mechanism
Front Matter Changes
If you were using the FrontMatter class from the help_topics module, you should now use Drupal\Component\Utility\FrontMatter instead, as this functionality has been moved to a core component.
JavaScript Changes
- Added NodeList.forEach polyfill for IE11 support
- Updated CKEditor to version 4.15.0
- Added postcss-preset-env for better CSS processing
Upgrade Recommendations
As this is an alpha release (9.1.0-alpha1), it is not recommended for production sites. This release is intended for testing and development purposes only.
For development and testing environments:
- Upgrade to this version to test your custom modules and themes for compatibility with upcoming changes
- Pay special attention to PHP 8 compatibility if you plan to use PHP 8 in the future
- Test your site with the new Olivero theme to prepare for its eventual promotion to default theme
- Review your custom JavaScript for compatibility with the new theme functions and polyfills
For production sites:
- Continue using Drupal 9.0.x until Drupal 9.1.0 reaches a stable release
- Use this alpha release in a separate testing environment to identify potential issues early
When upgrading from Drupal 9.0.x to this alpha release, follow the standard minor version upgrade process:
- Back up your database and files
- Put your site in maintenance mode
- Update your composer.json to require
drupal/core:9.1.0-alpha1 - Run
composer update drupal/core --with-dependencies - Run database updates via Drush or the web interface
- Clear caches
- Test thoroughly before taking the site out of maintenance mode
Bug Fixes
Anonymous User Logout Issue Fixed
A longstanding issue where anonymous users would receive an "access denied" message when attempting to logout has been resolved, improving the user experience for sites with anonymous authentication.
Layout Builder Fixes
Several important Layout Builder bugs were fixed:
- Layout builder now properly shows new "extra fields"
- Fixed an issue where LayoutBuilderHtmlEntityFormController was breaking decoration
Book Module Improvements
- Fixed issues with unpublished books appearing in book lists
- Users with access to unpublished nodes can now create unpublished books
- Fixed performance issues when rendering multi-value fields in views
Media Library Enhancements
- Fixed issues with overwriting upload forms for media library
- Improved oEmbed validator to use the URL resolver for resource URLs
Form and UI Fixes
- Fixed autocomplete "loading" message not properly hiding in inline forms
- Addressed issues with draggable table cells and line breaks
- Fixed issues with hidden buttons in off-canvas dialogs
- Corrected reference to RFC5424 severity levels
New Features
New Olivero Frontend Theme (Beta)
The most visible addition to Drupal 9.1.0-alpha1 is the new Olivero frontend theme, included as a beta. This modern, accessible theme will eventually replace Bartik as the default theme in future releases. Olivero features improved mobile responsiveness, better accessibility, and a fresh design that aligns with Drupal's modern capabilities.
Native Image Lazy-Loading
Images now support the HTML loading="lazy" attribute by default, enabling native browser lazy-loading without requiring JavaScript. This improves page performance by deferring off-screen images until they're needed.
Front Matter Support in Twig Templates
Twig templates can now use front matter for metadata support, allowing developers to include structured metadata at the beginning of template files. This feature was moved from the Help Topics module to a core component for broader use.
New JavaScript Theme Functions
A new Drupal JavaScript theme function has been added for the password confirm widget, allowing themes to customize the markup of password confirmation elements.
Enhanced oEmbed Support
The oEmbed resource object is now exposed to iframe templates, giving developers more control over embedded media presentation and customization.
Queue Processing Improvements
A new mechanism allows items to be silently kept locked when processing a queue via cron, improving reliability for background processing tasks.
Security Updates
Multiple Security Advisories Addressed
Drupal 9.1.0-alpha1 includes fixes for several security advisories:
- SA-CORE-2020-007: Fixed a security vulnerability related to file handling
- SA-CORE-2020-008: Addressed an issue with entity access
- SA-CORE-2020-009: Fixed a security vulnerability in content processing
- SA-CORE-2020-010: Addressed a security issue in the CKEditor integration
- SA-CORE-2020-011: Fixed multiple security vulnerabilities
Symfony Security Update
Updated Symfony to version 4.4.13 to address CVE-2020-15094, ensuring that Drupal core remains protected against known vulnerabilities in its dependencies.
Exposed Term Filters Security
Improved security by ensuring that exposed term filters do not show term options that the user does not have access to, preventing information disclosure.
Term Access Improvements
Fixed an issue where the term_access tag was not being added when SQL rewriting was turned off, which could potentially lead to access bypass issues.
Performance Improvements
Native Image Lazy-Loading
The addition of native image lazy-loading support significantly improves page load performance by deferring the loading of off-screen images until they're needed. This reduces initial page load time and bandwidth usage without requiring JavaScript.
Multi-value Fields in Views
Fixed a performance issue when rendering multi-value fields in views, which previously could cause significant slowdowns on pages with complex field displays.
Queue Processing Optimization
Added the ability to silently keep an item locked when processing a queue via cron, improving the reliability and efficiency of background processing tasks.
Exposed Term Filters Optimization
Improved the performance of exposed term filters in views by not showing term options that the user does not have access to, reducing unnecessary processing and improving security.
Exception Logging Improvements
The ExceptionLoggingSubscriber no longer logs backtrace strings on access denied exceptions, reducing log bloat and improving performance during normal site operation with expected access restrictions.
Impact Summary
Drupal 9.1.0-alpha1 represents a significant step forward with the introduction of the new Olivero frontend theme (in beta), which will eventually replace Bartik as the default theme. This release also adds native image lazy-loading support, improving performance without requiring JavaScript.
For developers, the release includes important preparations for PHP 8 and Symfony 5 compatibility, ensuring Drupal remains current with modern PHP practices. The addition of front matter support in Twig templates provides new capabilities for template metadata.
Site builders will benefit from UI improvements in the Claro admin theme, particularly on the modules page and maintenance page. Layout Builder functionality has been enhanced with fixes for extra fields and component decoration.
Security has been strengthened with multiple fixes addressing critical vulnerabilities, and performance improvements include optimizations for multi-value fields in views and queue processing.
Accessibility continues to be a focus with improvements to menu items, form elements, and contrast ratios. The new Olivero theme particularly emphasizes accessibility as a core design principle.
Overall, this alpha release sets the stage for Drupal 9.1's evolution with modern theming, improved performance, and better developer tools while maintaining Drupal's commitment to security and accessibility.
Statistics:
User Affected:
- Access to the new Olivero frontend theme (beta) for modern site designs
- Improved modules page UI with the Claro admin theme
- Better layout builder functionality with fixes for extra fields and component decoration
- Enhanced media library with improved oEmbed support and iframe templates
