---
title: "Breaking: #80412 - New shared content element TypoScript library object for Fluid Styled Content"
manual: "TYPO3 Core Changelog"
version: "main"
permalink: "https://docs.typo3.org/permalink/changelog:breaking-80412"
source: "Changelog/8.7/Breaking-80412-NewSharedContentElementTyposcriptLibraryObjectForFluidStyledContent.rst"
modified: "2026-09-15T10:46:36+00:00"
---

# Breaking: #80412 - New shared content element TypoScript library object for Fluid Styled Content

See [forge#80412](https://forge.typo3.org/issues/80412)

## Description

To solve an inconsistency issue for API based content element registration between
CSS Styled Content (CSC) and Fluid Styled Content (FSC) through `Extbase` or
`addPItoST43` we are now introducing a new shared content object for content elements
and drop the active usage of `lib.fluidContent`.

The generated code relied on the existence of the removed `lib.stdheader` and also
ignored layouts, frames, spacebefore, spaceafter in context of Fluid Styled Content.

For content element registration the TypoScript `lib.contentElement` is now used for `CSC` and `FSC`
and replaces the usage of `lib.fluidContent`. The generated code was slightly
adjusted to match the requirements of all content rendering definitions and can be
adapted to the specific needs of a content element rendering definition anytime
since a reference is used now instead of a hard definition.

### Generated code before change

```typoscript
tt_content.myce = COA
tt_content.myce {
   10 =< lib.stdheader
   20 =< plugin.myContent
}
```

### Generated code after change

```typoscript
tt_content.myce =< lib.contentElement
tt_content.myce {
   templateName = Generic
   20 =< plugin.myContent
}
```

### CSS Styled Content

CSS Styled Content adds the missing `lib.stdheader` and everything works as
before, no migration or adjustments to your code necessary. Because `COA`
does not understand the option `templateName` it will simply be ignored.

```typoscript
lib.contentElement = COA
lib.contentElement {
   10 =< lib.stdheader
}
```

### Fluid Styled Content

Fluid Styled Content adds the logic it needs through `lib.contentElement`.
All content elements registered through the TYPO3 APIs will now share a
multifunctional `Generic` template. That will provide the necessary layouts
and overriding options known from FSC.

```typoscript
lib.contentElement = FLUIDTEMPLATE
lib.contentElement {
   templateRootPaths {
      0 = EXT:fluid_styled_content/Resources/Private/Templates/
      10 = {$styles.templates.templateRootPath}
   }
   partialRootPaths {
      0 = EXT:fluid_styled_content/Resources/Private/Partials/
      10 = {$styles.templates.partialRootPath}
   }
   layoutRootPaths {
      0 = EXT:fluid_styled_content/Resources/Private/Layouts/
      10 = {$styles.templates.layoutRootPath}
   }
   ...
}
```

```html
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Default" />
<f:section name="Main">

   <f:comment>This templates is used to provide necessary functionality for external processed content and could be used across multiple sources, for example the frontend login content element.</f:comment>
   <f:if condition="{content}">
      <f:then>{content -> f:format.raw()}</f:then>
      <f:else><f:cObject typoscriptObjectPath="tt_content.{data.CType}.20" data="{data}" table="tt_content" /></f:else>
   </f:if>

</f:section>
</html>
```

The TypoScript object `lib.fluidContent` will be kept as copy of `lib.contentElement`
for compatibility for the duration of TYPO3 v8 LTS and will be removed in TYPO3 v9.

## Impact

Assignments and overrides made directly to `lib.fluidContent` are not recognized
anymore for core content elements provided by Fluid Styled Content. They need to be
migrated to `lib.contentElement`. Only not modified versions of `lib.fluidContent`
will keep working as expected.

## Affected Installations

Installations that directly modify `lib.fluidContent`.

## Migration

Rename assignments and modifications to `lib.contentElement`.
