Skip to main content
Home
Drupal life hacks

Main navigation

  • Drupal
  • React
  • WP
  • Contact
  • About
User account menu
  • Log in

Breadcrumb

  1. Home

Drupal 11.3.x Change: Block Content Module No Longer Ships with the Body Field

By admin, 2 October, 2025

In Drupal 11.3.x, the block_content module has dropped the automatic creation of the default Body field (field.storage.block_content.body.yml). This is part of an ongoing effort to reduce assumptions in core and give site builders more control over content architecture.


What Changed?

Previously, when you enabled the Custom Block module (block_content), every custom block automatically had a Body field. That field was defined in:

field.storage.block_content.body.yml 

Starting from Drupal 11.3.x, that file is no longer included.

Any module, install profile, or recipe expecting this field to exist will now fail or produce empty blocks.


How to Check If Your Project Is Affected

Run through this quick checklist:

✅ 1. Do you use the "Basic block" or any block type that had a Body field?

  • Go to Structure → Block Layout → Custom block library → Add custom block

  • If "Body" is missing, you're affected.

✅ 2. Do you have custom code assuming $block->body->value exists?

Search your codebase for:

body 
field_body 
$block->get('body') 

✅ 3. Do you import configuration that references:

  • field.storage.block_content.body

  • field.field.block_content.[TYPE].body

If so, config import will fail or skip those fields.

✅ 4. Are you using a custom install profile (e.g. corporate distro, recipe, or a starter kit)?

Open config/install/ in your profile and check if you assumed the field was already there.

If any of the above is true, you need to manually define the field or enable the compatibility module.


What Should Developers Do?

✅ Option 1: Temporary Compatibility Module (Deprecated in Drupal 13)

Enable:

block_content_storage_body_field 

This restores the legacy body field but will be removed before Drupal 13.


✅ Option 2 (Recommended): Ship Your Own Body Field Storage

Create:

config/install/field.storage.block_content.body.yml 
 
langcode: en 
status: true 
dependencies: 
  module: 
    - block_content 
    - text 
id: block_content.body 
field_name: body 
entity_type: block_content 
type: text_with_summary 
settings: {  } 
module: text 
locked: false 
cardinality: 1 
translatable: true 
indexes: {  } 
persist_with_no_fields: true 
custom_storage: false 

Then attach it to a block type:

config/install/field.field.block_content.basic.body.yml 
 
langcode: en 
status: true 
dependencies: 
  config: 
    - field.storage.block_content.body 
    - block_content.type.basic 
id: block_content.basic.body 
field_name: body 
entity_type: block_content 
bundle: basic 
label: 'Body' 
required: false 
settings: 
  display_summary: true 
field_type: text_with_summary 

Who Is Affected?

RoleImpact
Site Builders / AdministratorsNew custom block types no longer include a Body field by default.
EditorsExpected block content fields may disappear after update.
Module / Profile DevelopersMust now explicitly define body storage.

Summary

Before 11.3.xAfter 11.3.x
Enabling block_content auto-created a Body field.No Body field — must be created manually or added via compatibility module.

This change promotes flexibility and avoids forcing a Body field on every block — but older projects may break silently if not updated.

Tags

  • #Drupal Planet
  • Drupal Body field

Comments

About text formats

Restricted HTML

  • Allowed HTML tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.
Powered by Drupal