Unicore Team Some 768X432px

Migrating Umbraco CMS to .NET Core

What is Project Unicore? Umbraco on .NET Core? Umbraco 9?

A new major version of Umbraco is in development. The goal of this project is to have Umbraco running on the latest version of the .NET technology stack. It is a large undertaking but brings a host of benefits to Umbraco and everyone using it. On this page, you’ll get an overview of the benefits, how the project is progressing and what this means for the CMS going forward.


New technology - still Umbraco

Umbraco is currently running on .NET Framework. In 2016, .NET Core was released as the successor to .NET Framework and has since been through a number of iterations. In 2019, .NET Core 3.0 was released and has now reached a level of maturity and feature parity with the old framework where it makes sense for Umbraco CMS to start utilising this.

Even though it is based on a new technology stack, it will still feel like Umbraco - just like .NET Core feels like, well, .NET framework. It’s new, some things will change but it’s for the better and it should all be relatively familiar. If you’re an editor, you probably won’t notice any difference as the changes are seen in the developer experience and the framework of the project.

Umbraco branded loader icon - illustrated by a roundabout
two graphs intersecting each other.

Better performance and scalability

.NET Core is faster than .NET Framework. It is built from the ground up with performance in mind and is able to take advantage of new hardware and software architecture in a way the old framework simply cannot. This means that at a base level there will be performance gains for Umbraco CMS. Depending on what operations you’re doing this can mean 100s, if not 1000s, percentage increase in performance and additionally, the scalability on a hardware level is much more powerful.

Clean(er) architecture

One of the reasons Umbraco has been so popular with developers is the adherence to .NET MVC standards and a native routing pipeline, customised and optimized for use with the CMS. It’s easy to learn if you know the standard conventions and offers useful and intuitive functionality on top. This is still the case but part of the migration to .NET Core has also opened up the opportunity to improve the architecture of Umbraco CMS. 

Dependency injection now uses base MSDI (Microsoft Dependency Injection) which is easy to extend and allows for maximum flexibility and customisation to individual workflows. 

Same goes for background tasks, used for scheduled tasks and recurring jobs. This is now implemented using Hosted Services, a native convention in .NET Core.  

These are minor changes in the grand scheme of things but they help make Umbraco easier to learn, maintain and even more flexible and developer-friendly than ever before.

Umbraco branded tree
Desktop, tablet and smartphone with Umbraco logo on the screens

Compatible with MacOS, Linux as and Microsoft Windows

.NET Core is cross-platform compatible with MacOS and Linux as well as the Microsoft Windows platform. This opens Umbraco up for a new developer user base and increases the hosting options and architecture capabilities. 

In our current beta version of .NET Core, you can already boot Umbraco up, natively, on a Mac or Linux - Amazing to see after having been solely available on Windows since the first version of Umbraco.


What does “migration” mean?

It means we’re not (re)building Umbraco from the ground up, rather migrating it, piece by piece, to make sure it works on .NET Core. This also means if you want to migrate an Umbraco project from .NET framework to the new Umbraco .NET Core version - that will be possible. How big a task that is depends entirely on the project scope and featureset but in terms of Umbraco specific functionality there will be a clear path forward.

Paper plane
4 hands laying a puzzle with Umbraco branded shapes

The Unicore Project

Every long-running project has a codename, either by design or happenstance. The migration of Umbraco CMS from .NET framework to .NET Core has been named project Unicore. The project was kickstarted at the MVP retreat in 2019 where the overall approach and project structure was defined and published as RFCs. You can find the RFCs and read up on the discussion here:

Furthermore, one additional RFC has been accepted for project UniCore


Umbraco Unicore team logo

The Unicore team

The Unicore project is being developed by the Core development team at Umbraco HQ. But they're not the only ones working on project Unicore - we also have an established community team helping out. The Unicore Team is specifically dedicated to the project of migrating Umbraco to .NET Core, bringing the talents of the community together to work closely with HQ to modernise the friendly CMS.

The team also advises on how to minimize breaking changes when migrating from Umbraco 8 to the .NET Core version. You can read more about the Unicore team here.

THe Umbraco Unicore team group photo at Umbraco HQ
Illustration of Umbraco logo as the sun with a road going towards it


