Drupal is a registered trademark of Dries Buytaert
Search API Solr 4.4.0 Minor update available for module search_api_solr (4.4.0). Page Manager 8.x-4.0 Major update available for module page_manager (8.x-4.0). Trash 3.1.0-beta2 New beta version released for module trash (3.1.0-beta2). Commerce AutoSKU 3.0.1 Minor update available for module commerce_autosku (3.0.1). Custom Field 4.0.10 Minor update available for module custom_field (4.0.10). Alternative login ID & display names 2.0.12 Minor update available for module alt_login (2.0.12). EntityReference UUID 3.0.1 Minor update available for module entity_reference_uuid (3.0.1). LocalGov Publications Importer 1.1.1 Minor update available for module localgov_publications_importer (1.1.1). Configuration Override Warn 8.x-1.6 Module config_override_warn updated after 10 months of inactivity (8.x-1.6). Table Alternate Rows Module table_altrow crossed 1,000 active installs.

This module provides compatibility for contributed modules that depend on the node body field. It ensures that modules can be installed on older Drupal versions where the body field is not yet a separate sub-module, while also working correctly on newer versions where it is.

This module is discontinued because it was supposed to be a matepackage, but that can't be done with module projects.

This module provides a forward-compatibility polyfill for the node_storage_body_field sub-module introduced in Drupal 11.3 (#3447617).

In Drupal 11.3, field.storage.node.body was moved out of the Node module into a new node_storage_body_field sub-module. Contributed modules that ship node types with a body field must now declare a dependency on node_storage_body_field to ensure the field storage config exists when their module is installed. However, this creates a compatibility problem: adding node_storage_body_field as a dependency breaks installation on Drupal 10.x and 11.0–11.2, where that sub-module does not exist.

What this module does

On Drupal 10.x / 11.0–11.2 (version 1.x):
Provides an empty shim node_storage_body_field module that satisfies the dependency. No config is shipped — the Node module already provides field.storage.node.body on these core versions.

On Drupal 11.3+ (version 2.x):
Empty metapackage. Core already provides node_storage_body_field, so this package is a no-op.
Important note: Unfortunately, metapackages without an info.yml won't work since the composer.json gets the drupal/core requirement based on the core_version_requirment key from the info.yml.

Why not config/optional?

Moving field.storage.node.body to config/optional does not work reliably. Drupal's ConfigInstaller::checkConfigurationToInstall() validates all config/install dependencies for all modules being installed in a single operation, including during install profile execution and drush en with dependencies. Optional config is either deferred (during profile install) or only processed after all config/install is validated, causing UnmetDependenciesException failures.

Usage

Add to your module's composer.json:

"require": {
    "drupal/backport_node_storage_body_field": "^1 || ^2"
}

Add to your module's .info.yml:

dependencies:
  - backport_node_storage_body_field:backport_node_storage_body_field

Requirements

  • 1.x: Drupal core >=10.3 <11.3
  • 2.x: Drupal core >=11.3

Activity

Total releases
7
First release
Mar 2026
Latest release
4 months ago
Releases (12 mo)
7 ▲ from 0
Maintenance
Active

Release Timeline

Releases

Version Type Release date
1.2.1 Stable Mar 11, 2026
2.1.1 Stable Mar 11, 2026
1.2.0 Stable Mar 11, 2026
1.1.0 Stable Mar 9, 2026
2.1.0 Stable Mar 9, 2026
2.0.0 Stable Mar 9, 2026
1.0.0 Stable Mar 9, 2026