Unsolved Drupal Mysteries

I'd like to talk about the long standing problems in Drupal that we run into from time to time.

Some things we expect to work, but are brittle or limited.

Others are rarely used and poorly documented.

Drupal WTF issue tag.

Needs addition:

  • Translations
    • Layout builder compatibility

Core

[meta] Drupal modernization - 2024

Allow some HTML tags in node titles - 2006

[meta] Smarter UI/API separation for modules - 2010

[regression] missing menu active trail since Drupal 9.5.9 - 2023

Feature to prevent multiple submits keeps submit disabled after back navigation - 2020

Use ARIA disclosure pattern for submenu buttons in vertical toolbar orientation - 2019

Add an 'instant' queue runner - 2011

Avoid using H2 in the menu - 2020 [closed - outdated]

Cleanup HTML heading structure - 2013

Generalize MenuLinkAdd so all local actions can use it - 2016 [fixed 2025]
Change record: https://www.drupal.org/node/3490245

Move 'type' .info.yml file property first for performance (lead by example) - 2014

Add a non blocking batch runner - 2024

Deprecate module_set_weight() - 2018

Performance

[meta] Make Drupal compatible with persistent app servers like ReactPHP, PHP-PM, PHPFastCGI, FrankenPHP, Swoole - 2014

Entity queries are not entirely cheap - 2015

[meta] Performance improvements - 2023

Blocks

Redesign UI for better management of block visibility - 2014

[META] Improve UX for block layout administration page - 2022

Add support for negating path visibility conditions (!=NOT) - 2022

Block settings vertical tabs only have summaries for core conditions - 2016

Allow visibility conditions for regions - 2022

Display active visibility conditions for blocks on the block layout administration page - 2022

Open the configure links on admin/structure/block in a modal - 2014

UMN Usability: Preview feature for blocks - 2008

UI

Tables overflow on mobile - 2019
Claro theme.

Big Pipe

Fix not loading CKEditor 5 and Tour with BigPipe enabled after Drupal 10.4 update - 2024

Editing

[meta] Input filters and text formats - 2010

Forms

HTML5 validation is preventing form submit and not fully accessible - 2012

Make #group FAPI / render feature work on all form/render #types out of the box - 2014

Support removing nested elements in Twig 'without' filter - 2019

$form['#attributes']['data-drupal-selector'] is set to a random value so can't be used for its intended purpose - 2017

Introduce top-level sections for all forms - 2013

Config

Formalize patterns for delete/uninstall of configuration dependencies - 2015

Add a 'disabled' section to config changes page when removing config - 2016

Come up with a design for highly destructive operations in confirm forms - 2016

Configuration change data loss prevention functionality inconsistent, restrictive - 2018

Warning about deleting configuration is easy to overlook - 2017

[meta] Add constraints to all simple configuration - 2018

JSON:API POST/PATCH support for fully validatable config entities - 2014

Add a way to automatically generate basic config forms - 2024

Views

UI fatal caused by views argument handlers no longer can provide their own default argument handling - 2014

Upcast named arguments/named parameters in views - 2015

Bring back contextual links for admin views - 2013

Contextual links in views preview not working - 2015

Views block duplicated contextual links - 2017

[Meta] Convert core listings to Views - 2012

Views argument validators aren't taken into account on access checks - local task point to 404 - 2016

View deleted without notice on deletion of content type, or uninstall of contrib module - 2020

Deleting a view which is referenced in other view by Views Area removes both views - 2020

Don't delete view due to config dependencies being deleted - 2025

Deleted field in Views still gets view dependency warning when deleting content type field - 2021

Remove collapsible details wrapper from Views UI advanced settings - 2017 [fixed 2025]

[META] (Re)introduce Views data integration for core modules - 2012 [solved]

Exposed Filter in Views Redirects to Page Display Path Instead of Block Path - 2024

Illegal choice in grouped exposed filters with enabled option remember (ListField, BooleanOperator - Views filter handlers) - 2017

Add support for selecting the dropbutton_type with the Views dropbutton field - 2025

[PP-1] Use hook_theme_suggestions in views - 2017

Customizable views area handlers ids - 2025

Base path for attachment summary view broken - 2019

Allow usage of WYSIWYG in views text area fields - 2016

CKEditor not available for Views "text" areas - 2017

[PP-1] Use hook_theme_suggestions in views - 2017

View should not be deleted on deletion of content type or uninstall of contrib module, even with a confirmation form - 2020

Views Aggregation

When using aggregation, additional fields should not be included in the grouping function - 2018

Timestamp field only shows as unix when Views aggregation is on and Timestamp field is Min or Max - 2018

Date field is not displaying correct value on a views with aggregation max/min - 2020

Decimal separator and decimals settings ignored when aggregating decimal fields - 2016

Field formatters no longer work for aggregated fields in Views - 2017

Views filter by distinct NID - 2017

Ajax error on views with aggregation - 2023

Missing schema on views with aggregation - 2022 [fixed 10/16/2025]
(Check if this fixes other aggregation issues, or just the config warning).

