Optimizely CMS 12 Now Fully Supports .NET 10
This is the latest installment in our ongoing series covering .NET version support for Optimizely products. If you've been following along, you may have read our earlier posts on this topic:
- Five, Six, Seven, (Eight) — Out With the Old, In With the New .NET (October 2022) — .NET 7 support and .NET 5 deprecation
- Support for .NET 8 (November 2023) — .NET 8 compatibility announcement
- .NET 8 FAQ (November 2024) — Transition guidance for .NET 6 end-of-support
As the .NET ecosystem continues to evolve, staying current with supported frameworks is essential for security, performance, and long-term maintainability. We're pleased to confirm that Optimizely CMS 12 is fully compatible with .NET 10, and we encourage all customers to begin planning their upgrade path.
Why This Matters: .NET 8 and .NET 9 Are Approaching End of Support
Microsoft has confirmed that both .NET 8 and .NET 9 will reach end of support on November 10, 2026 (see this for more detail). Both have already entered the Maintenance phase, meaning updates are limited to security patches only. .NET 10, released November 11, 2025, is the current LTS release with support through November 2028 - giving you over two additional years of coverage.
CMS 12 and .NET 10: What You Need to Know
After thorough verification, we can confirm that CMS 12 is fully compatible with .NET 10. Our testing included CMS 12 sites with popular add-ons such as Optimizely Forms and Language Manager installed, and we can confirm that these add-ons work as expected on .NET 10 as well. Here's what you need to know about upgrading:
Recommended Package Versions
For the best experience, we recommend updating to the following package versions (or higher):
| Package | Minimum Recommended Version |
|---|---|
EPiServer.Cms.Core |
12.24.0 |
EPiServer.Cms.UI |
12.34.4 |
These versions include dependency updates that resolve two known vulnerability warnings when running on .NET 10.
Running on Earlier CMS 12 Versions
If you are running an earlier version of CMS 12, the good news is that .NET 10 compatibility is not limited to the latest packages. Previous CMS 12 versions work with .NET 10 as well. However, you may encounter two dependency vulnerability warnings during build or restore. These warnings do not affect functionality but should be addressed for a clean security posture.
You have two options:
- Upgrade to the recommended CMS versions above - the simplest path, as the vulnerability warnings are resolved automatically.
- Manually update the affected dependencies - if upgrading CMS packages immediately is not feasible, you can resolve the warnings by updating the vulnerable transitive dependencies directly in your project file.
What About Commerce 14?
For customers running Optimizely Commerce 14 (Commerce Connect), please note that .NET 10 support is not yet available. We'll work on updating Commerce 14 (and relevant Commerce-specific addons) to support .NET 10, and expect to release a supported version of Commerce 14 for .NET 10 in late Q2 / early Q3 2026. We’ll share a follow-up announcement once the work is complete.
In the meantime, Commerce 14 customers should continue running on .NET 8 and monitor this space for updates.
Our Recommendation
We encourage all CMS 12 customers to target .NET 10 for new projects and begin planning upgrades for existing solutions. With .NET 10 being an LTS release supported through November 2028, it provides a stable, long-term foundation for your digital experience platform.
By upgrading now, you benefit from:
- Extended support - over two additional years of framework support compared to .NET 8 and .NET 9.
- Performance improvements - each .NET release brings meaningful runtime and compilation enhancements.
- Security - staying on a supported framework ensures you receive critical security patches.
Need Help?
If you have questions about upgrading to .NET 10 or encounter any issues, our support team and developer community are here to help. Visit the Optimizely Developer Documentation for the latest system requirements, or reach out to Optimizely Support for direct assistance.
If those versions had actually been compiled as .NET 10 I would have found a way to give you more than 5 stars ✨😊
But it's great to hear we can bump our customers onto the latest versions of .NET.
Great to see official .NET 10 support in CMS 12 👏 Just went through a large-scale upgrade across multiple solutions and can confirm – most of the work is in the dependency graph, not the framework switch itself.
I’ve shared a few practical lessons from the field here: https://lnkd.in/dpKa8-5w
Good to see .NET 10 support in CMS 12 is here.
I'm just trying the update to
EPiServer.CMS 12.34.4but getting build warnings due to dependency constraints.EPiServer.Hosting 12.24.0directly requiresEPiServer.Framework 12.24.0. ButEPiServer.CMS 12.34.4's transitive chain also resolvesEPiServer.CMS.Core 12.23.1→ which pinsEPiServer.Frameworkto exactly= 12.23.1.The next version up from
EPiServer.Hostingis for 13.0.0, i.e. for CMS13, but we need to stay on CMS12.Can we get a version of
EPiServer.Hostingthat works withEPiServer.CMS 12.34.4?Or am I doing something wrong?
@Mark Stott, @Piotr: thank you :)
@Daniel Copping: the EPiServer.CMS 12.34.4 package specifies a dependency range of [12.23.1, 13.0.0) for EPiServer.Hosting, as shown here: nuget.optimizely.com/packages/episerver.cms/12.34.4 (so it resolved the 12.23.1 version when restoring the package). However since EPiServer.Hosting 12.24.0 falls within that range, I think you should be able to upgrade to that version directly without any compatibility issues. Thanks!
Thanks for clarifying! You're right that EPiServer.Hosting 12.24.0 falls within the range and resolves without hard errors. However, upgrading to it in practice does produce warnings, because EPiServer.Hosting 12.24.0 depends on EPiServer.Framework 12.24.0, while the rest of the CMS.AspNetCore.* family stays anchored at 12.23.1 due to NuGet's minimum version selection — the EPiServer.CMS umbrella's range lower bound is 12.23.1, so that's where NuGet floors them. Those 12.23.1 packages carry constraints expecting EPiServer.Framework = 12.23.1, hence the mismatch.
Currently, the fix is to explicitly pin EPiServer.CMS.AspNetCore, EPiServer.CMS.AspNetCore.Templating, EPiServer.CMS.AspNetCore.Routing, EPiServer.CMS.AspNetCore.Mvc, EPiServer.CMS.AspNetCore.HtmlHelpers, EPiServer.CMS.AspNetCore.TagHelpers, EPiServer.CMS.Core, and EPiServer.Framework.AspNetCore all to 12.24.0 in my project to raise the floor and bring the whole suite into alignment - I'd much prefer to avoid this.
It would be great if the EPiServer.CMS umbrella kept its sub-package lower bounds in sync with each EPiServer.Hosting release, so that upgrading through the umbrella automatically raises the floor on the CMS.AspNetCore.* family too — and consumers don't need to manually pin each one.
@Daniel Copping: That makes sense, we will investigate this further to enhance the upgrade experience. Thank you for the detail feedback!