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

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

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

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

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

Views Aggregation

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

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

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

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

Theming

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

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

[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

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

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

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

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

CKEditor

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

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

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

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

Tags