Umbraco 15 introduces a suite of powerful upgrades aimed at enhancing scalability, performance, and multilingual support for large, complex websites. With a focus on streamlining caching, content management, and security for headless implementations, this release is designed to meet the evolving needs of developers and content editors alike. Here’s a deep dive into the key updates, from hybrid caching to a new default rich text editor, and how they enhance Umbraco’s capabilities without compromising compatibility or flexibility.
Lazy-Loaded Content Cache and Hybrid Caching
Caching Evolution: Previous versions (Umbraco 8- Umbraco 14) used a full in-memory clone cache called NuCache, which loaded all content into memory per server, leading to high memory demands.
Hybrid Cache Setup: Umbraco 15 introduces a layered caching system:
- Navigation Caches: Handles navigation-related data (parents, children) for both media and documents.
- Routing Caches: Determines routes at publishing time.
- Hybrid Cache: A new cache level specifically for properties within content, which allows content to be fetched on demand if missing in memory.
Distributed Cache Integration: Supports the Microsoft IDistributedCache interface, enabling out-of-process caching (like Redis or SQL Server) for persistence across reboots.
Key Questions for Developers
- How will the new hybrid caching system impact memory usage on large, high-traffic sites?
- How does the distributed cache integration perform with Redis compared to SQL Server?
- What configuration options work best for different memory usage and speed requirements?
Enhanced Cache Configuration
New CMS Cache Configuration: This allows administrators to define how much content to preload (e.g., first 100 items), balancing faster boot times and memory efficiency.
Custom Caching Strategies: Implementers can specify keys for essential content types or documents (like settings nodes) to be cached upfront. Custom seeding strategies can also be created for high-traffic content.
Flexible Cache Lifetimes: Adjust caching lifetimes for local memory, remote cache, and pre-seeded content to optimize performance.
Key Questions for Developers
- What specific configurations and cache lifetimes are recommended for different site sizes or usage patterns?
- How do caching options affect site performance for high-traffic pages and frequently accessed content?
Multilingual Block-Level Variants
Shared Block Structures: Maintains consistent content structures across languages, with shared block layouts but language-specific content.
Synchronized Reordering: Changes to block order reflect across all language variants immediately, streamlining content management for multilingual sites.
Legacy Compatibility and Migration: Migration from older block structures involves a one-time data transformation, which may impact migration times for large sites.
Key Questions for Developers
- What migration steps are required for large sites with existing block structures?
- Does the shared block structure limit customization options for specific languages?
Introduction of TipTap as the Default Rich Text Editor
TipTap as a Replacement: TipTap replaces TinyMCE, which reached end-of-support, with a schema-based setup that enables clean HTML output.
Customizable Toolbar and Extensions: Supports modular toolbar design and custom extensions, allowing more tailored content editing experiences.
Backward Compatibility: TinyMCE remains available for legacy data types, allowing side-by-side operation until full transition to TipTap.
Key Questions for Developers
- What compatibility issues should developers expect when switching from TinyMCE to TipTap?
- How does the TipTap HTML schema handle custom HTML elements or embedded code?
- What customization options are available for extending the TipTap toolbar?
API Security via Client Credentials
OpenID Connect Integration: This enables secure access to Umbraco’s Management API using client credentials, which is essential for headless applications.
API User Permissions: API users can be assigned granular permissions, aligning external applications with Umbraco’s security model and restricting API users from direct back-office login.
Key Questions for Developers
- How are client credentials set up for secure Management API access?
- Can permissions be customized per API endpoint, and how granular is the access control?
Umbraco Extension Template
Streamlined Extension Setup: The new .NET template simplifies custom back-office extension development with preconfigured dashboards and boilerplate code.
Hot Reload for Development: Allows live changes without application restarts, significantly reducing development friction.
Key Questions for Developers
- What technologies can be used beyond TypeScript, Vite, and Lit for extensions?
- How customizable are the generated Swagger types, and can they be extended?
Upgrade Considerations
.NET 9 Compatibility: Umbraco 15 requires projects to upgrade to .NET 9, aligning closely with Microsoft’s release cadence.
Breaking Changes in Cache Models: The removal of ISnapshot requires developers to replace it with IPublishedContentCache or IPublishedMediaCache. Additionally, ModelsBuilder models need updates to match the new caching model.
Key Questions for Developers
- What specific breaking changes exist for snapshot functionality, and how can developers address these?
- How will upgrading to .NET 9 affect third-party packages and dependencies?
Umbraco 15 Release
Umbraco 15’s latest features make it a strong choice for developers optimizing large-scale websites, managing multilingual content, and securing API-driven applications. With improvements across caching, content editing, and API integration, this release not only addresses previous limitations but also opens new possibilities for custom extensions and configurations. As Umbraco continues to align with the latest .NET frameworks, this update sets a solid foundation for future growth and innovation in the CMS landscape. This update sets a solid foundation for future growth and innovation in the CMS landscape.