← all change records
#3551652 Hooks in themes can now be OOP
Generated 2026-08-02 14:00 UTC
Matching rules (4)
- attribute_fqn: \Drupal\Core\Hook\Attribute\Hook
kind: attribute_predicate
to:
arg: 0
string_in:
- css_alter
- js_alter
- js_settings_alter
- library_info_alter
- form_alter
- form_BASE_FORM_ID_alter
- form_FORM_ID_alter
- element_info_alter
- page_attachments_alter
- theme_registry_alter
- theme_suggestions_alter
- theme_suggestions_HOOK_alter
- views_ui_display_tab_alter
- views_ui_display_top_alter
- plugin_filter_layout_alter
- plugin_filter_layout__layout_alter
- views_pre_render
- views_post_render
- theme
- preprocess
- preprocess_HOOK
- from:
fqn: '\Drupal\Core\DrupalKernel::getModulesParameter'
- from:
fqn: '\Drupal\Core\DrupalKernel::getModuleFileNames'
- from:
fqn: '\Drupal\Core\DrupalKernel::getModuleNamespacesPsr4'
Affected contrib projects (170)
| Project | legacy | in_flight | migrated | installs | files | adopters | |
|---|---|---|---|---|---|---|---|
| token ↗ | 0 | 0 | 1 | 524,321 | 0 | 0 | |
| webform ↗ | 0 | 0 | 1 | 346,817 | 0 | 0 | |
| metatag ↗ | 0 | 0 | 1 | 342,791 | 0 | 0 | |
| search_api ↗ | 0 | 0 | 1 | 169,691 | 0 | 0 | |
| honeypot ↗ | 0 | 0 | 1 | 144,176 | 0 | 0 | |
| rules ↗ | 0 | 0 | 1 | 81,263 | 0 | 0 | |
| smart_trim ↗ | 0 | 0 | 1 | 62,790 | 0 | 0 | |
| search_api_solr ↗ | 0 | 0 | 1 | 59,337 | 0 | 0 | |
| seven ↗ | 0 | 0 | 1 | 58,614 | 0 | 0 | |
| geolocation ↗ | 0 | 0 | 1 | 46,359 | 0 | 0 | |
| components ↗ | 0 | 0 | 1 | 45,928 | 0 | 0 | |
| commerce ↗ | 0 | 0 | 1 | 37,667 | 0 | 0 | |
| image_effects ↗ | 0 | 0 | 1 | 35,196 | 0 | 0 | |
| office_hours ↗ | 0 | 0 | 1 | 21,362 | 0 | 0 | |
| trash ↗ | 0 | 0 | 1 | 21,110 | 0 | 0 | |
| eca ↗ | 0 | 0 | 2 | 19,852 | 0 | 0 | |
| charts ↗ | 0 | 0 | 2 | 19,422 | 0 | 0 | |
| group ↗ | 0 | 0 | 2 | 19,176 | 0 | 0 | |
| ai ↗ | 0 | 0 | 3 | 18,387 | 0 | 0 | |
| content_lock ↗ | 0 | 0 | 1 | 16,221 | 0 | 0 | |
| commerce_shipping ↗ | 0 | 0 | 1 | 15,606 | 0 | 0 | |
| site_verify ↗ | 0 | 0 | 1 | 13,905 | 0 | 0 | |
| modeler_api ↗ | 0 | 0 | 1 | 12,149 | 0 | 0 | |
| genpass ↗ | 0 | 0 | 2 | 12,138 | 0 | 0 | |
| project_browser ↗ | 0 | 0 | 1 | 11,914 | 0 | 0 | |
| book ↗ | 0 | 0 | 1 | 11,583 | 0 | 0 | |
| domain ↗ | 0 | 0 | 1 | 11,396 | 0 | 0 | |
| dashboard ↗ | 0 | 0 | 1 | 11,307 | 0 | 0 | |
| navigation_extra_tools ↗ | 0 | 0 | 1 | 9,860 | 0 | 0 | |
| layout_builder_iframe_modal ↗ | 0 | 0 | 1 | 9,403 | 0 | 0 | |
| canvas ↗ | 0 | 0 | 1 | 8,549 | 0 | 0 | |
| moderation_dashboard ↗ | 0 | 0 | 1 | 8,261 | 0 | 0 | |
| name ↗ | 0 | 0 | 1 | 6,779 | 0 | 0 | |
| advancedqueue ↗ | 0 | 0 | 1 | 6,276 | 0 | 0 | |
| poll ↗ | 0 | 0 | 1 | 6,073 | 0 | 0 | |
| ai_dashboard ↗ | 0 | 0 | 1 | 5,945 | 0 | 0 | |
| image_field_caption ↗ | 0 | 0 | 1 | 5,675 | 0 | 0 | |
| workflow ↗ | 0 | 0 | 2 | 5,380 | 0 | 0 | |
| byte_theme ↗ | 0 | 0 | 1 | 5,293 | 0 | 0 | |
| mercury ↗ | 0 | 0 | 1 | 5,198 | 0 | 0 | |
| custom_field ↗ | 0 | 0 | 1 | 4,942 | 0 | 0 | |
| menu_item_fields ↗ | 0 | 0 | 1 | 4,658 | 0 | 0 | |
| securelogin ↗ | 0 | 0 | 1 | 4,528 | 0 | 0 | |
| toc_js ↗ | 0 | 0 | 1 | 4,384 | 0 | 0 | |
| events_log_track ↗ | 0 | 0 | 1 | 3,533 | 0 | 0 | |
| iubenda_integration ↗ | 0 | 0 | 1 | 3,143 | 0 | 0 | |
| registration ↗ | 0 | 0 | 1 | 3,058 | 0 | 0 | |
| privatemsg ↗ | 0 | 0 | 1 | 2,611 | 0 | 0 | |
| canvas_full_html ↗ | 0 | 0 | 1 | 2,363 | 0 | 0 | |
| helper ↗ | 0 | 0 | 1 | 2,267 | 0 | 0 | |
| commerce_cart_redirection ↗ | 0 | 0 | 1 | 1,860 | 0 | 0 | |
| civicrm_entity ↗ | 0 | 0 | 1 | 1,855 | 0 | 0 | |
| textimage ↗ | 0 | 0 | 1 | 1,759 | 0 | 0 | |
| layout_builder_ids ↗ | 0 | 0 | 1 | 1,729 | 0 | 0 | |
| domain_path ↗ | 0 | 0 | 2 | 1,691 | 0 | 0 | |
| dark_mode_toggle ↗ | 0 | 0 | 1 | 1,590 | 0 | 0 | |
| frontend_editing ↗ | 0 | 0 | 1 | 1,572 | 0 | 0 | |
| jquery_downgrade ↗ | 0 | 0 | 1 | 1,527 | 0 | 0 | |
| menu_migration ↗ | 0 | 0 | 2 | 1,501 | 0 | 0 | |
| mercury_editor ↗ | 0 | 0 | 1 | 1,474 | 0 | 0 | |
| radioactivity ↗ | 0 | 0 | 1 | 1,097 | 0 | 0 | |
| media_entity_link ↗ | 0 | 0 | 1 | 1,079 | 0 | 0 | |
| hms_field ↗ | 0 | 0 | 1 | 1,064 | 0 | 0 | |
| prevnext ↗ | 0 | 0 | 1 | 972 | 0 | 0 | |
| barcodes ↗ | 0 | 0 | 1 | 945 | 0 | 0 | |
| quote ↗ | 0 | 0 | 2 | 835 | 0 | 0 | |
| views_attach_library ↗ | 0 | 0 | 1 | 703 | 0 | 0 | |
| browsersync ↗ | 0 | 0 | 1 | 502 | 0 | 0 | |
| ui_suite_bootstrap ↗ | 0 | 0 | 1 | 492 | 0 | 0 | |
| block_content_suggestions ↗ | 0 | 0 | 1 | 433 | 0 | 0 | |
| entity_access_password ↗ | 0 | 0 | 1 | 367 | 0 | 0 | |
| field_widget_actions ↗ | 0 | 0 | 1 | 356 | 0 | 0 | |
| canvas_extjs ↗ | 0 | 0 | 1 | 336 | 0 | 0 | |
| term_glossary ↗ | 0 | 0 | 1 | 325 | 0 | 0 | |
| log ↗ | 0 | 0 | 1 | 300 | 0 | 0 | |
| bootstrap5_admin ↗ | 0 | 0 | 1 | 241 | 0 | 0 | |
| flowdrop ↗ | 0 | 0 | 3 | 240 | 0 | 0 | |
| layout_builder_widget ↗ | 0 | 0 | 1 | 237 | 0 | 0 | |
| suggestion ↗ | 0 | 0 | 1 | 237 | 0 | 0 | |
| wse ↗ | 0 | 0 | 1 | 227 | 0 | 0 | |
| admin_toolbar_messages ↗ | 0 | 0 | 1 | 198 | 0 | 0 | |
| workbench_tabs ↗ | 0 | 0 | 1 | 191 | 0 | 0 | |
| usfedgov_google_analytics ↗ | 0 | 0 | 1 | 190 | 0 | 0 | |
| pager ↗ | 0 | 0 | 1 | 181 | 0 | 0 | |
| fileslog ↗ | 0 | 0 | 1 | 178 | 0 | 0 | |
| varbase_components ↗ | 0 | 0 | 1 | 177 | 0 | 0 | |
| pathauto_entity_parent ↗ | 0 | 0 | 1 | 149 | 0 | 0 | |
| document_loader ↗ | 0 | 0 | 1 | 139 | 0 | 0 | |
| lms ↗ | 0 | 0 | 1 | 131 | 0 | 0 | |
| search_api_typesense ↗ | 0 | 0 | 1 | 127 | 0 | 0 | |
| domain_extras ↗ | 0 | 0 | 1 | 122 | 0 | 0 | |
| swiffy_slider ↗ | 0 | 0 | 1 | 114 | 0 | 0 | |
| postoffice ↗ | 0 | 0 | 1 | 102 | 0 | 0 | |
| tripal ↗ | 0 | 0 | 1 | 99 | 0 | 0 | |
| viewer ↗ | 0 | 0 | 1 | 97 | 0 | 0 | |
| config_warning ↗ | 0 | 0 | 1 | 91 | 0 | 0 | |
| gleap ↗ | 0 | 0 | 1 | 91 | 0 | 0 | |
| trace_mail_log ↗ | 0 | 0 | 1 | 90 | 0 | 0 | |
| contextual_image_widget_crop ↗ | 0 | 0 | 1 | 77 | 0 | 0 | |
| qr_generator ↗ | 0 | 0 | 1 | 70 | 0 | 0 | |
| webform_intl_tel_national_mode ↗ | 0 | 0 | 1 | 68 | 0 | 0 | |
| unicode_soft_hyphens ↗ | 0 | 0 | 1 | 65 | 0 | 0 | |
| facets_range_input ↗ | 0 | 0 | 1 | 63 | 0 | 0 | |
| crm ↗ | 0 | 0 | 1 | 62 | 0 | 0 | |
| change_labels ↗ | 0 | 0 | 1 | 54 | 0 | 0 | |
| datetime_reset ↗ | 0 | 0 | 1 | 52 | 0 | 0 | |
| entity_vdts ↗ | 0 | 0 | 1 | 50 | 0 | 0 | |
| token_browser ↗ | 0 | 0 | 1 | 48 | 0 | 0 | |
| drulma_companion ↗ | 0 | 0 | 1 | 44 | 0 | 0 | |
| group_media_bulk_upload ↗ | 0 | 0 | 1 | 44 | 0 | 0 | |
| paragraph_usage_dashboard ↗ | 0 | 0 | 1 | 44 | 0 | 0 | |
| form_layout ↗ | 0 | 0 | 1 | 43 | 0 | 0 | |
| patternkit ↗ | 0 | 0 | 1 | 40 | 0 | 0 | |
| views_themeable_text_area ↗ | 0 | 0 | 1 | 40 | 0 | 0 | |
| paragraph_group ↗ | 0 | 0 | 2 | 39 | 0 | 0 | |
| advanced_header_field ↗ | 0 | 0 | 1 | 38 | 0 | 0 | |
| media_opengraph ↗ | 0 | 0 | 1 | 38 | 0 | 0 | |
| dropdown_pager ↗ | 0 | 0 | 1 | 37 | 0 | 0 | |
| ajax_cart_update ↗ | 0 | 0 | 2 | 35 | 0 | 0 | |
| login_monitor ↗ | 0 | 0 | 1 | 34 | 0 | 0 | |
| phoney ↗ | 0 | 0 | 1 | 29 | 0 | 0 | |
| pwa_firebase ↗ | 0 | 0 | 1 | 28 | 0 | 0 | |
| vocabulary_clone ↗ | 0 | 0 | 1 | 25 | 0 | 0 | |
| hal_publications ↗ | 0 | 0 | 1 | 24 | 0 | 0 | |
| exclusive_boolean ↗ | 0 | 0 | 1 | 23 | 0 | 0 | |
| soundcite ↗ | 0 | 0 | 1 | 23 | 0 | 0 | |
| media_remote_hls ↗ | 0 | 0 | 1 | 21 | 0 | 0 | |
| content_filter ↗ | 0 | 0 | 1 | 19 | 0 | 0 | |
| ip_info ↗ | 0 | 0 | 1 | 19 | 0 | 0 | |
| media_scroller ↗ | 0 | 0 | 1 | 18 | 0 | 0 | |
| work_time ↗ | 0 | 0 | 1 | 18 | 0 | 0 | |
| librejs ↗ | 0 | 0 | 1 | 17 | 0 | 0 | |
| page_analytics ↗ | 0 | 0 | 1 | 17 | 0 | 0 | |
| coveo ↗ | 0 | 0 | 2 | 15 | 0 | 0 | |
| ai_webform_guard ↗ | 0 | 0 | 1 | 14 | 0 | 0 | |
| require_revision ↗ | 0 | 0 | 1 | 13 | 0 | 0 | |
| select_a11y_ng ↗ | 0 | 0 | 1 | 13 | 0 | 0 | |
| swagger_php ↗ | 0 | 0 | 1 | 13 | 0 | 0 | |
| workspaces_access ↗ | 0 | 0 | 1 | 13 | 0 | 0 | |
| livre ↗ | 0 | 0 | 1 | 12 | 0 | 0 | |
| local_taskbar ↗ | 0 | 0 | 1 | 12 | 0 | 0 | |
| experience_builder ↗ | 0 | 0 | 2 | 11 | 0 | 0 | |
| rocketship_theme_starter ↗ | 0 | 0 | 1 | 10 | 0 | 0 | |
| cache_pilot ↗ | 0 | 0 | 1 | 8 | 0 | 0 | |
| reading_progress_bar ↗ | 0 | 0 | 1 | 8 | 0 | 0 | |
| translation_bliss ↗ | 0 | 0 | 1 | 8 | 0 | 0 | |
| copyright_notice ↗ | 0 | 0 | 1 | 6 | 0 | 0 | |
| public_key_credential_source ↗ | 0 | 0 | 1 | 6 | 0 | 0 | |
| rcr ↗ | 0 | 0 | 2 | 6 | 0 | 0 | |
| text_clarity_checker ↗ | 0 | 0 | 1 | 6 | 0 | 0 | |
| basic_ads ↗ | 0 | 0 | 1 | 5 | 0 | 0 | |
| htmx_extras ↗ | 0 | 0 | 1 | 4 | 0 | 0 | |
| recaptcha_preloader ↗ | 0 | 0 | 1 | 4 | 0 | 0 | |
| steam_login ↗ | 0 | 0 | 1 | 4 | 0 | 0 | |
| views_lazy_renderer ↗ | 0 | 0 | 2 | 4 | 0 | 0 | |
| webform_error_field ↗ | 0 | 0 | 1 | 4 | 0 | 0 | |
| link_filebrowser ↗ | 0 | 0 | 1 | 3 | 0 | 0 | |
| user_email_preview ↗ | 0 | 0 | 1 | 3 | 0 | 0 | |
| dark_mode_user ↗ | 0 | 0 | 1 | 2 | 0 | 0 | |
| group_inline_entity_form ↗ | 0 | 0 | 1 | 2 | 0 | 0 | |
| tlsrpt ↗ | 0 | 0 | 1 | 2 | 0 | 0 | |
| diboo_core ↗ | 0 | 0 | 1 | 1 | 0 | 0 | |
| paragraphs_gantt ↗ | 0 | 0 | 1 | 1 | 0 | 0 | |
| plotly ↗ | 0 | 0 | 1 | 1 | 0 | 0 | |
| rendered_entity_list_formatter ↗ | 0 | 0 | 1 | 1 | 0 | 0 | |
| satis_hub ↗ | 0 | 0 | 1 | 1 | 0 | 0 | |
| straker_translate ↗ | 0 | 0 | 1 | 1 | 0 | 0 | |
| users_account_modal ↗ | 0 | 0 | 1 | 1 | 0 | 0 | |
| config_guardian ↗ | 0 | 0 | 1 | 0 | 0 | 0 | |
| views_conditional_text ↗ | 0 | 0 | 1 | 0 | 0 | 0 |