Currently, the migration of the codebase to the .NET Core framework goes under the codename project Unicore. The latest major release of the framework comes with a name change; What was previously .NET Core (versions 1 - 4), is now called .NET 5. We have decided, after some great feedback from community and partners, to stick with the well-known Umbraco naming scheme. So it will be no surprise that the next major release will be Umbraco 9, which seems to be the logical sucessor to Umbraco 8. Do note that with the release of Umbraco 9 we are moving to “proper” semantic versioning for Umbraco CMS.



Can I test Umbraco on .NET Core?

You can indeed. We’ve released an beta version of Umbraco running on .NET 5/ASP.NET Core. You can find detailed instructions on how to install and run the alpha release as well as nightly builds in the Umbraco .NET Core documentation.

How can I follow the progress of project Unicore?

We bring updates on the progress in the bi-weekly Product Update as well as dedicated blog posts when we reach larger milestones in the project. You can find these on the official Umbraco blog (use the .Net Core tag for an easy overview of all updates). 

You’ll also find a list of blog posts, both from Umbraco HQ and the community, in the Umbraco .NET Core documentation.

Finally, you can keep an eye on the Product Roadmap where milestones for project Unicore are available and see the completed items on the Roadmap History page.

Can I upgrade from Umbraco 8 to Umbraco on .NET Core?

There will not be a direct upgrade path but migration will be possible. The database schema will not change so migrating content is possible and backend/frontend code will need to be updated to use the new framework.

Does the Unicore project include a new frontend framework for the backoffice?

No, this project is solely focused on updating/migrating the underlying .NET framework.

We are working on changing the frontend tech stack as well, this is a separate project and you can find information on the product roadmap.

Will the backoffice editing experience change?

No, migrating Umbraco to .NET Core is focused on getting the backend and source code updated to run on the new framework. The backoffice will look the same and editing capabilities will be on par with Umbraco 8.

Will Umbraco on .NET Core be cross-platform compatible?

Moving to .NET Core/.NET5+ ensures cross-platform capabilities. It will, in theory, enable Umbraco CMS to run on MacOS, Linux as well as Microsoft Windows based platforms.

Currently .NET Core support for the M1 chip architecture in new MacOS devices is limited but emulation is being implemented and with .NET6 full compatibility should be enabled.

The list of officially supported platforms for the first full release is still to be determined.

Why go with the .NET 5 framework?

When released, Umbraco 9 will ship on the .NET 5 framework and the web-specific ASP.NET Core 5.

Even though .NET 5 is not an LTS version, we want to ensure that Umbraco is staying up-to-date with the new changes in the framework. There are a number of benefits in .NET 5, such as improved performance, and this also means that projects that include Umbraco can easily update the underlying framework to .NET 6 LTS when this is released (scheduled for November 2021), while Umbraco keeps its dependencies to ASP.NET Core 5.

Will Umbraco 8 packages work on the new framework?

No, packages will need to be migrated to the version. How much work involved in this will be based on the functionality of the package. When we get closer to a release candidate of Umbraco on .NET Core we will publish information on what is necessary when upgrading packages. See the Umbraco .NET Core documentation for latest updates and blog posts.

Will Umbraco Cloud run .NET Core?

Yes, the next major version of Umbraco will be available on Umbraco Cloud with the public release.

Which features does the .NET Core version ship with?

The .NET Core version will have feature parity with Umbraco 8. Changes and feature additions made to Umbraco 8 are continuously merged with the .NET Core version. 

There are some changes to the API layer, caused by the switch of framework, that change the behaviour and in some cases open up for new possibilities. At this point no new features are added to Umbraco’s content management capabilities.

Loved by developers, used by thousands around the world!

One of the biggest benefits of using Umbraco is that we have the friendliest Open Source community on this planet. A community that's incredibly pro-active, extremely talented and helpful.

If you get an idea for something you would like to build in Umbraco, chances are that someone has already built it. And if you have a question, are looking for documentation or need friendly advice, go ahead and ask the Umbraco community on Our.

Number of active installs
Number of active members in the community
Known free Umbraco packages available

Want to be updated on everything Umbraco?

Sign up for the Umbraco newsletter and get the latest news and special offers sent directly to your inbox