This is a release candidate for the next minor version (feature release) of Drupal 11. 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 11.2.x contains new features, and should be the target for new site development. Drupal 11.1.x will continue to have security support until December 2025.
Drupal 11 will be supported until the release of Drupal 13.
Important changes since 11.2.0-beta1
Drupal 11.2.0-rc1 was incorrectly created against the Drupal 11.x development branch instead of the Drupal 11.2.x release branch, and as a result contains changes that will not be included in Drupal 11.2.0. This release candidate should be used instead.
Single-Directory Components with properties that have a restricted set of allowed values (using
enum
) now can specify human-readable labels for each of those allowed values. Those labels are also translatable using Drupal's user interface translation subsystem, and can provide specific translation context viax-translation-context
property. This allows projects using Single-Directory Components (like Experience Builder) to better support translatability.Drupal core now requires Symfony v7.3.0.
PostCSS and its plugins has been updated to the latest edition, removing the need for the
@nest
keyword and removing the use ofrgba()
. Drupal maintains the 2021 nesting behavior to avoid adding:is()
selectors throughout the CSS. For details, see the PostCSS Nesting plugin documentation.Stylelint and
stylelint-config-standard
have also been updated to the latest version. Most notably the CSSrgb()
function is preferred over the equivalentrgba()
function. Drupal core stylesheets have been updated to account for these changed standards.Coder has been updated to the latest version. and the following Drupal coding standards rules have changed:
Drupal.CSS.ClassDefinitionNameSpacing
andDrupal.CSS.ColourDefinition
have been removed as Coder is no longer responsible for CSS coding standards.Drupal.Strings.UnnecessaryStringConcat
has been replaced withGeneric.Strings.UnnecessaryStringConcat
Squiz.WhiteSpace.LanguageConstructSpacing
has been replaced withGeneric.WhiteSpace.LanguageConstructSpacing
MySource.Debug.DebugCode
has been removed.
CKEditor5 is updated from v44.0.0 to v45.2.0, which includes a number of improvements and bug fixes. If you have any custom integrations with CKEditor, see the v45 release notes for breaking changes. If you were using the provided CKEditor5 icon set, the icons have been renamed. Drupal has added an icon name backward compatibility layer for this specific change.
Composer has increased its minimum requirement for the
justinrainbow/json-schema
package to version 6, and as a result, Drupal core's lockfile and metapackage now pin this development dependency to version 6 as well. Modules using this package should read the version 6 upgrade notes as there are breaking changes. If your contributed or custom project relies on an older version ofjustinrainbow/json-schema
, you should declare a conflict with the 6.x branch in yourcomposer.json
.Several development dependencies have received minor- and patch-level updates to the latest versions.
Search the issue queue for known issues.
All changes since Drupal 11.2.0-beta1
- Issue #3480321 by scott_euser, godotislate, catch, grimreaper, kensae, joelpittet, pameeela, lauriii, m4olivei, michaellander, aaronmchale, smustgrave, anruether, ckrina, plopesc, finnsky, xjm, berdir: Second level menu items can't be reached if they have children
- Issue #3488681 by dcam, jazzsequence, mradcliffe, nicxvan, quietone, mmenavas, heilop: Fix defgroup open and close that were separated during Hook conversion
- Issue #3529592 by lussoluca, znerol, kristiaanvandeneynde: Wrong alias for access_policy_processor service in core.services.yml
- Issue #3487533 by mglaman, catch, larowlan, wim leers, daffie, longwave: Cannot modify a table which uses JSON type
- Issue #3526142 by mondrake, xjm: Update PHPStan to 2.1.17
- Issue #3529504 by acbramley, cmlara, nicxvan: Fix phpstan errors in UpdatePathTestTrait
- Issue #3528998 by grimreaper, larowlan, pdureau, xjm, wim leers, catch, penyaskito: Follow-up: SDC `enum` props should have translatable labels: use `meta:enum`
- Issue #3527142 by andypost, catch, longwave, xjm: Update Composer and development dependencies for 11.2.0
- Issue #3522406 by quietone, longwave, klausi, bbrala: Update Coder to 8.3.30
- Issue #3523018 by godotislate, longwave, quietone, xjm, catch, salmonek, smustgrave: Update CKEditor 5 to 45.2.0
- Issue #3528680 by godotislate, xjm, longwave: Update to Symfony 7.3.0
- Issue #3523705 by amateescu, rkoller, poker10: InvalidComponentException when workspaces ui is installed
- Issue #3493070 by penyaskito, griffynh, wim leers, longwave, pdureau, effulgentsia, xjm, phenaproxima, mradcliffe, danielveza, lauriii, catch: SDC `enum` props should have translatable labels: use `meta:enum`
- Issue #3526266 by mherchel, finnsky, andy-blum: Navigation top bar should utilize Drupal.displace()
- Issue #3523078 by sd9121, longwave, godotislate, mherchel: Update prettier/PostCSS/stylelint for 11.2
- Issue #3410681 by charlliequadros, hritik parihar, ahsannazir, smustgrave, finnsky, akshayadhav, larowlan: Remove @nest from claro stylesheets
- Issue #3527518 by phenaproxima, tim.plunkett: Package Manager's direct-write mode still tries to check for rsync
- Issue #3527314 by amateescu: Stop creating a "Stage" workspace by default on module installation
- Issue #3519766 by amateescu: WorkspacesHtmlEntityFormController builds entity forms twice
- Issue #3521953 by tom konda, smustgrave, quietone: Existence check for JavaScript object and it's property across multi-lines can replace with optional chaining
- Issue #3526180 by mherchel, godotislate: Regression: Drupal.displace() not working on new Navigation module in 11.2
- Issue #3255804 by godotislate, longwave, berdir, alexpott, catch, andypost, smustgrave: Hidden dependency on block_content in layout_builder
- Issue #3255804 by godotislate, longwave, berdir, alexpott, catch, andypost, smustgrave: Hidden dependency on block_content in layout_builder
- Issue #3518917 by penyaskito: Invalid service alias for backend_overridable services in some cases when default_backend is set
- Issue #3483996 by kentr, kim.pepper, godotislate, acbramley: Remove lazy declaration and proxy class for cron and use service closure instead
- Issue #3524547 by thejimbirch, ishani patel, quietone: Navigation module's help text should not link to the contrib module
- Revert "Issue #3515093 by sandip, catch, smustgrave: Olivero table.css should be in its own library and #attached to tables"
- Issue #3514197 by donquixote, acbramley, nicxvan, godotislate, longwave: ModuleHandler::resetImplementations should reset all properties with hook implementations
- Issue #3527053 by nod_, phenaproxima: Random failure: "Drupal.contextual.ContextualModelView is not a constructor"
- Issue #3094817 by nicxvan, quietone, prudloff: Add a SECURITY.md explaining how to report security vulnerabilities properly
- Revert "Issue #3497431 by mondrake, catch, larowlan, godotislate: Deprecate TestDiscovery test file scanning, use PHPUnit API instead"
- Issue #3521327 by avpaderno: The insecure examples code does not include delimiters for strings
- Issue #3523629 by znerol, longwave: Update config schema for Symfony 7.3 mailer security improvements
- Issue #3522969 by annmarysruthy: Deprecate BrowserTestBase::getOptions()
- Issue #3517024 by acbramley: Convert ckEditor5EditorHeightTest to WebDriver test
- Issue #3522970 by longwave, smustgrave: Remove unused BrowserTestBase::$originalContainer
- Issue #3526251 by prudloff: Incorrect type for #access in RenderElementBase documentation
- Issue #3515774 by prudloff, smustgrave: Cache tags added by hook_block_view_BASE_BLOCK_ID_alter are ignored on blocks that implement MainContentBlockPluginInterface or TitleBlockPluginInterface
- Issue #3523649 by znerol: Extract testUriHost from UuidValidatorTest into its own class
- Issue #3526117 by phenaproxima: Conflict with Project Browser <2.1 and Automatic Updates <4
- Issue #3520750 by alexpott: Use a transaction PoDatabaseWriter to improve performance
- Issue #3524613: Add Cristina Chumillas as UX Manager, Emma Horrell as provisional UX Manager to Drupal core
- Issue #3526690 by cilefen, xmacinfo, andypost, grimreaper, mstrelan: Call to undefined function Drupal\system\Plugin\ImageToolkit\imageavif()
- Issue #3497431 by mondrake, catch, larowlan, godotislate: Deprecate TestDiscovery test file scanning, use PHPUnit API instead
- Revert "Issue #3497431 by mondrake, catch, larowlan, godotislate: Deprecate TestDiscovery test file scanning, use PHPUnit API instead"
- Issue #3497431 by mondrake, catch, larowlan, godotislate: Deprecate TestDiscovery test file scanning, use PHPUnit API instead
- Issue #3497701 by mstrelan, spokje, catch, quietone: [random test failure] PackageUpdateTest::testPackageUpdate
- Back to dev.