Views Dates

Using contextual filters for "created Day/Month/Year+Month/Full date" breaks the site when the argument is not numeric and matches the exception value - 2019

Create views filter plugin for date range fields - 2017

[PP-2] Use form element of type date instead textfield when selecting a date in an exposed filter - 2016

Views Ajax

Views ajax reload is removing contextual links - 2018

Ajax exposed filters not working for multiple instances of the same Views block placed on one page - 2020

Views hardcodes exposed filter block form ID's which breaks AJAX when the same form is shown multiple times on one page - 2017 #2894747

Allow multiple instances of the same exposed filter form on a single page - 2018

On a page with multiple Views exposed Ajax enabled forms, multiple throbbers appear on submit - 2017

Exposed forms in a block are not updated by AJAX - 2019

Views pager does not always open page on top of list with ajax enabled - 2025

Triggering RefreshView on a view is making multiple ajax calls - 2018

Prevent multiple ajax calls on views refresh - 2022

Views viewsScrollTop (ScrollTopCommand AJAX command) doesn't work inside Drupal Off canvas dialogs - 2022

Ajax views leave obsolete Drupal.Ajax instances - 2016

Deprecate views_ui_add_ajax_trigger() - 2019

Form Ajax

AJAX system calls attachBehaviors() twice (or more) unnecessarily in forms - 2018

Native browser form validation does not fire when submit buttons use #ajax - 2017

AJAX

[Plan] Gradually replace Drupal's AJAX system with HTMX - 2023

AJAX MessageCommand markup and styling differs from Theme default - 2023

JS messages are themed differently, not using status-messages.html.twig - 2024

Javascript

Implement before and after behavior ordering - 2015

Use JS events instead of Drupal.behaviors - 2012

jQuery

Provide a new library to replace jQuery UI autocomplete - 2019

[meta] Replace JQuery with vanilla Javascript in core - 2019

JavaScript event handling without a full jQuery dependency - 2020

[META] Re-evaluate use of Backbone.js in core - 2020

Theming

[meta] Themes improperly check renderable arrays when determining visibility - 2010

