Coming soon...

Development

5 Hidden Gems in Umbraco 17 You’ll Wish You Knew Sooner

Published

Dec 16, 2025

Reading Time

time

Every Umbraco release comes with its fair share of headline features—the kind that make it into keynotes, blog announcements, and LinkedIn posts within minutes of launch. But the real day-to-day wins? They’re usually tucked away in the details.

Umbraco 17 is no different. Beneath the surface, there are a handful of improvements that don’t shout for attention but quietly make your life easier as a developer (and occasionally as a marketer too).

Here are five of those “wait, that’s actually really useful” features you might have missed.

1. Cleaner, More Predictable Content Delivery API Responses

If you’ve been working headless (or even semi-headless), you’ll notice this pretty quickly.

The Content Delivery API responses in Umbraco 17 feel more consistent. Property structures are easier to reason about, and you spend less time writing defensive mapping code just to handle edge cases.

It’s not revolutionary—but it removes friction. And when you’re building frontends that rely heavily on predictable JSON, that matters more than you’d think.

Why it’s a gem:
Less time debugging response shapes = more time building actual features.

2. Backoffice Extensions That Don’t Feel Like Hacks

Customizing the backoffice used to be one of those tasks where you’d think, “There must be a better way to do this.” In v17, there usually is.

The extension model has been refined to the point where adding dashboards, custom views, or integrations feels more aligned with modern frontend practices. You’re not fighting the framework as much, and the mental model is clearer.

Why it’s a gem:
You can finally build backoffice enhancements without feeling like you’re duct-taping AngularJS leftovers to your solution.

3. Improved Dependency Injection Clarity

This one’s easy to overlook—until you go back to an older version.

Service registration and resolution in Umbraco 17 are much closer to “standard .NET expectations.” Lifetimes behave predictably, and there’s less ambiguity about where things should be wired up.

If you’re building custom services, composers, or integrations, this reduces a surprising amount of cognitive overhead.

Why it’s a gem:
Fewer “why is this scoped?” moments, more confidence in your architecture.

4. Subtle Performance Wins in the Backoffice

No single feature here—just a collection of small optimizations that add up.

Content trees load faster, navigation feels smoother, and you’re less likely to hit those awkward pauses when switching between sections. On larger installations, this becomes very noticeable.

Your editors might not know why things feel better, but they’ll definitely notice that they do.

Why it’s a gem:
Happy editors = fewer “the CMS feels slow” conversations in your inbox.

5. Better Alignment with Modern .NET Patterns

This is the kind of improvement that doesn’t show up in screenshots but pays off long-term.

Umbraco 17 continues to move away from “Umbraco-specific ways of doing things” and toward standard .NET conventions. Whether it’s configuration, hosting, or general project structure, things feel more familiar if you’re coming from ASP.NET Core.

That means easier onboarding, cleaner codebases, and fewer “special cases” to explain.

Why it’s a gem:
Your Umbraco project starts to look and behave like the rest of your .NET ecosystem—which is exactly what you want.

The takeaway

The big features in Umbraco 17 are great—but these smaller improvements are the ones you’ll actually feel after a few days (or hours) of development.

They won’t make the release headlines, but they will:

  • reduce friction

  • improve consistency

  • and make both developers and editors a bit happier

And in the long run, that’s what separates a good CMS from one you actually enjoy working with.

If you’ve spotted other hidden gems in v17, there’s a good chance they fall into the same category: small changes, quietly doing a lot of heavy lifting.