← all change records
#3395582 Plugin types should use PHP attributes instead of annotations
Generated 2026-08-02 14:00 UTC
Matching rules (2)
- from:
fqn: \Drupal\Core\Annotation\Action
to:
fqn: \Drupal\Core\Action\Attribute\Action
- to:
fqn: \Drupal\Component\Plugin\Attribute\AttributeBase
Affected contrib projects (98)
| Project | legacy | in_flight | migrated | installs | files | adopters | |
|---|---|---|---|---|---|---|---|
| pathauto ↗ | 0 | 0 | 1 | 479,241 | 0 | 1 | |
| redirect ↗ | 0 | 0 | 1 | 277,481 | 0 | 1 | |
| search_api ↗ | 0 | 0 | 1 | 169,691 | 0 | 2 | |
| views_bulk_operations ↗ | 0 | 0 | 2 | 157,512 | 0 | 8 | |
| migrate_plus ↗ | 0 | 0 | 1 | 65,166 | 0 | 3 | |
| symfony_mailer ↗ | 0 | 0 | 1 | 45,804 | 0 | 1 | |
| commerce ↗ | 0 | 0 | 1 | 37,667 | 0 | 4 | |
| file_delete ↗ | 0 | 0 | 1 | 24,087 | 0 | 2 | |
| mailchimp ↗ | 0 | 0 | 1 | 23,797 | 0 | 2 | |
| trash ↗ | 0 | 0 | 1 | 21,110 | 0 | 2 | |
| eca ↗ | 0 | 0 | 3 | 19,852 | 0 | 204 | |
| ai ↗ | 0 | 0 | 5 | 18,387 | 0 | 21 | |
| content_lock ↗ | 0 | 0 | 1 | 16,221 | 0 | 1 | |
| tmgmt ↗ | 0 | 0 | 1 | 12,394 | 0 | 3 | |
| genpass ↗ | 0 | 0 | 2 | 12,138 | 0 | 1 | |
| domain ↗ | 0 | 0 | 2 | 11,396 | 0 | 14 | |
| ai_agents ↗ | 0 | 0 | 3 | 10,600 | 0 | 2 | |
| ui_icons ↗ | 0 | 0 | 1 | 9,066 | 0 | 1 | |
| og ↗ | 0 | 0 | 1 | 7,428 | 0 | 9 | |
| workflow ↗ | 0 | 0 | 1 | 5,380 | 0 | 2 | |
| gutenberg ↗ | 0 | 0 | 1 | 5,198 | 0 | 1 | |
| iubenda_integration ↗ | 0 | 0 | 1 | 3,143 | 0 | 2 | |
| registration ↗ | 0 | 0 | 1 | 3,058 | 0 | 6 | |
| quiz ↗ | 0 | 0 | 1 | 2,998 | 0 | 1 | |
| groupmedia ↗ | 0 | 0 | 2 | 2,641 | 0 | 4 | |
| privatemsg ↗ | 0 | 0 | 1 | 2,611 | 0 | 4 | |
| civicrm_entity ↗ | 0 | 0 | 1 | 1,855 | 0 | 1 | |
| eca_tamper ↗ | 0 | 0 | 1 | 1,497 | 0 | 1 | |
| crowdsec ↗ | 0 | 0 | 1 | 1,095 | 0 | 1 | |
| reassign_user_content ↗ | 0 | 0 | 1 | 1,052 | 0 | 1 | |
| markdownify ↗ | 0 | 0 | 1 | 1,028 | 0 | 1 | |
| eca_webform ↗ | 0 | 0 | 1 | 933 | 0 | 4 | |
| markdown_easy ↗ | 0 | 0 | 1 | 824 | 0 | 1 | |
| pdf_to_imagefield ↗ | 0 | 0 | 1 | 783 | 0 | 1 | |
| ai_translate ↗ | 0 | 0 | 2 | 578 | 0 | 1 | |
| consent_manager ↗ | 0 | 0 | 1 | 557 | 0 | 1 | |
| media_folders ↗ | 0 | 0 | 1 | 522 | 0 | 1 | |
| sdc_devel ↗ | 0 | 0 | 1 | 510 | 0 | 1 | |
| tool ↗ | 0 | 0 | 1 | 433 | 0 | 1 | |
| eca_commerce ↗ | 0 | 0 | 1 | 423 | 0 | 2 | |
| mcp ↗ | 0 | 0 | 1 | 356 | 0 | 1 | |
| eca_helper ↗ | 0 | 0 | 1 | 347 | 0 | 32 | |
| bulk_edit_terms ↗ | 0 | 0 | 1 | 332 | 0 | 1 | |
| sdc_styleguide ↗ | 0 | 0 | 2 | 304 | 0 | 2 | |
| resend_register_mail ↗ | 0 | 0 | 1 | 301 | 0 | 1 | |
| log ↗ | 0 | 0 | 1 | 300 | 0 | 4 | |
| eca_metatag ↗ | 0 | 0 | 1 | 266 | 0 | 2 | |
| eca_flag ↗ | 0 | 0 | 1 | 245 | 0 | 1 | |
| address_suggestion ↗ | 0 | 0 | 1 | 239 | 0 | 1 | |
| static_setting_contexts ↗ | 0 | 0 | 1 | 239 | 0 | 1 | |
| eca_state_machine ↗ | 0 | 0 | 1 | 232 | 0 | 1 | |
| field_states ↗ | 0 | 0 | 2 | 218 | 0 | 1 | |
| ai_agents_test ↗ | 0 | 0 | 1 | 212 | 0 | 1 | |
| ai_provider_aws_bedrock ↗ | 0 | 0 | 1 | 211 | 0 | 1 | |
| ai_search ↗ | 0 | 0 | 1 | 206 | 0 | 1 | |
| wisski ↗ | 0 | 0 | 1 | 174 | 0 | 5 | |
| meeting_api ↗ | 0 | 0 | 1 | 163 | 0 | 2 | |
| document_loader ↗ | 0 | 0 | 2 | 139 | 0 | 1 | |
| lms ↗ | 0 | 0 | 2 | 131 | 0 | 6 | |
| eca_content_access ↗ | 0 | 0 | 1 | 96 | 0 | 2 | |
| navigation_plus ↗ | 0 | 0 | 2 | 93 | 0 | 2 | |
| pluggable_entity_view_builder ↗ | 0 | 0 | 1 | 90 | 0 | 1 | |
| token_eca_alter ↗ | 0 | 0 | 1 | 81 | 0 | 1 | |
| content_moderation_bulk_state_change ↗ | 0 | 0 | 1 | 76 | 0 | 1 | |
| configurable_anonymizer ↗ | 0 | 0 | 1 | 73 | 0 | 1 | |
| eca_group ↗ | 0 | 0 | 1 | 55 | 0 | 1 | |
| eca_views_data_export ↗ | 0 | 0 | 1 | 46 | 0 | 1 | |
| eca_entity_print ↗ | 0 | 0 | 1 | 42 | 0 | 2 | |
| give ↗ | 0 | 0 | 1 | 41 | 0 | 1 | |
| advanced_message_subscription ↗ | 0 | 0 | 1 | 40 | 0 | 1 | |
| orchestration ↗ | 0 | 0 | 1 | 40 | 0 | 3 | |
| search_api_solr_dense_vector ↗ | 0 | 0 | 1 | 38 | 0 | 1 | |
| ocr_image ↗ | 0 | 0 | 1 | 31 | 0 | 1 | |
| daterangepickerwidget ↗ | 0 | 0 | 1 | 30 | 0 | 1 | |
| pwa_firebase ↗ | 0 | 0 | 1 | 28 | 0 | 1 | |
| commerce_gc_client ↗ | 0 | 0 | 1 | 21 | 0 | 1 | |
| mail_action ↗ | 0 | 0 | 1 | 18 | 0 | 2 | |
| cas_user_ban ↗ | 0 | 0 | 1 | 17 | 0 | 1 | |
| batch_plugin ↗ | 0 | 0 | 1 | 15 | 0 | 2 | |
| commerce_cart_reminder ↗ | 0 | 0 | 1 | 15 | 0 | 1 | |
| sql_views ↗ | 0 | 0 | 1 | 15 | 0 | 1 | |
| commerce_xero ↗ | 0 | 0 | 1 | 14 | 0 | 1 | |
| drupalfit ↗ | 0 | 0 | 2 | 13 | 0 | 3 | |
| entity_manager ↗ | 0 | 0 | 1 | 12 | 0 | 2 | |
| easy_entity_field ↗ | 0 | 0 | 2 | 11 | 0 | 1 | |
| openai_batch ↗ | 0 | 0 | 2 | 11 | 0 | 2 | |
| views_query ↗ | 0 | 0 | 1 | 11 | 0 | 1 | |
| eca_entity_import ↗ | 0 | 0 | 1 | 10 | 0 | 1 | |
| sms_message ↗ | 0 | 0 | 1 | 10 | 0 | 4 | |
| search_api_ai ↗ | 0 | 0 | 1 | 6 | 0 | 1 | |
| dynamic_yield ↗ | 0 | 0 | 1 | 4 | 0 | 2 | |
| eca_external_workflows ↗ | 0 | 0 | 2 | 4 | 0 | 2 | |
| node_change_default_language ↗ | 0 | 0 | 1 | 3 | 0 | 1 | |
| smallads ↗ | 0 | 0 | 1 | 2 | 0 | 2 | |
| eca_zoom ↗ | 0 | 0 | 1 | 1 | 0 | 11 | |
| plotly ↗ | 0 | 0 | 1 | 1 | 0 | 1 | |
| secure_nodes ↗ | 0 | 0 | 1 | 1 | 0 | 2 | |
| eca_quiz ↗ | 0 | 0 | 1 | 0 | 0 | 1 |