Long-standing architecture flaw: Directly printing a nested element skips important processing (including #access) of parent elements - 2015

Accessing raw values within Twig is hard, and can disempower site-builders - 2022

[meta] Refactor Render API to be OO - 2012

Admin UIs on the front-end are difficult to theme - 2014

Figure out how we want to incorporate web components in Drupal 10 - 2021

Require themes to specify whether they support content editing - 2019

Deprecate $variables['page'] for node.html.twig and node_is_page() - 2024

Allow deprecating theme suggestions - 2020 [RBTC]

Fix regressions and further improve tableheader.js - 2012

Allow schema references in Single Directory Component prop schemas - 2023

Incorrect order and duplicate theme hook suggestions - 2016

Twig debug output does not display all suggestions when an array of theme hooks is passed to #theme - 2013

Wrong entity template suggestion added by views suggestions alter - 2021

[meta] Improve the DX of drupal_render(), renderable arrays and the Render API in general - 2013

Use the builder pattern to make it easier to create render arrays - 2014

Optimize render caching - 2017

[meta] Add a replacement for renderRoot() that returns a cacheable render array instead of a string - 2015

Control the list of behaviors run by Drupal.attachBehaviors - 2014

Use JS events instead of Drupal.behaviors - 2012

Automatically define schema for themes - 2015
DX improvements.

Deprecate theme_get_setting() - 2019

Convert theme engines into services - 2012

[Meta] Track converting Install and Theme hook implementations to OOP - 2024

Add oop support to most hooks currently supported by themes - 2025

Use sane default region order - 2015
Subthemes with undefined regions.

Theme logo image is rendered without dimensions - 2023

Radios and checkboxes not rendered correctly when nested inside other render arrays - 2021

Libraries

Overriding already overridden libraries-override requires knowledge of previous libraries-overrides - 2015

Best practices for handling external libraries in Drupal 8/9/10 and 11 -2015

Sub themes do not inherit "libraries-override" - 2017

Replace custom weights with dependencies in library declarations; introduce "before" and "after" for conditional ordering - 2013

Implement core management of 3rd-party FE libraries - 2017

Layout Builder

Layout template suggestions are not loaded properly - 2017

Dialog

Add a native dialog element to deprecate the jQuery UI dialog - 2013

jQuery UI dialog modals repositions incorrectly on window resize when there is a off canvas rendered - 2019

The position of the toolbar moves above the off-canvas top dialog if a modal dialog is opened - 2018

Nested modals don't work: opening a modal from a modal closes the original - 2016

Error: Cannot read properties of undefined (reading 'settings') with dialog.position.js - 2023

Replace dialog positioning with floating-ui - 2024

Blocks

Add view tab + standard template for block content - 2023

BlockRepository::getVisibleBlocksPerRegion() does an uncached entity query on every request - 2015

Cache

Use multiple get for #pre_render / #cache where possible - 2015

[meta] Finalize the cache contexts API & DX/usage, enable a leap forward in performance - 2015

Translations

[META] Make Layout Builder layouts translatable - 2019

Allow synced Layout override Translations: translating labels and inline blocks - 2018

Allow synced Layout default Translations: translating labels and inline blocks - 2019

Entity view/form mode formatter/widget settings have no translation UI - 2015

Layout Builder

Add visibility control conditions to blocks within Layout Builder - 2017

Consider supporting Layout Builder Overrides for other view modes - 2017

Add visibility control conditions to SECTIONs within Layout Builder - 2019

Layout Builder doesn't respect the view mode set in a hook_entity_view_mode_alter() implementation - 2019

Use layout builder for content add/edit form - 2020

Layout Builder created blocks do not clean up when removed from its layout - 2019 (notes)

Fields

Add field grouping to Drupal core - 2009

Killer feature: Fieldable Fields in core - 2009

Revaluate the concept of 'extra fields' - 2013

[META] Expose Title and other base fields in Manage Display - 2014

confusing error & behavior when creating a new referenced entity containing parentheses - 2017

Move the field storage deletion if the last field has been removed to the UI layer - 2015

Stop automatic storage creation of body field for node - 2024 [fixed 2025]

[Meta] Deprecate text_with_summary - 2024

Add a 'machine_name' widget for string field types with a UniqueField constraint - 2016

Display meaningful error messages according to the link type - 2016

Form display

[PP-1] Improve the manage form display page by untwining field widgets that belong to the main content and sidebar - 2023

[plan] Add layouts to entity displays (both form and view) - 2016

Allow the sidebar for the node form to be used on other entity forms as well - 2017

Components

Provide a new render element for accordion - 2019

Entity

Complex Composite Entities (incl. types, references and revisions) - 2016

[plan] Add layouts to entity displays (both form and view) - 2016

Add a reliable entity-usage system to core - 2023

Deleting an entity with revisions and file/image field does not release file usage of non-default revisions, causing files to linger - 2011

Abstract 'component type' specific code out of EntityDisplay - 2012

Files

Uploaded files are impossible to replace - 2016

Optimize images on file upload - 2016

Files are uploaded even when forms are not submitted - 2022

Allow managed_file form elements to specify FILE_EXISTS_REPLACE behavior - 2018

File entity update is allowed only for user who has uploaded the file - 2024

Dealing with unexpected file deletion due to incorrect file usage - 2016

File usage is not tracked by revision, leading to private files embedded in text fields in old revisions being accessible when they shouldn't be - 2019

Usage of Files Referenced in Entity Reference Fields Not Tracked - 2016

File "in use" does not get set to "0" after being removed from content - 2023

Clarify handling of multiple references to the same file from entities - 2016

Images

Instead of just resizing original image, select an image style to apply on the image being uploaded - 2016

Bugs with images that include image orientation from image EXIF data - 2016

Image should be removed from the folder - 2018

[Meta] High-performance images (nearly) out of the box - 2023

Media

Track media usage and present it to the site builder (in the media library, media view, on media deletion confirmation, etc.) - 2016

Add ability to insert Media inline in CKEditor widget - 2020

Responsive image format for media - 2018

Use "rendered media" (not links) as default media field formatter; add modal to configure the used media view mode - 2021

Dates

Support a per-instance "all-day" option for datetime and datetime range fields - 2016

[meta] DateTime Module Improvements - 2015

Modernize Drupal datetime system - 2024

Dates and dateranges - core handling, storage, and planning for the future - 2019

DateTimeIso8601::setDateTime() vs. DateTimeItem::schema(): (at least) one of them is broken - 2016

Allow end date to be optional - 2016

Timestamp field items are affected by 2038 bug - 2017

[meta] Y2K38: Unix Millennium bug - 2006

CKEditor

CKEditor embedded media previews do not render with attached assets - 2019

Allow editing of Width and Height of embedded <drupal-media> images - 2023

[10.2] CKEditor 5 "left" alignment doesn't inject "text-align-left" class to elements - 2024
EX: paragraph has alignment field set to centered, but description field text is left aligned.

Administration

Restructure the admin interface Information Architecture - 2016

[PLAN] Administration UX improvements - 2023

[META] Gin 6.x: Preparation for merging into core 2025

[META] Admin theme modernisation - 2025

Access

Deprecate node_access_view_all_nodes() - 2019

Accessibility

Add aria-label attribute to navigation menu blocks - 2024

Dropbutton widget not accessible to screen readers - 2023

Forms with required fields marked by asterisk do not have text explaining what the asterisk means - 2019

Navigation

[PLAN] Accessibility review for new Navigation bar - 2023

Elements in closed sidebar are focusable - 2025

Users

Allow custom field to be used as user picture - 2016

Project Browser/Recipes/Site Templates

Add project browser - 2012

[meta] Site template support in core - 2025

Drupal.org

Project Page Enhancements - 2017

Tags