NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #2890 most downloaded on Packagist
Utilities for the Contentful Rich Text
Last release 10 months ago
18 Nov 2025
Release timing varies
gaps range from 2 weeks to 1.5 years
Nearly every release is documented
notes for 17 of 17 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
22 releases · first in 2018
Added support for strikethrough mark
Fixed a bug where localization was lost on Embedded{Asset,Entry}Block
One column per quarter.
Support for Contentful/Core v4.0.0
Breaking change: Added locale support to the richtext parser. This avoids bugs when parsing embedded fields using a different locale (see #65 ). This…
ParserInterface and NodeMapperInterface - any implementation using a custom parser or NodeMapper will need to update the entries accordingly. Additionally, the ParserInterface::parse() and ParserInterface::parseCollection() methods have been deprecated in favor of their localized version (ParserInterface::parseLocalized() and ParserInterface::parseCollectionLocalized(), respectively).EmbeddedAssetBlock and EmbeddedAssetInline (see #61).Added support for table-header-cell - thanks BrightQi (@brightq) !
Added support for rich text tables
Added support for rich text tables
Added support for PHP8 Smaller clean-ups
DRY applied for Node/Heading classes by introducing new AbstractClass
Node renderers now forward context
Drop MapperException and let the code simply throw the exception in the same form it was raised.
Drop MapperException and let the code simply throw the exception in the same form it was raised.
> Added support for PHP 7.4. Removed support for PHP 7.0 & 7.1. Updated dependencies.
Added support for PHP 7.4. Removed support for PHP 7.0 & 7.1. Updated dependencies.
Nested references are not fetched recursively upfront, they are now resolved dynamically when used
* Fixed documentation * Escape html in text values
The library now supports embedded-entry-inline and embedded-asset-inline nodes.
embedded-entry-inline and embedded-asset-inline nodes.Configuration constraint for contentful-core.php required strictly version 2.0.0, now it was fixed to allow for all v2 versions.
contentful-core.php required strictly version 2.0.0, now it was fixed to allow for all v2 versions.Method Parser::setNodeMapper(string $nodeType, NodeMapperInterface $nodeMapper) was added, now it's possible to define custom mappers after the parser
Parser::setNodeMapper(string $nodeType, NodeMapperInterface $nodeMapper) was added, now it's possible to define custom mappers after the parser's creation.Node Nothing has been implemented, which is used as a replacement for when creating other nodes does not succeed (e.g. a link can't be resolved).
Nothing has been implemented, which is used as a replacement for when creating other nodes does not succeed (e.g. a link can't be resolved).EmbeddedAssetBlock has been implemented.Node AssetHyperlink now expects an object implementing AssetInterface instead of ResourceInterface. [BREAKING]
AssetHyperlink now expects an object implementing AssetInterface instead of ResourceInterface. [BREAKING]EmbeddedEntryBlock and EntryHyperlink now expects an object implementing EntryInterface instead of ResourceInterface. [BREAKING]getNodeClass was removed from NodeInterface. [BREAKING]Node Quote was renamed Blockquote. [BREAKING]
Quote was renamed Blockquote. [BREAKING]The package was renamed from contentful/structured-text-renderer to contentful/rich-text. [BREAKING]
contentful/structured-text-renderer to contentful/rich-text. [BREAKING]Node renderer Contentful\StructuredText\NodeRenderer\CatchAll can be used to avoid having the main renderer throw an exception in the event of an unsu
Contentful\StructuredText\NodeRenderer\CatchAll can be used to avoid having the main renderer throw an exception in the event of an unsupported node. Use it like this:$renderer = new Contentful\StructuredText\Renderer();
$renderer->appendNodeRenderer(new Contentful\StructuredText\NodeRenderer\CatchAll());
It's important to use the appendNodeRenderer method to make the main renderer use it as last resort, otherwise, it will intercept all calls to other nodes.NodeInterface now includes method getNodeClass, for exposing whether a node is of type block or inline.### Added * Initial implementation.
Your coding agent can read these notes before it upgrades. Set up the MCP server →