As discussed during the Neos 9 release sprint in Vienna and Neos Con 2025 we would like to focus on an improved Neos Editing Experience for Neos 9.1.
In addition to the Trash Bin feature based on our new Content Repository, we would like to implement further UX improvements. These were selected from the Wall of Ideas, the sponsors dinner, already existing tickets and the post-Con-sprint.
So it seems, everybody is happy with the project, thanks for your trust!
Then I can proceed with the others. I will make a date for a first preview & feedback session for the prototypes that I’m working on and announce it on Slack.
This item was found while working on drag & drop didn’t take long to fix for 9.1 by fixing two issues which kept CKEditor from working fully in the Neos guest frame
I did a first presentation in Slack to show people the progress and get feedback
Only 2 people joined but the discussion was good and feedback was already quite helpful
Further presentations planned
So far I’m quite happy with the progress we made and that I was able to already finish some nice improvements that I feel already help when working on content. The toolbar topic opened lots of possibilities for the future as we can use the latest CKEditor version to bring more features into Neos and reduce the amount of custom code we have to maintain. That means I expect more functionality to be included more easily and less issues in the inline editor.
Marc made huge progress with integrating the new link editor in the Neos.Ui.
We had regular calls and a presentation to improve the integration technically and regarding the UX
Bonus item - A new “selection” display
During our discussions we realised that the “Currently selected” above the inspector is not very useful and has some issues. Therefore we now use the empty bar we previously used for the inline editing buttons for a new “breadcrumb” that allows navigating to the parent nodes of the currently selected nodes. This helps with staying in context and also allows traversing in fullscreen mode.
While discussing the toolbars we made some changes to the CSS Grid of the UI and made the inspector workable in the fullscreen mode. This means that properties like images can now be edited without leaving the fullscreen mode. This can further be improved but also makes this mode much more usable.
All styled components have now been adjusted to use CSS-Modules. For state handling the full blown state managements library rx-js was replaced by a minimal implementation of createChannel() and react-final-form and final-form were removed in favour of plain observables and a new observable utility pickState().
All other new dev dependencies (typescript helpers) and runtime dependencies (react error helper) were removed and replaced by alternative patterns.
This leaves us with a tidy change that now “only” spans 4 js-packages.
Ui & Ux Differences to the Archaeopteryx
Additionally to its code we found that a the Archaeopteryx must be improved regarding its Ui and Ux:
The link options should be hidden by default and behave equal for every kind of link
The link preview should be shown above the tabs
The phone number tab should not separate country calling code as select box from the phone number and only provide a single input
the mail to tab should use soft input validation instead of rejecting invalid mails
the web tab should allow a single anchor as relative link
the web tab should not require the editor to enter protocol path and anchor separately but only contain a single field
this single input field should promt to format links as https in case a domain is provided like in the old link editor
the asset tab should allow anchor links as this might be used in combination with PDFs
Some of the Ui and Ux will probably still change - for example in Dresden we agreed to introduce a vertical navigation and also the behaviour of the link options were heavy under discussion.
Automated Testing
Additionally to the Behat behaviour test for the new endpoints that handle the Node-Tree display, a fair share of automated test cover the Link editor now via browser (testcafe).
Removing technical debt (my voluntary work *g)
With the introduction of the new Link Editor we want to find new patterns to access state and dependencies. Our current React class-components with their high-order-functions / decorators @neos and @connect are not the promoted future of the holy React gods. The Archaeopteryx already used functional-components with custom react hooks. But to integrate the Link Editor we decided to go into the direction of global functions with functional-components. Global functions will behave like our new translate() function from !!!FEATURE: Reform i18n mechanism
And while not particular fun, the new Link Editors PHP Behat and Unit tests warranted for a general introduction of Behat on the 9.0 branch - i did this in combination with replacing CircleCi with Github in all parts to have a streamlined CI like in Neos and Flow.
The post Our Neos UI Editing UX overhaul (9.1) further summarises our intentions as to why we overhaul the node creation and the link editor as well as the inline toolbar.
Feel free to look into our #guild-ux slack channel to be notified of our latest progress