- What’s new in Umbraco 13
- .NET 8 and C# 12
- Minimal Hosting Model
- Nested field limiting and nested field expansion (Update: Expected in RC2)
- Breaking changes in the Media Library
- Dynamic Root
- Blocks in the Rich Text Editor
- New Login Screen
- Allow Concurrent Logins
- Updated NuGet Dependencies
- How to get started
- How to provide feedback
- What’s next
.NET 8 and C# 12
.NET 8 will be released on November 14, so in our RC we’ve included the last release candidate of .NET 8. It includes improvements on the garbage collector to adjust the memory limit on the fly which will open up better and more flexible scaling which again can be turned into better performance and more sustainable hosting. There are also improvements to Serialization, JSON, and a whole lot more - including, of course, all the C# 12 features like Primary Constructors, Using Declarations, Field Interpolation in String Literals, and Lambda Improvements. Please test it out and have fun with all the new features 🙂
Minimal Hosting Model
Talking .NET, C#, and what comes out from Microsoft, we’ve now introduced the Minimal Hosting Model, which Microsoft introduced in .NET 6. This model merges the previous program.cs and startup.cs into one single program.cs file and simplifies the initiation of an application, but most importantly, this model is now also used for all Microsoft Tutorials and examples, which is why we’ve now introduced this model for Umbraco too. Our implementation is made backward compatible, so upgrading your projects shouldn’t be a problem, but going forward we’ll consider the old hosting model obsolete. Let us know if you run into any problems.
As part of our headless initiative, we now also have Webhooks, so you can inform third-party systems about events like publishing and unpublishing in the Umbraco CMS. We’ve added UI so that you can type in the URL you want to call (including potential custom headers) and choose one or more events on which you want the URL to be called. Under the hood, we’ll take care of executing, queuing, retrying, and logging. And you can easily extend the functionality by implementing your own webhooks. This functionality is aligned with the one you might already know from Heartcore.
Nested field limiting and nested field expansion
Update November 2, 2023: We didn't manage to finish the nested field limiting and nested field expansion in RC1. This functionality is expected to be introduced in RC2.
Speaking of internal alignment, we’ve also aligned with Umbraco Commerce Storefront API, as we’ve introduced nested field limiting and nested field expansion for the Content Delivery API. This is considered a V2 of the Content Delivery API, and we encourage you to play around with this and especially the new functionality, where you’ll now be able to limit and expand on multiple levels.
Breaking changes in the Media Delivery API
In 12.2 we introduced the Media Delivery API, however, we did it with a few compromises, as we couldn't introduce breaking changes in a minor. We've now amended these in V13. The changes include making a few classes internal and instead introducing a new public interface and some changed return values. If you want to update an existing solution, you can read the details here.
A few things that we’ve introduced for V13 are prerequisites for future functionality. That is the case for the Dynamic Root for the Multinode Treepicker, which is implemented as an alternative to the XPath expressions. This new approach has been introduced to prepare for lazy loaded content where we aim to introduce more efficient caching and memory management and thereby improve performance for sites with large amounts of content. As an added benefit, it will now also be way easier to set up a relative path for the Multinode Treepicker, but please test it out, and let us know what you think.
Blocks in the Rich Text Editor
In the RC you’ll also find the new opportunity for Blocks in the Rich Text Editor. This functionality was initiated by the deprecation of macros and a wish for an alternative to be used in some specific use cases where we currently don’t have good alternatives. But, as we plan for more block functionality - including global blocks as reusable content as described in this RFC - it hopefully also adds value in general to now also be able to show blocks in the RTE.
New Login Screen
As many of you know, we are currently working heavily on the New Backoffice (called Bellissima) where we are introducing new frontend technologies in the form of our Umbraco UI Library and more plain TypeScript with a bit of Lit. Most of this new UI is bound to a new management API, but we’ve seen our chance to sneak in this new technology in a new Login Screen. It has, of course, also got a new design, which we hope you’ll like.
Allow Concurrent Logins
To avoid a user accidentally logging in multiple times and to align with security by design principles, we've changed the default settings for Allow Concurrent Logins, so that it's by default set to false.
Updated NuGet Dependencies
Last but not least we have updated a bunch of NuGet dependencies. The most important might be ImageSharp which includes breaking changes.
Besides the changes already mentioned around ImageSharp, the “Allow Concurrent Logins” setting, the New Login Screen, and the breaking changes in the Media Delivery API, you’ll find a few other breaking changes which you can find in more detail in the release note.
As mentioned, we are currently running on a preview of .NET 8, but the version will of course be updated before the official release.
How to get started
Like release candidates for minor versions, this release candidate is available on NuGet.
First of all, please note that .NET SDK 8.0.0-rc.2 is a prerequisite.
To use the new release candidate you can install the new Umbraco dotnet template:
dotnet new install Umbraco.Templates::13.0.0-rc1
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:
At this point, the project is ready to be executed:
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.
How to provide feedback
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 Commerce, Workflow, Forms, and Deploy available, and expects Release Candidates for these commercial products to be available shortly after today We’re also focusing on ensuring that Umbraco 13 is available on Umbraco Cloud when released and continuing the efforts to document Umbraco 13.
All of this leads to the public release of Umbraco 13, which is targeted for December 14, 2023.
Now, go on and take the Umbraco 13 Release Candidate for a spin - we look forward to hearing your feedback