Neos 7.1

This release of Neos comes with some great new features, bugfixes and a lot of modernisation of the existing code base.

As usual, we worked hard to keep this release as backwards compatible as possible but some of the changes might require manual adjustments. So please make sure to carefully read the upgrade instructions below.

New Features

FEATURE: Add missing translation to flash messages

  • added translation to all flash messages

  • added translator and translation units to all flash messages

Related issue: #3334

FEATURE: Show the default asset-collection in the sites listing

The default asset collection for every site is now listed in the site management module.

!`image <>`_

FEATURE: Show information about roles and privileges

This feature improves the policy selection in the account editing by making use of the labels and descriptions added to roles and privileges with Neos 7.0

Before: !`image <>`_

After: !`image <>`_

FEATURE: Add node label helper

With this helper it’s easier to define custom node label schemas in nodetypes.

Moved the previously used Eel expression from the main Neos.Neos:Node nodetype into the NodeHelper. Similar to the TranslationParameterToken it provides a chainable interface to simplify custom nodetype naming.

All labels in the Neos document and content tree should still be the same. Override the nodetype label by copying the expression from Neos.Neos:Node and modifying it.


Use properties as label with fallback chain (replaces the previous default) ``` ‘Neos.Neos:Node’:

label: “${Neos.Node.labelForNode(node).properties(‘title’, ‘text’)}”


Show number of elements in a multicolumn next to its label ``` ‘Neos.Demo:Content.Columns.Two’:

label: “${Neos.Node.labelForNode(node).postfix(’ (’ + q(node).children().children().count() + ‘ elements)’)}”


Use override, prefix and postfix: ``` ‘Neos.Demo:Content.Special’:

label: “${Neos.Node.labelForNode(node).prefix(‘The ‘).override(‘child of’).postfix(’ ‘ + q(node).parent().get(0).label)}”


Adjust cropping: ``` ‘Neos.Demo:Content.Cropped’:

label: “${Neos.Node.labelForNode(node).crop(20, ‘ - - -‘)}”


FEATURE: Replace EmberJS based API

Again we plan to remove the mission pieces of the EmberJS based UI. It is an ongoing process since version 5.0.

This PR is based on the webpack 5 upgrade PR (

Reimplement the API based on vanilla js. And remove the old ember based JS in the end.

Check the backend modules and the APIs like window.NeosCMS.Notification and window.NeosCMS.I18n

FEATURE: Fusion match object

This change adds a new Fusion object to replace many situations where the Case object was used just to return a value based on a string.

The idea is based on the new match method in PHP 8

Related issue: #3318

FEATURE: Fusion debug to browser console

With this new Fusion object it’s possible to debug to the browser console via an inserted script tag instead of showing a big dump that breaks the layout.

It optionally allows setting a title, method and additional arguments.

``` renderer.@process.debug = Neos.Fusion:Debug.Console {

value = ‘%cfoo’ method = ‘table’ color = ‘color: green’


Related issue: #3319

FEATURE: Add favicons and app icons for backend modules

Related issue: #3304

FEATURE: Allow http image urls as login wallpapers

Before this change only resource://… urls were supported.

Set as background image and enjoy a nice random picture for every login.

TASK: Set text/html as default content type in Fusion

While experimenting with PSR-15 middlewares I found out that no content type is returned from the Fusion rendering step when using the Neos default page prototype. This keeps those middlewares from applying their effects as they do not know what kind of content they get.

This can be easily fixed in custom packages, but it makes sense to just have this as default for the future.

Upgrade Instructions



Additionally all changes in Flow 7.1 apply, see the release notes to further information. See