Skip to content
Umbraco

Umbraco v14+ Key Features and Capabilities

Umbraco v14+ (and the recommended v17 LTS) provides a modern feature set for content delivery, content management, content modeling, and search. This page covers the key capabilities practitioners need to evaluate and build with.

Umbraco’s Content Delivery API delivers content as JSON for headless architectures (React, Next.js, Vue, mobile apps).

Example: Fetch Articles via Content Delivery API

Terminal window
GET /umbraco/delivery/api/v2/content?filter=contentType:articlePage&sort=createDate:desc

Response:

{
"items": [
{
"name": "How to Migrate to Umbraco v14",
"contentType": "articlePage",
"properties": {
"title": "How to Migrate to Umbraco v14",
"body": "<p>Migration guide...</p>",
"publishDate": "2026-02-01T00:00:00Z"
}
}
]
}

When to use headless:

  • Multi-channel delivery (web, mobile, kiosks)
  • JavaScript frameworks (Next.js, Nuxt, SvelteKit)
  • Performance-critical sites (SSG/SSR rendering)

Create content programmatically:

// Create a new article page via Management API
POST /umbraco/management/api/v1/document
{
"contentTypeKey": "abc-123-def",
"parentKey": "parent-page-key",
"values": {
"title": "New Article",
"body": "<p>Content here</p>"
}
}

Content Modeling: Document Types and Element Types

Section titled “Content Modeling: Document Types and Element Types”

Document Types represent pages in the content tree (Home Page, Article Page). Element Types represent reusable content blocks (Hero Block, Card Component).

Modern content composition using Element Types.

// Example: Configure Block Grid in Document Type
[Property("Content Blocks", "blockGrid")]
public BlockGridModel ContentBlocks { get; set; }

Editors can drag-and-drop blocks (Hero, Card, CTA) into a grid, creating flexible page layouts.

Umbraco uses Examine (Lucene.NET) for search indexing.

Default Indexes:

  • InternalIndex: All content (published + unpublished) — for backoffice search
  • ExternalIndex: Published content only — for public website search
  • MembersIndex: Member data

Example: Search Published Content

using Examine;
public class SearchService
{
private readonly IExamineManager _examineManager;
public SearchService(IExamineManager examineManager)
{
_examineManager = examineManager;
}
public IEnumerable<IPublishedContent> SearchArticles(string query)
{
if (!_examineManager.TryGetIndex("ExternalIndex", out var index))
return Enumerable.Empty<IPublishedContent>();
var searcher = index.Searcher;
var results = searcher.CreateQuery("content")
.NodeTypeAlias("articlePage")
.And()
.ManagedQuery(query)
.Execute();
return results.Select(r => _umbracoHelper.Content(r.Id));
}
}