Upgrade Instructions 9.0 → 9.1
#Update Instructions
Before making substantial changes, make sure you create a backup of the database and files!
cd /installation-root/
# Update the core package dependencies
composer require --no-update "neos/neos:~9.1.0"
composer require --no-update "neos/neos-ui:~9.1.0"
# Update optional package dependencies (if installed)
composer require --no-update "neos/demo:~9.1.0"If you have development packages in your composer manifest, update them to match as well:
# Update development packages (if installed)
composer require --no-update --dev "neos/buildessentials:~9.1.0"Make sure to update every required Neos package to ~9.1.0! Otherwise there can be an error during updating, because of version conflicts.
After completing these steps, your package should be upgraded to the latest version of the Neos UI and ready to use. Thank you for using Neos!
#Adjustments
Neos
The Workspace Ui comes with a new trash functionality. To enable the button you need to setup the content repository to create the new database tables and also boot the projection from its initial state 0.
./flow cr:setup
./flow subscription:replay Neos.Workspace.Ui:TrashBinProjectionDeprecation:
Legacy LinkEditor configuration / New LinkEditor
Following legacy options should be rewritten to use the declaration in linkTypes instead (see PropertyEditorReference). They will be upcasted at runtime if no new declaration in linkTypes is made. Using new and old syntax simultaneously will lead to old syntax being ignored fully.
- assets use linkTypes.Asset.enabled: false instead to disabled asset links
- nodes use linkTypes.Node.enabled: false instead to disabled asset links
- nodeTypes use linkTypes.Node.baseNodeType with a NodeType filter string instead
- startingPoint use linkTypes.Node.startingPoint instead
- placeholder obsolete finds no application in the new link editor can be safely removed
The anchor option for the inline editor to enable anchor support was removed. Instead anchors can be set via the "Advanced Options" to both Asset and Node links. For Web links the anchor is naturally part of the full link input at all times.
inline:
editorOptions:
linking:
- anchor: true
title: true
relNofollow: true
targetBlank: trueNeos Ui Plugins
Formatting toolbar / CKEditor toolbar
With Neos Ui 9.1 we use the native CKEditor toolbar and ballon/context toolbar. For not only a unified look and feel but also to simplify plugins the new native CKEditor toolbar should be extended in plugins instead of the now legacy Neos formatting toolbar at the top. Eventually the place will no longer be reserved for old CKEditor plugins and freed to show new functionality.
As an example how the new toolbar can be used see the infamous hyphens plugin: Shel.Neos.Hyphens.
Old deprecated registry:
globalRegistry.get('ckEditor5').get('richtextToolbar')The StyleSelect will be remove with Neos 10 please use CKEditor 5's built-in style dropdown instead:
richtextToolbar.get('style')Accessing the FrontendConfigurationRegistry or {frontendConfiguration}
Accessing the Plugin frontend configuration via globalRegistry.set('frontendConfiguration') or {frontendConfiguration} in the bootstrap is deprecated please use the new package instead:
import {getFrontendConfigurationForPackage} from '@neos-project/neos-ui-configuration'Example
Neos.Neos.Ui.frontendConfiguration offers an API for third party packages to deliver own settings to the UI at boot time. The Neos.Ui uses the ConfigurationProvider for its own static configuration. Settings from each package should be prefixed to avoid collisions:
frontendConfiguration:
'Your.Own:Package':
someKey: someValue
Then it may be accessed via:
const {someKey} = getFrontendConfigurationForPackage('Your.Own:Package');Accessing neos.configuration via @neos
Accessing the Neos Ui configuration via neos.configuration in react components or {configuration} in the bootstrap is deprecated please use the new package instead:
import {getConfiguration} from '@neos-project/neos-ui-registry'Importing SynchronousRegistry
using the import is deprecated
import {SynchronousRegistry} from '@neos-project/neos-ui-extensibility'please use the new package instead:
import {SynchronousRegistry} from '@neos-project/neos-ui-registry'Other Neos Ui deprecations
- backend.get().endpoints.assetSearch()
- backend.get().endpoints.getJsonResource()
- selectors.CR.Nodes.getPathInNode()
#Finish the update
#Noop core migrations (relevant for 8.3 updates)
With Neos 9.0.8 a new set of core migrations were made availabe which also exist in Neos 9.1. In case youre updating from a Neos 9.0 youll notice that flow:core:migrate executes those. They will likely not change anything since youre already on Neos 9.0 compatible code. Though you can skip them explicitly by registering them in the composer.json:
Version 20251005080230rewrite fusion node access and helpers${node.identifier}Version 20251006080506rewrite removed fusion prototypesNeos.Fusion:CollectionetcVersion 20251109115127rewrite dimension and route-part-handler configuration
# Update the packages
composer update
# Flush the caches
./flow flow:cache:flush --force
./flow flow:session:destroyAll
# Run code migrations, as needed for any packages that need to be
# migrated. Rule of thumb:
#
# - any 3rd party packages that still install fine at least claim
# to work, and should be updated by their maintainer(s).
# - your own packages should always be treated with a migration,
# at least it marks that as done.
#
./flow flow:core:migrate <Vendor.PackageName>
# Run database migrations
./flow doctrine:migrate
# Publish resources
./flow resource:publish