Umbraco

Umbraco 11 Release Candidate

Read all about the upcoming major release of Umbraco CMS

Bjarke Berg
Written by Bjarke Berg

The release candidate for Umbraco 11 is ready. It’s updated to run on the very latest version of .NET (.NET 7) and sports some great improvements to performance, a bunch of new features thanks to C# 11, a new version of TinyMCE, and a brand new Property Editor - the Block Grid Editor. In this blog post, you’ll read up on some of the highlights and focus areas for testing in the release candidate period. The public release is just 6 weeks away and we’d love to get your feedback - let’s take a look 👀

Update November 29, 2022: RC6 is now available with a few more tweaks to the new Block Grid Editor, updated dependencies, translations, and more.  Full change log is available in the release notes.

Update November 24, 2022: RC5 is now available with multiple updates to the new Block Grid Editor, RTE improvements, and more. Contains changes to how the appsettings.schema.json file is generated, so if you're upgrading the RC you should delete the file before upgrading. Full change log is available in the release notes.

Update November 14, 2022: RC4 is available with the final version of .NET 7, improvements to the Block Grid Editor and more. Change log available in the release notes.

Update November 3, 2022: Umbraco 11 RC3 is now available, additional fixes and improvements can be found in the Umbraco 11 release notes.

Update October 27, 2022: Release candidates for Umbraco Forms 11 and Umbraco Deploy 11 are now available for testing as well.

Overview:

What’s new in Umbraco 11

Umbraco 11 has some great improvements to both performance and features, especially on the .NET side of things. On top of that, we also believe it is the easiest major upgrade yet. 

.NET 7 = More Performance

Umbraco 11 has updated the target framework to .NET 7. .NET 7 brings performance improvements like the latest versions of .NET also did. Furthermore, the version of C# has also been updated to the latest version C# 11.

Upgrading to .NET 7 also comes with a new version of the web framework in ASP.NET Core 7. There are also quite a few new features that you might find useful. You can read more about the new features here.

As mentioned at the start, .NET 7 brings some performance improvements - that’s putting it mildly. There are more than a thousand performance-focused PRs included in the release. If you want to dive into the technical side of the improvements you can find a great write-up about .NET 7 Performance on the Microsoft developer blog.

New Property Editor: Block Grid Editor

The Block Grid Editor is a new Property Editor that will eventually supersede the popular Grid Layout Editor. The goal is to bring layout and content structure capabilities to editors, built on modern and future-proof technology, and provide an improved developer experience.

While the Block Grid Editor has many of the same features and abilities that made the Grid Layouts Property Editor so popular, it is now using Element Types and Blocks as the basic, well - building blocks. This means a larger variety of out-the-box editors available, much more flexible settings, and a bunch of new features. It’s built on the Block Editor technology so you’ll recognize many of the features from the Block List Editor, and some are unique to the new editor.

Getting started with the Block Grid Editor 

There is already extensive documentation available for the Block Grid Editor, so that’s a good starting point. You can also find an introduction to the editor in the Umbraco 10.3 release candidate blog post along with what to focus on for testing.

The property editor was originally scheduled for release in Umbraco 10.3 but was postponed to Umbraco 11 as we believe it can benefit from more testing and feedback - so please do give it a go. All feedback is valuable, so whether you play around with the sample configuration, set up your own simple layout, or maybe replicate a more advanced setup you already have with the old Grid Layouts editor, we want to know how the experience is. See below for how to provide feedback.

Updated Rich Text Editor with TinyMCE 6

TinyMCE is the JavaScript frameworkthat powers the Rich Text Editor in the Backoffice of Umbraco CMS. It is a finely tuned engine able to wrap a bunch of HTML and show it in a friendly way to content editors, who can in turn make updates to their content and be ensured that TinyMCE will preserve their edits neatly in the database as HTML.

Umbraco has been using TinyMCE 4 for quite a few years now. With the culmination of the release of TinyMCE 6 earlier this year and the upcoming release of Umbraco 11, we saw fit to get back in sync with the module. Therefore, you can look forward to the inclusion of TinyMCE 6.2 in Umbraco 11.

TinyMCE has yet to announce for how long version 6.2 will be supported, but by the looks of it, it will be supported well into 2024.

From TinyMCE 4 until TinyMCE 6 there have been many breaking changes to their public API, but you can look forward to a more robust API with a more modern UI theme and new built-in features.

You can find more about the features of TinyMCE on their product page.

Migrating to TinyMCE 6

There will be no breaking changes to any existing HTML content - all custom styling, media, links, and macros will continue working.

On the JavaScript side, however, there are some changes to consider. Umbraco ships with an updated TinyMCE service for AngularJS, which supports the new API of TinyMCE 6.

If you are customizing TinyMCE in any way, it may be relevant for you to follow the migration guides from TinyMCE itself. The process is to first follow the migration guide from version 4 to 5, and then from version 5 to 6.

Read more about how Umbraco did it internally in the backoffice with the Pull Request that updated TinyMCE.

What to focus on for testing

The most important thing to test is that your HTML content still works with the new version of TinyMCE if you are migrating from an older version of Umbraco.

If you are extending the configuration of TinyMCE with JavaScript, here are some hints for you to consider:

Buttons

