Support CacheOptionalInterface in BlockViewBuilder, use it in language...
Problem/MotivationThe language switcher block is currently not cacheable at all by setting max-age 0. This bubbles up and prevents things like respecting max age for the internal page cache, since any...
View ArticlePrimary tabs order when editing a taxonomy term are reversed
Problem/MotivationIn Drupal 11.2.x-dev and 11.2.2, when viewing or editing a taxonomy term, the order of the "Edit” and "Delete” tabs is reversed, so the second tab now "Delete.” This appears to be a...
View ArticleSimplify agreed commit format
Problem/MotivationOn #3439331: [policy] Decide on format of commit message, a format was agreed. When trying to put it into practice, many issues arose, and some of them might not be solvable.See...
View ArticleDrupal Usability Meeting 2025-10-24
This meeting takes place every Friday at 14:00 UTC (currently 6:00am PT, 9:00am ET). See Time.is to see what that is in your timezone.The meetings are held using Zoom, and a link is posted in the #ux...
View Article[PP-upstream] Support ESLint v9
Problem/MotivationESLint 9.0.0 was released in April 2024, and has a number of breaking changes. ESLint 8 was EOL'ed in October 2024 and is no longer supported. Drupal's coding standards are based on...
View ArticleAdd a style utility API
Problem/MotivationAfter SDC in Drupal 10.1 (July 2023), and the Icon API in Drupal 11.1 (Dec 2025), let’s continue to implement design systems API in Core, in order to be able to build business...
View ArticleReplace SearchBlock service properties with service closures
Problem/MotivationWhile replacing the form builder service in NodeThemeeHooks with a service closure in #3543386: Use service closure for form builder in node module hook classes, @berdir noted that on...
View ArticleMake render API documentation more discoverable
Problem/MotivationFollow-up for #2273925: Ensure #markup is XSS escaped in Renderer::doRender()It would seem sane to add documentation that #markup goes through checkAdminXss(), wherever we document...
View ArticleEntityTypeBundleInfo static caching is not language aware
Problem/MotivationEntityTypeBundleInfo static caching is not language aware.Which leads to stale wrong-language content when language changes.Steps to reproduceAfter quire some debugging it boils down...
View ArticleUnsupported operand types: array + null in Drupal\field_ui\...
Problem/MotivationTypeError: Unsupported operand types: array + null in Drupal\field_ui\Form\EntityViewDisplayEditForm->Drupal\field_ui\Form\{closure}() (line 166 of...
View ArticleHandle migration test coverage for Contact
Problem/MotivationContact module is being deprecated. Usages is tests not in Contact needs to removed and test coverage moved to the Contact module.Steps to reproduceProposed resolutionAdd migration...
View ArticleFix @todo in TestRunnerKernel
Problem/MotivationLet's try removing this odd code... // Prime the module list and corresponding Extension objects. // @todo Remove System module. Needed because // \Drupal\Core\Datetime\DateFormatter...
View ArticleBranch 11.3.x
The 11.3.x branch will be created a few days prior to the 11.3.0-alpha1 release window.
View ArticleUpdate links in Drupal Theming Guide in READMES and info files
Problem/MotivationIn core documentation, there are still many references to the old drupal theming guide url: https://www.drupal.org/docs/8/theming. While these do resolve on a redirect, these links...
View ArticleRemove create method from controllers that use autowire trait
Problem/MotivationSince #3394870: Allow controller service wiring via constructor parameter attributes it's possible to autowire services in controllers extending ControllerBase. This means we can drop...
View ArticleUse a 'main' branch as the development target
Problem/MotivationFollow-up from #3294814: [Policy] Branch Naming: Use an 11.x branch for HEAD, then use 'main' when d.o can support it....
View ArticleBrowserTestBase::initMink crashes if not using DrupalTestBrowser
Problem/MotivationIf using a different driver instance and not DrupalTestBrowser \Drupal\Tests\BrowserTestBase::initMink crashes as it assumes the abstract browser instance has a method for setting the...
View ArticleMove field_layout test integration from layout_builder to field_layout
Problem/MotivationField Layout is being deprecated.Field layout settings are used in layout_builder.install foreach ($displays as $display) { // Create the first section from any existing Field Layout...
View ArticleMake hook testing with kernel tests very simple
Problem/MotivationNow that we have an OO hook test maybe we can make hook testing with kernel tests something really simple and allow kernel tests define hooks and discover and register then in a...
View ArticleNodeController::revisionOverview is uncacheable
Problem/MotivationNodeController calls $this->renderer->addCacheableDependency with an object that doesn't implement CacheableDependencyInterface, this results in an uncacheable page for...
View ArticleLayout Builder attempts to builds sections to determine if it is disabled
Problem/MotivationAs long as the module is installed, \Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay::buildMultiple() will run for every entity displayed on the site. The concept of...
View Articlemake it easier to instantiate ConfigImporter
The ConfigImporter needs a ton of services injecting to its constructor.This is a pain because anything wishing to use it (such as the config UI provided by core's config module, or Drush, or the...
View ArticleDeprecate CommentManagerInterface::getCountNewComments
Problem/MotivationPart of #3524379: [meta] Remove usage of history module from comment moduleThis will need to move to the history module. Theoretically it could have other usage outside of history...
View ArticleRefine labels and descriptions for field types
Problem/MotivationThis issue is a follow-up for #3356894: Make field selection less overwhelming by introducing groups to refine the newly added field descriptions if wanted. Steps to reproduceVisit...
View ArticleModules cannot grant access using hook_file_download()
from FileDownloadController:If one or more modules returned headers the download will start with the returned headers. If a module returns -1 an AccessDeniedHttpException will be thrown.This does not...
View ArticleNon-english installed site. Unable to add "English" as a language...
Problem/MotivationUnable to enable "English" as a language if a site is installed in an other language.Steps to reproducedrush site:install --db-url= --site-name= --site-mail= --account-name=...
View ArticleFix 'DocComment.MissingShort' in KernelTest tests
Problem/MotivationThe sniff 'Drupal.Commenting.DocComment.MissingShort' is not enabled.Steps to reproduceProposed resolutionFix violations in KernelTest tests.Remaining tasksReview.User interface...
View ArticleAdd oop support to hooks currently supported by themes
Problem/MotivationModule hooks have successfully been converted to OOP. It would be great to convert Theme hooks to OOP.This requires several changes and architectural changes.Add theme namespaces to...
View Article[meta] Refactor and improve theme and module installer's
Problem/MotivationInstall and uninstall is fu ll if weird edge cases and need careful handling of services around container rebuilds. It would be great to refactor and garden this process. Steps to...
View ArticleDeprecate theme_get_setting()
Problem/MotivationReason #2999721: [META] Deprecate the legacy include files before Drupal 9.This issue is also another step in removing drupal_staticProposed resolutionDeprecate theme_get_setting()...
View ArticleSupport the AutowireServiceClosure attribute in AutowireTrait to inject...
Problem/MotivationThe idea of using injecting service closures into plugins was introduced in #3544405: Replace SearchBlock service properties with service closures. This allows two services used by...
View ArticleAdd support for autowiring to controller methods
Problem/MotivationSymfony supports auto-wiring of controller methods. For example:class SomeController { public function someMethod(ConfigFactoryInterface $configFactory) { // Here $configFactory is...
View ArticleMissing accessible legend for required field indicator in node forms
Problem/MotivationWhen a field is marked as “Required”, Drupal displays a red bullet (•) or asterisk next to the field label, but no accompanying text explains its meaning (“* indicates required...
View ArticleAdd support for selecting the dropbutton_type with the Views dropbutton field
Problem/MotivationViews provides a nice Dropbutton field to display links using a dropbutton element. The dropbutton element has support for the #dropbutton_type property, however this property is not...
View ArticleUnable to add query param using hook_oembed_resource_url_alter
Problem/MotivationI am using hook_oembed_resource_url_alter(array &$parsed_url, \Drupal\media\OEmbed\Provider $provider) {} hook in my custom module to add query parameter like below function...
View ArticleIntroduce a ConnectionParameters value object to store database connection...
Problem/MotivationDatabase connection configuration is stored in arrays that are more or less taken as is from info in the $databases array in settings.php.This makes the entire management of these...
View ArticleAllow to select reference method in link field type for internal links
Problem/MotivationAs link widget for internal links allows to have entity reference autocomplete, it would be nice to have opportunity to select the reference method the same way as it is possible for...
View ArticleMedia items translate items in modal
Problem/MotivationIn https://www.drupal.org/project/drupal/issues/2985168 they are adding an edit button for media items on the node edit page. This improves usability a lot. This issue improves on...
View ArticleConvert "Top 'access denied' errors.", "Top...
Problem/MotivationThe listings: Top 'access denied' errors.Top 'page not found' errors.Top search phrases.Provided by dblog are using some database specific logic to return information. I'm not even...
View ArticleRename the table headers on the watchdog 403/404 controllers
Updated: Comment 0Problem/MotivationThis 403/404 page should better describe that the message is actually the page on which the access denied/not found happened.Proposed resolutionRemaining tasksUser...
View ArticleInclude most recent date in page not found and access denied reports
Problem/MotivationThe reports at /admin/reports/page-not-found and /admin/reports/access-denied would be more useful if they included the date and time of the most recent instance of each item.Steps to...
View Article[PP-1] Expose target type, selection handler and selection settings in...
Problem/Motivation#2418017: Implement autocomplete UI for the link widget implemented the 'entity_autocomplete' form element in LinkWidget but hardcoded the target type to 'node'.Proposed resolutionWe...
View Article[PP-1] Allow translation of individual Link subfields
Problem/MotivationIn images, we can configure that only title and alt texts are translated, and not the original file. I think it will make sense in some cases to do the same for links, where you may...
View ArticleAccess forbidden when editing/deleting a block from the block layout with a...
Problem/MotivationEditor that have access to the block layout, manually change the create block machine name and add a "." dot at the beginning. This then create a block that cannot be edit or delete...
View ArticleRemove unused class property...
Problem/MotivationThere are no usages of \Drupal\views\Plugin\views\argument\Date::$option_name.Steps to reproduceProposed resolutionRemaining tasksUser interface changesIntroduced terminologyAPI...
View ArticleHandle serialization and unserialization of service closures
Problem/MotivationAs using closures becomes more prevalent in order to inject services lazily, whether in service definition argument definitions or manually created closures in plugin classes (such as...
View ArticleRefactor \Drupal\link\AttributeXss from SA-CORE-2025-004
Problem/Motivationhttps://www.drupal.org/sa-core-2025-004 added some XSS filtering code to the link module which ideally would live in core itself.The aim is not to introduce new APIs or make BC...
View ArticleReturn only main content for endpoints designed to service htmx requests
Problem/MotivationWhen we intentionally build responses to service HTMX requests it is the main content that we want to send. We don't want or need all the surrounding blocks that Drupal generates. In...
View ArticleRecommend PHP 8.4 for Drupal 11.3 and 10.6
Problem/MotivationDrupal 11.2 recommends PHP 8.3, but PHP 8.4 has been available for nearly a year. Core currently only has two known bugs being tracked for PHP 8.4 compatibility, one of which is...
View Article[meta] Release preparation steps for 11.3.0 and 10.6.0
Release preparation worksheet11.3.0 and 10.6.0 release prep spreadsheet(Preparation issue: #3532966: Create 11.3.0 and 10.6.0 release prep spreadsheet)Committer Google Drive folder (restricted...
View Article