contentful/rich-text
Utilities for the Contentful Rich Text
4.0.3
3.8M downloads/mo
#2450 most downloaded on Packagist
contentful/rich-text.php
What this package is like to depend on
Last release 9 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
1 release in the last 12 months
see the full history below
Release timeline
22 releases · Sep 2018 to Nov 2025Releases
latest 22-
4.0.318 Nov 2025 -
4.0.203 Jun 2024Release notes
Open source →- Fixed a bug where localization was lost on Embedded{Asset,Entry}Block
- Updated for PHP8.3
Release notes
Open source →- Fixed a bug where localization was lost on Embedded{Asset,Entry}Block
- Updated for PHP8.3
-
v4.0.122 Dec 2022 -
4.0.022 Dec 2022Release notes
Open source →Changed
- Breaking change: Added locale support to the richtext parser. This avoids bugs when parsing embedded fields using a different locale (see #65). This change changes the
ParserInterfaceandNodeMapperInterface- any implementation using a custom parser or NodeMapper will need to update the entries accordingly. Additionally, theParserInterface::parse()andParserInterface::parseCollection()methods have been deprecated in favor of their localized version (ParserInterface::parseLocalized()andParserInterface::parseCollectionLocalized(), respectively). - Breaking change: Dropped support for PHP7.
- Added the embedded asset to the serialized version of
EmbeddedAssetBlockandEmbeddedAssetInline(see #61). - Added support for superscript and subscript.
Internal
- Overall CI cleanup
- Added CI tests for PHP8.2
Release notes
Open source →Changed
- Breaking change: Added locale support to the richtext parser. This avoids bugs when parsing embedded fields using a different locale (see #65). This change changes the
ParserInterfaceandNodeMapperInterface- any implementation using a custom parser or NodeMapper will need to update the entries accordingly. Additionally, theParserInterface::parse()andParserInterface::parseCollection()methods have been deprecated in favor of their localized version (ParserInterface::parseLocalized()andParserInterface::parseCollectionLocalized(), respectively). - Breaking change: Dropped support for PHP7.
- Added the embedded asset to the serialized version of
EmbeddedAssetBlockandEmbeddedAssetInline(see #61). - Added support for superscript and subscript.
Internal
- Overall CI cleanup
- Added CI tests for PHP8.2
<!-- PENDING-CHANGES -->
No meaningful changes since last release. <!-- /PENDING-CHANGES -->
- Breaking change: Added locale support to the richtext parser. This avoids bugs when parsing embedded fields using a different locale (see #65). This change changes the
-
3.4.017 Jul 2022Release notes
Open source →Added
- Added support for table-header-cell - thanks BrightQi (@brightq) !
Internal
- Updated header comments
- Added CI tests for PHP8.1
Release notes
Open source →Added
- Added support for table-header-cell
Internal
- Updated header comments
- Added CI tests for PHP8.1
-
3.3.025 Apr 2022 -
3.2.020 Mar 2021Release notes
Open source →Added
- Added support for PHP8
Internal
- Small CI updates
- Edited source for PHP sami
-
3.1.210 Sep 2020Release notes
Open source →Changed
- DRY applied for Node/Heading classes by introducing new AbstractClass
- performance improvements in create-redirector script
Release notes
Open source →Changed
- DRY applied for Node/Heading classes by introducing new AbstractClass
- performance improvements in create-redirector script
-
3.1.120 Aug 2020 -
3.1.008 Apr 2020Release notes
Open source →Changed
Drop MapperException and let the code simply throw the exception in the same form it was raised.
Release notes
Open source →Changed
Drop MapperException and let the code simply throw the exception in the same form it was raised.
-
3.0.003 Mar 2020Release notes
Open source →Changed
Added support for PHP 7.4. Removed support for PHP 7.0 & 7.1. Updated dependencies.
-
2.0.019 Feb 2020Release notes
Open source →Changed
- Nested references are not fetched recursively upfront, they are now resolved dynamically when used
- Changed parameters/signatures for EmbeddedEntryBlock, EmbeddedEntryInline, EntryHyperlink,
- Added EntryReferenceInterface and implementation
- MapperException not thrown anymore
-
1.2.126 Nov 2019 -
1.2.031 Oct 2018Release notes
Open source →Added
- The library now supports
embedded-entry-inlineandembedded-asset-inlinenodes.
- The library now supports
-
1.1.130 Oct 2018Release notes
Open source →Fixed
- Configuration constraint for
contentful-core.phprequired strictly version 2.0.0, now it was fixed to allow for all v2 versions.
- Configuration constraint for
-
1.1.030 Oct 2018Release notes
Open source →Added
- Method
Parser::setNodeMapper(string $nodeType, NodeMapperInterface $nodeMapper)was added, now it's possible to define custom mappers after the parser's creation.
- Method
-
1.0.025 Oct 2018Release notes
Open source →Added
- Node
Nothinghas been implemented, which is used as a replacement for when creating other nodes does not succeed (e.g. a link can't be resolved). - Node
EmbeddedAssetBlockhas been implemented.
- Node
-
1.0.0-beta516 Oct 2018 pre-releaseRelease notes
Open source →Changed
- Node
AssetHyperlinknow expects an object implementingAssetInterfaceinstead ofResourceInterface. [BREAKING] - Nodes
EmbeddedEntryBlockandEntryHyperlinknow expects an object implementingEntryInterfaceinstead ofResourceInterface. [BREAKING]
Removed
- Method
getNodeClasswas removed fromNodeInterface. [BREAKING]
- Node
-
1.0.0-beta411 Oct 2018 pre-release -
1.0.0-beta311 Oct 2018 pre-releaseRelease notes
Open source →Changed
- The package was renamed from
contentful/structured-text-renderertocontentful/rich-text. [BREAKING]
- The package was renamed from
-
1.0.0-beta226 Sep 2018 pre-releaseRelease notes
Open source →Added
- Node renderer
Contentful\StructuredText\NodeRenderer\CatchAllcan be used to avoid having the main renderer throw an exception in the event of an unsupported node. Use it like this:
It's important to use the$renderer = new Contentful\StructuredText\Renderer(); $renderer->appendNodeRenderer(new Contentful\StructuredText\NodeRenderer\CatchAll());appendNodeRenderermethod to make the main renderer use it as last resort, otherwise, it will intercept all calls to other nodes. NodeInterfacenow includes methodgetNodeClass, for exposing whether a node is of typeblockorinline.
- Node renderer
-
1.0.0-beta113 Sep 2018 pre-release