Adding buttons to the Rich Text Editor has changed a bit. It is necessary to rewrite some of your code:

Before:

editor.addButton(name, config)

Now:

editor.ui.registry.addButton(name, config)

Please note that the config object was changed as well, notably “onclick” was renamed to “onAction” and there is a new “onSetup” callback to use.

Plugins

Some features were previously added as plugins which are now part of the core of TinyMCE including “hr” and “paste”. Please take note if you load in plugins from TinyMCE manually and/or have installed third-party plugins.

Stylesheets

There have been a few optimizations to Umbraco’s deserializer for stylesheets included in the rich text editor. Please take note that your styles still appear in the “Formats” dropdown and work as expected.

Configuration

If you at all interact with the RichTextEditorSettings object in appsettings, please make sure to test that it still works. Namely, the “plugins” config may have changed and a lot of configuration keys were removed or renamed in the “CustomConfig” object, which is being forwarded directly to TinyMCE. More on this under Breaking Changes. 

Decoupling Dependencies

Umbraco has a dependency on ImageSharp to do image manipulation. This dependency has been moved out so it works like a package, which is shipped with Umbraco. This change makes it possible to upgrade to future major versions of Imagesharp in Umbraco 11+ independently of the Umbraco version.

In the same way, a few classes are also moved into the Umbraco.Cms.Persistence.SqlServer assembly.

Breaking Changes

Most breaking changes are due to changes introduced by updating dependencies. The breaking changes in .NET 7 and ASP.NET Core 7 are documented by Microsoft

The update to .NET 7 included a breaking change that broke ModelsBuilder in InMemoryAuto mode. We have handled the breaking change and made ModelsBuilder work again as expected. Besides the documented changes, we have also seen a few method signatures that are changed to support Nullable-Reference-Types.

The breaking changes in TinyMCE are documented in the migration guides for version 4 to 5 and from version 5 to 6.

Most other breaking changes in Umbraco 11 are due to the removal of classes, methods, etc. marked as obsolete in Umbraco 9. A few methods and classes have also been moved and changed namespace. Decoupled dependencies are documented on the announcement repository.

The full list of API-breaking changes can be found in the documentation and further details can be found on the respective PRs linked from the release notes.

Known issues

Umbraco 11 RC1 currently depends on ASP.NET Core 7 RC2 and .NET 7 RC2. These dependencies will be updated to the final versions before the official release.

As mentioned earlier in the post, a few tweaks are coming to the Block Grid Editor with a sort mode, improved drag and drop functionality, and we’re looking into adding an inline editing mode as known from the old Grid Layouts editor.

Substantial updates and fixes will be added in further release candidates as warranted (RC2, RC3, etc.), so you have the opportunity to test them out before the public release.

How to get started

Update November 29, 2022: RC6 is now available with a few more tweaks to the new Block Grid Editor, updated dependencies, translations, and more.  Full change log is available in the release notes.

Update November 24, 2022: RC5 is now available with multiple updates to the new Block Grid Editor, RTE improvements, and more. Contains changes to how the appsettings.schema.json file is generated, so if you're upgrading the RC you should delete the file before upgrading. Full change log is available in the release notes.

Update November 14, 2022: RC4 is available with the final version of .NET 7, improvements to the Block Grid Editor and more. Change log available in the release notes.

Update November 3, 2022: Umbraco 11 RC3 is now available, additional fixes and improvements can be found in the Umbraco 11 release notes.

Like release candidates for minor versions, this release candidate is available on NuGet

First of all, please note that .NET SDK 7.0 is a prerequisite and if you want to use Visual Studio you’ll currently need to use the Visual Studio Preview version.

To use the new release candidate you can install the new Umbraco dotnet template:

dotnet new -i Umbraco.Templates::11.0.0-rc6

Now that the Umbraco template is available, you can create a new Umbraco project using your favorite IDE (Integrated Development Environment) or continue using the CLI (Command Line Interface) commands:

dotnet new umbraco -n MyCustomUmbracoSolution

In CLI the project can be built by navigating to the newly created folder and running the build command:

cd MyCustomUmbracoSolution
dotnet build

At this point, the project is ready to be executed:

dotnet run

This will boot the project, and write the log to the console. The website is now running on the Kestrel server, and it will be available on the ports written in the console.

Update October 27, 2022: Release candidates for Umbraco Forms 11 and Umbraco Deploy 11 are now available for testing as well.

How to provide feedback

If you find issues that are not already reported, please report them on the GitHub tracker by following the link or selecting “🐛 Bug Report” when creating a new issue.

What’s next?

Even though this release is considered feature complete, it is unrealistic to expect there won't be more changes to come, although at this stage they should be minor bug fixes based on feedback and testing.

We plan to make new release candidate versions available as bugs are fixed, and you can always try out the latest nightly build if you want to test fixes made since the RC.

Besides fixing potential bugs in the CMS, we will focus on making HQ Packages such as Umbraco Forms and Deploy available. We’re also focusing on ensuring that Umbraco 11 is available on Umbraco Cloud when released and continuing the efforts to document Umbraco 11.

All of this leads to the public release of Umbraco 11, which is targeted for December 1, 2022.

Now, go on and take the Umbraco 11 Release Candidate for a spin - we look forward to hearing your feedback 🙌

 

Umbraco community highfive graphics