
Codegarden 2025 was the best edition in Odense yet. From the keynote announcements to the community energy, it felt like Umbraco is entering a new phase with real momentum behind it. One of the highlights for me was the MVP Summit, where I had the chance to give direct feedback and take part in several great open space discussions. I joined sessions on:
- Bellissima backoffice development and extensions
- Headless use cases and best practices
- Backoffice editor experience
- Package development and community contributions
- Version migration and adoption barriers
- What features are still missing in Umbraco
It was great to see how open the team is to feedback, and I even got some kind words about the ideas I shared. I also joined the "Build Your Own Developer Blog with Umbraco 15 and Astro" workshop on Tuesday, which was a fun and practical way to kick off the week. With that, here are my session highlights and key takeaways from this year’s Codegarden.
Keynote
The keynote separated what is nearly finished from what is still on the drawing board. Live demos showed block-level variation and the new Tiptap rich-text editor inside a cleaner back office. Slides confirmed that real-time collaboration, reusable content blocks, a new search abstraction, and official Docker images are all in active development. The forthcoming Umbraco MCP Server will give AI tools a standard way to read, understand, and carry out tasks in Umbraco through the Model Context Protocol. Familiar add-ons such as Engage, Workflow, Forms, Deploy, and UI Builder are all slated for meaningful upgrades.
Platform improvements rounded out the session. The team detailed a path to full load balancing and previewed Umbraco Compose, an orchestration layer that unifies the CMS with other composable DXP products behind a single GraphQL endpoint. Additional enhancements for Umbraco Cloud were presented before the 2025 MVPs took the stage, underscoring that every roadmap item, from Docker support to the search revamp, is being shaped in close collaboration with the community.
Umbraco CMS: Releases, Realities, and Rewriting the Umbraco Lore.
This session took the form of rapid-fire myth-busting. A slide would present a long-standing belief about the CMS, the audience guessed whether it still applied, and the speakers revealed the new reality. Many assumptions were overturned: search is being rebuilt so it no longer relies on Examine, the rich-text editor has moved from TinyMCE to Tiptap, and load balancing for the modern back office is underway. Umbraco already runs happily on any operating system, documentation is being refreshed for v17, and the extension surface is growing again after an earlier tightening that followed the back-office rewrite.
Looking ahead, v17 aims to match everything users can do in the current long-term-support v13 and then fill the remaining gaps. The roadmap includes a pass over older features to decide what should be modernised or retired, work on a visual editor, and exploration of virtual members. Those last two ideas were suggestions I raised at the MVP summit, so it was rewarding to hear them called out on stage. Moments like that make it clear the team is listening closely to community feedback.
Better Together: Umbraco Cloud Shaped by HQ and the Umbraco Community
This session opened with a rapid recap of what has shipped since the last Codegarden. Cloud projects can now connect to external login providers, cloud bandwidth calculations have been made more generous, and Flexible Environments let teams spin up short-lived review branches with minimal effort. Hostname monitoring alerts you the moment a domain record breaks, and the new CI/CD v2 engine can deploy a build to any environment by passing that environment’s name to the API.
The second half looked ahead. Full load balancing will arrive in Umbraco Cloud once the back-office work that enables it is complete, and a portal screen for configuring WAF rules is in the pipeline. Bjarke framed these items as a direct response to recurring customer requests and community discussion, showing Cloud’s roadmap continuing to evolve alongside real-world needs.
Umbraco Compose - Orchestrate it all
This session introduced Umbraco Compose, a new orchestration layer designed to act as a backend-for-frontend across composable architectures. The talk opened with two key motivations. First, teams often prefer not to import external data sources directly into Umbraco. Second, building and maintaining a custom backend-for-frontend adds complexity, especially when caching needs to happen closer to the delivery layer. Compose addresses both by sitting in front of Umbraco and any third-party systems, offering a single, unified access point for frontend applications.
At the core of Compose is a GraphQL endpoint that can query multiple data sources at once. The session showed how developers can combine content from Umbraco with data from systems like commerce platforms or PIMs, all within a single query. What makes Compose especially powerful when used with Umbraco CMS is its ability to surface that external content inside the CMS itself. A new Compose property editor allows editors to browse and select items from other systems as if they were native content, giving Umbraco a unique advantage in composable setups. Launch features include RESTful APIs, support for both persisted and ad-hoc GraphQL queries, regional data hosting, cache policies, CDN integration, and bi-directional integration with Umbraco CMS.
This was one of my favorite sessions because it showed just how much potential Umbraco has to grow within the composable DXP space. By bringing external data into both the delivery layer and the editing experience, Compose transforms Umbraco from a standalone CMS into a central part of a modern, flexible architecture.
Next-Level Backoffice
This session demonstrated how Umbraco 16 makes it easier to tailor the editor experience through clean extension points. Niels started by showing a custom dashboard that offers task-focused actions like Create promotion article or View members, providing a more guided experience alongside the traditional content tree. He then added a custom menu action, including the ability to override the default Create action for specific nodes by applying conditions.
Next, Niels introduced a custom property editor for entering address data. Instead of building a custom schema, it reused the built-in Umbraco.Plain.Json
schema to store values, keeping the setup lightweight. Validation was handled using the Validation Context API, which makes it possible to replace the default character count rule with a custom word count validator. Finally, property-level permissions were used to hide or disable fields based on conditions, such as waiting for a value to be selected in another field. Altogether, the session highlighted how much control developers now have to shape the back-office while staying aligned with Umbraco’s upgrade-friendly architecture.
The Future of (Umbraco) Search
This session introduced a new abstraction layer that decouples search from Examine, creating a more flexible and extensible foundation. It is designed to support full-text search, filtering and faceting by property, multilingual and segmented content, protected items, and native understanding of complex property values. The goal is to provide a consistent search experience across frontend queries, back-office search, and the Content Delivery API.
A demo showed both an in-memory search provider and an Elasticsearch provider working side by side without relying on Examine. The abstraction includes extension points for defining what gets indexed, when indexing occurs, and how content is processed for indexing. It will soon be open-sourced and available as an add-on for Umbraco 16 and 17, with core integration planned for after the v17 LTS. This shift lays the groundwork for smarter, provider-agnostic search that evolves alongside project needs.
Conclusion
This year’s Codegarden wasn’t just inspiring on the Umbraco side of things. I also picked up ideas I can apply in non-Umbraco projects, like strategies around hybrid caching, working with Docker containers, and using dynamic image crops more effectively. Outside the sessions, the Codegarden Pre-Party, the boat ride, and the Special Evening Program and Dinner Party on Thursday offered the perfect mix of fun and meaningful conversations. I met a lot of great people and made some valuable new connections.
All in all, it is clear that Umbraco is in a really strong place. From platform improvements to product direction, there is a lot to look forward to, and I am excited to be part of that journey.