Codegarden is the biggest Umbraco conference in the world and as always Kraftvaerk was on the spot ready to dive deep into the heart, news and future of Umbraco. In this blog post we’ll give you the most important key takeaways and reveals:
The key takeaways from Codegarden 2022
.NET Core and Umbraco’s new release cadence
Umbraco 9 and Umbraco 10 – and what to consider if you’re on Umbraco 8
Feature pipeline and future versions
.NET Core and Umbraco’s new release cadence
Back in 2019 Microsoft announced the plan for replacing .NET Framework with .NET Core starting from 2020 with the .NET 5 version (.NET Framework 4.8 being the last version). This has of course also affected Umbraco, and to future proof the CMS, Umbraco has made the switch to .NET Core, where Umbraco 9 on .NET 5 is the first version. With the switch to .NET Core, Umbraco also wishes to match Microsoft’s release cadence and aims at releasing new Umbraco versions following the new .NET releases.
This is not only making development more attractive to .NET developers, as they will be working with the newest .NET version, but it also gives Umbraco a performance boost due to the updated underlying technology stack and frameworks. Furthermore, .NET Core is a cross-platform framework bringing an extra benefit for those developers using environments other than Windows as .NET Core can natively run on both Linux and MacOS. To further improve the cross-platform setup of Umbraco, the support for SQLite has been added as the default database option when setting up Umbraco. This replaces the default LocalDB option which runs on Windows – LocalDB is however still an option.
The new release cadence and long-term support
From version 9 of Umbraco, there’s introduced a new release cadence. Meaning that Umbraco will follow the release of .NET long-term support (LTS) versions. With this in mind, and Umbraco 10 being an LTS version, it's already known that the next LTS version of Umbraco will be version 13, using .NET version 8. Microsoft releases a new LTS of .NET every second year.
Each LTS version of Umbraco will receive 24 months of bug, regression and security fixes (support phase), followed by 12 months of security fixes (security phase). When having a website running on an LTS version of Umbraco the site will be safe to run for 36 months without any breaking changes. Besides the details around the LTS versions, there’s also a planned and scheduled release cadence to know of. The release cadence is as follows:
Minor releases will be every 6 weeks (without breaking changes so updates can be planned)
Major releases will be twice a year (every 6 months around June and December)
Going forward every fourth major release will be an LTS version (so every second year – follows Microsoft’s LTS versions for .NET)
In the graphic below, you can see a visualization of the release cadence:
Announcements of breaking changes
Inspired of how Microsoft announces breaking changes, Umbraco has created a Github repository where all breaking changes will be announced. This makes it even more predictable when and which breaking changes that will be coming in the future – and it will help with planning of upgrades. Subscribe to the announcements here.
Umbraco 9 and Umbraco 10 – and what to consider if you’re on Umbraco 8
New features in Umbraco 9 & 10
It is not only the underlying framework that has been updated in Umbraco 9 and 10 with .NET 5 and .NET 6 respectively. Below we bring forward new features which you can benefit from in Umbraco 9 & 10.
Many of the dependencies have been updated in order to support the switch from the .NET Framework to .NET Core. Here are some of the updated dependencies worth mentioning:
The Umbraco ImageProcessor has been updated to ImageSharp 2. This is not only improving performance, but also adds the support for WebP formatted images. It is a huge improvement since older Umbraco versions required a package, but now it’s supported right out of the box.
Examine is updated to version 3, which is running on a newer version of the underlying Lucene.NET.
NPoco is updated to version 5 in order to enable patches and minor updates in later Umbraco releases.
Nullable reference types
Nullable reference types are not an Umbraco feature as such, but a feature that comes with C# 8 – however, Umbraco 10 is updated to support these types. The benefit of using this feature is to minimize the number of System.NullReferenceException, exceptions that can be thrown during runtime.
2 Factor Authentication (2FA)
Security is an increasingly important factor. Therefore, the authentication for Members is updated in Umbraco 9.3 with the feature to add 2 Factor Authentication (2FA) to the login flow. The 2FA setup supports multiple authentication services such as Google, Microsoft etc. But it also provides the option to create your own codes and send them by email or SMS – official authentication services and the use of an authentication app is however recommended. The 2FA implementation is additionally improved in Umbraco 9.5 with the support for adding 2FA for the User login in the Umbraco backoffice.
In Umbraco, when saving a content item, there’s created a version of that particular content item in the database. This gives the editors the ability to roll back a content item to an earlier version. But at the same time, it also fills up the database with various versions of pages more or less important.
From version 9.1 a feature called ‘History cleanup’ is included in Umbraco. This feature keeps the database cleaner and removes old versions of content items. By default, more than four days old content items will be removed. Except the latest version which will be kept for 90 days. The cleanup job is scheduled to run every hour.
Of course, the cleanup policy can be adjusted and configured for each Umbraco installation. In the appSettings.json it’s possible to change if pages should be kept longer or shorter than four days and if the latest version should be kept more or less than 90 days. It’s also possible to disable the entire feature if that’s what suits the particular project.
Besides the overall configuration of days, it is also possible to set specific settings for each document type in the solution, for example if a specific document type should never be cleaned up or if the days saved should be longer or shorter. This setting can be found under the “Permissions”-tab on each document type.
See screenshot below:
Keeping track of items and their relations are included in Umbraco version 9.4. It’s a helpful feature that ensures that editors don’t delete (or unpublish) content or media that is referenced by other content, without first letting them know. This means that when an editor is deleting or unpublishing a piece of content or media, the editor will be warned in the Umbraco Backoffice, if that particular item is referenced. It’s a big improvement and helps to avoid broken links.
Besides informing the editor about a relation between content and media, it’s also possible to see if a media item is referenced from other content items within the backoffice. This is shown under the “Info”-tab on each media item as seen below:
Other features in Umbraco
As with other features in Umbraco, it’s possible to tweak the default settings of items relation/tracking. This is done in the appSettings.json, where it’s possible to configure if it shouldn’t be allowed to delete content or media, if it’s still referenced from other content items on the site. The same goes for unpublishing, where it can be configured if it shouldn’t be allowed to unpublish content or media if the page/media is referenced from other content items on the site.
In the coming time there’s scheduled different new improvements for Umbraco Forms. One of them makes it possible to organize forms in different folders in the tree, which will enhance the editor experience making it easier to handle several forms on larger sites.
We’ll also see a payment provider integration to Umbraco Forms, which makes it possible to receive payments in forms using a hosted page provided by a payment provider.
Another new form feature to look forward to is the preview of forms. Soon it will be possible to preview a form inside of Umbraco, like we know it from content items. So before publishing a form it can be previewed and checked by the editor.
Long-term support (LTS)
Umbraco 9 is the first version of Umbraco on .NET Core (or .NET 5). However, Umbraco 9 doesn’t offer long-term support (LTS). Therefore, it’s recommended when upgrading/migrating to an Umbraco 9 solution to further upgrade the solution to Umbraco 10 (or start with a new Umbraco 10 solution) as this is the current LTS version. Umbraco 10 was released in June 2022 and is based on .NET 6. The LTS provides 24 months of support and further 12 months of security fixes. In other words, your site will be safe to run for 36 months in total, running on the same major version of Umbraco without any breaking changes.
What to consider if you’re on Umbraco 8
If you’re running a site on the latest minor version of Umbraco 8 (8.18), you’re supported until February 2024 and have additional 12 months of security fixes afterwards before Umbraco 8 will reach it’s end of life (EOL) at February 24th 2025.
However, if you want to get up and running on Umbraco 10 you have two options: Either you migrate/upgrade your current solution to Umbraco 9/10 or you start from fresh on Umbraco 10. The latter might be relevant if you’re looking at a complete redesign of your site.
From Umbraco 8 to Umbraco 9 and 10
There’s no direct way to upgrade from Umbraco 8 to Umbraco 9, meaning that you’ll need to migrate the solution. From Umbraco 9 you’re then able to upgrade to Umbraco 10. However, this upgrade does include some breaking changes you need to be aware of.
If your site uses custom code, i.e. business logic, integrations to underlying systems etc., this code needs to be revisited as the underlying .NET Framework in Umbraco changes from the .NET Framework to .NET Core - .NET 5 and .NET 6 in Umbraco 9 and Umbraco 10 respectively. Thus, changes to the code might be required.
If you’re dependent on (or using) Umbraco packages in your Umbraco 8 solution, you need to clarify if these packages have been updated to support Umbraco 10. If all packages aren’t updated to support Umbraco 10, you need to clarify if they will be updated and when. This will give you an idea of when you can expect to begin upgrading your Umbraco 8 solution. However, if some packages won’t be updated or haven’t been updated for a long time, then next step is to look for alternative packages or investigate, if the need are already covered by new features in Umbraco, like 2FA in Umbraco 9 or WebP support in Umbraco 10.
Need to redesign your Umbraco 8?
If you’re looking at redesigning your Umbraco 8 solution, it might be worth starting from fresh on a completely new Umbraco 10 installation. There might be a limited amount of logic, page setup, layout and styling which can be reused from the old Umbraco 8 solution, but if the new design changes the overall structure of the pages, then time might be saved to start fresh, instead of migrating and updating from Umbraco 8 to Umbraco 10.
Feature pipeline and future versions
With Umbraco’s new release cadence where a major version is expected every 6th months, we can also expect new and exciting features in the Umbraco CMS. Now, let’s take a look at some of the upcoming features mentioned at Codegarden 2022 and the release pipeline for the upcoming releases of Umbraco.
All features below are listed within a specific Umbraco version. However, features might be pushed to a later version, so keep an eye on the Umbraco roadmap where features in the ‘Now section’ are updated with target releases.
Version 11 (Q4 2022)
Permissions for variants
Sites with multiple language variants will get the possibility to setup permissions on User Groups, so content editors within these groups only have access to a subset of the language variants. This will indeed be beneficial if responsibility for specific languages are spilt across offices/countries.
A new Property Editor will be made available, which could become a substitute for the currently popular Grid Layout editor. The new Block based Grid editor will be based on the Block Editor, which is used in the Block List editor. This provides the content editor with more flexibility and playroom in order to create and structure content on pages.
Version 12 (Q2 2023)
Headless REST API
Headless solutions are becoming a more widely known term and is also becoming more popular. As headless solutions decouples the frontend and the underlying systems, it makes the solution more flexible in terms of scaling and delivering the same content to multiple platforms and devices (frontends).
In version 12, Umbraco will include a RESTful API based on the OpenAPI spec in collaboration with the Heartcore team and thus open up for headless solutions using the Umbraco Core. It will still be possible to create solutions as before, but this will future proof Umbraco even further to also support headless solutions out of the box.
If you want to know more about headless solutions, you can read this article about Headless CMS.
Entity Framework Core
Currently NPoco is used as the Object Relational Mapper (ORM) in Umbraco. Ongoing investigations are currently in process to clarify if the Entity Framework can be a viable replacement for NPoco. The Entity Framework Core is aligned with the .NET Core versions, so replacing NPoco could benefit the overall solution and make a more standardized development process.
Version 13+ (Q4 2023)
The Umbraco backoffice will receive a well-deserved overhaul. It is being rewritten in the new Umbraco UI Library, completely replacing the old AngularJS backoffice. The goal is to have a more documented and flexible process for developers to extend Umbraco, hence avoiding breaking changes using unofficial extension points.
If interested in the ongoing discussion about the new backoffice details, then head over to the Request for Comments (RFC):
Umbraco will provide an official and easy way to reuse content across the solution and site.
To add even more and better support for sites with multiple languages, variations on block level, i.e. in the new block-based grid and also the block list editor, are expected to add even more flexibility and freedom to the editing experience in the Umbraco backoffice.
Having large sites with a lot of content including text and media on pages, can be troublesome in cases of site performance – more especially, load times. Normally lazy loading is implemented in the frontend, however with the new lazy loading feature, Umbraco will ensure only to load the least amount of content when needed. This will greatly improve load times on pages as not all content on a page is loaded into memory at once.
Webhooks are currently a part of Umbraco Heartcore, but will from version 13 be introduced into the Umbraco Core as well. This will enable functionality so clients can be notified whenever changes are happening within the Umbraco backoffice. This also introduces callback functionality so services or logic can be executed whenever specific events are triggering the webhooks.
Brian Melin, Head of Umbraco – Architect at Kraftvaerk
Kim Andersen, Technical Director – Lead Developer at Kraftvaerk