3 Ways to go headless with Umbraco
Tags: umbraco, dotnet, csharp
Published: 2022-05-15 12:05:30

## What is Umbraco?

Umbraco is a CMS framework for building great editor experiences. It comes with a fully fleshed backend for easy content management and provides a rich and flexible experience for developers.

Umbraco is built on the Asp Net platform, making it easy to use Razor to build your frontend. But this also locks you to using Asp Net as your frontend. Which is where making Umbraco headless comes into the picture. By making Umbraco headless, you allow your team to create a decopled frontend in any technogly.

## So how do I go headless with umbraco?

There's a varity of ways to make Umbraco headless, which comes with different pros and cons. I've collected 3 examples here of ways that you could go about turing Umbraco headless.

## Vertica.Umbraco.Headless

This is a highly flexible solution created by [Vertica A/S](https://www.vertica.dk/) based on hooking into the Umbraco render pipeline and outputting JSON data instead of html by doing this you can query data based on the route requested in a frontend and use the JSON response to render your frontend.

**Pros**

- **Friendly** - plug & play headless CMS capability for Umbraco
- **Flexible** - 100% extensible and customizable
- **Open** - integrates seamlessly with the Umbraco ecosystem, thus imposing no limitations towards other Umbraco packages and add-ons

**Cons**

- **Limiting quering** - It's not possible to select only the data you need, like in GraphQL

{% github https://github.com/vertica-as/Vertica.Umbraco.Headless %}

## Nikcio.UHeadless

[UHeadless](https://github.com/nikcio/Nikcio.UHeadless) is a GraphQL based package that allows you to query your data via. a GraphQL endpoint. UHeadless supports various ways of quering your data and is fully extendable to fit your needs.

**Pros**

- **Easy to setup**
- **Fully extendable** - can be customized to fit your needs
- **GraphQL** - query only the data you need

{% github https://github.com/nikcio/Nikcio.UHeadless %}

## Build your own

If you're not feeling satified with any of the other options there's always the possibillity of building your own. This gives you the abillity to totally customize the setup of developer experice of the integrations. But you also need to maintain the package yourself. For example at [Limbo (formerly skybrud)](https://www.limbo.works/) they're building their own headless package for internal use.

**Pros**

- **Get to build it** - you decide what goes in

**Cons**

- **Maintenance** - you have to maintain the package

{% github https://github.com/skybrud/Skybrud.Umbraco.Spa %}

## Extra: [Umbraco Heartcore](https://umbraco.com/products/umbraco-heartcore/)

Umbraco has it's own headless solution that you can buy into called [Umbrao Heartcore](https://umbraco.com/products/umbraco-heartcore/). This gives you a managed REST API and GraphQL endpoint. But the catch is that many of the packages from the Umbraco commuity can't be used.

**Pros**

- **Managed** - ships with managed REST API, GraphQL, CDN, and more
- **Automatic upgrades**
- **Hosting** - Umbraco will host the solution for you

**Cons**

- **Payed**
- **Package compatibillity** - Not all Umbraco packages can work with Heartcore