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.
Content Delivery API (Headless)
Section titled “Content Delivery API (Headless)”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
GET /umbraco/delivery/api/v2/content?filter=contentType:articlePage&sort=createDate:descResponse:
{ "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)
Management API (Content Management)
Section titled “Management API (Content Management)”Create content programmatically:
// Create a new article page via Management APIPOST /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).
Block List / Block Grid
Section titled “Block List / Block Grid”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.
Examine: Search and Indexing
Section titled “Examine: Search and Indexing”Umbraco uses Examine (Lucene.NET) for search indexing.
Default Indexes:
InternalIndex: All content (published + unpublished) — for backoffice searchExternalIndex: Published content only — for public website searchMembersIndex: 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)); }}