2026 Optimizely CMS 12 release notes

  • Updated

Follow this article to receive email notifications when new packages are available for Optimizely Content Management System (CMS) 12. Product packages are found on the Optimizely NuGet server and include the following products:

Are you looking for the 2025 CMS 12 release notes or the 2025 CMS (SaaS) release notes?

Or release notes before January 2024 on the Optimizely World site?

You can find prior versions of user guides (2021 and older) and when functionality was released or deprecated at the following locations:

Release highlights

Date Release Type
April 10

CMP DAM in CMSEpiServer.Cms.WelcomeIntegration 2.2.0

Enhancements

  • DAM metadata consistencyDescription, FocalPoint, and Renditions now available in both REST API and Graph
  • Cached metadata renderingTagHelper, HtmlHelper, and new IUrlHelper.DamAssetUrl render assets without live API calls
  • Asset tracking and cleanupAssetID now stored instead of RenditionID; new IDAMAssetService.DeleteByAssetId() for orphaned reference removal

Bug fixes

  • CMS-49239 – Fixed DAM asset picker missing from CMS editor
  • CMS-49316 – Fixed DamAssetInfo.Renditions always null when assetType is null
Enhancements and bug fixes
April 10 CMS major version policy announcement Announcement
March 30 Enhancements
March 26 Enhancement
March 13 Enhancement
February 03 Enhancement
January 28 Bug fix
January 28 Enhancement
January 23 Enhancement and bug fixes
January 22 Bug fix
January 20 Bug fix
January 5 Bug fixes

CMS 12

April 10—CMS major version policy

  • Development All new product development is focused exclusively on the latest major version of CMS.
    At this time, that is CMS 13. No new functionality will be built for earlier major versions.
  • End of Support  We provide active support for the current major version and one prior major version.
    This includes monitoring, triaging, and fixing severe bugs and or any security issues for CMS 12. At this time, CMS 13 and CMS 12 are supported. CMS 11 and earlier are no longer supported.
  • End of Life We do not enforce end-of-life by removing access or forcing upgrades. Customers may continue using older major versions. However, major versions older than the supported window will no longer receive support.

January 22—EPiServer.CMS.Core 12.23.1

Bug fix

  • CMS-47283 – Fixed an issue where link validation warnings for XhtmlString properties were incorrectly displayed across all language versions of a content item, even when a broken link was present in only one specific language version.

January 23—EPiServer.CMS.UI 12.34.2

Enhancement

  • Added a tooltip feature in CMS 12 that displays the names of active servers for each URL.

Bug fixes

  • CMS-47914 – Fixed an issue where the ReadOnlyMiddleware was incorrectly redirecting health check endpoints, causing them to fail, particularly in failover applications. The health check path is now whitelisted in the middleware request validator to ensure proper functionality.
  • CMS-47408 – Fixed an issue where a binary-breaking change in EPiServer.Cms.Shell.IContentExtensions.PreviewUrl prevented third-party plugins and add-ons from functioning correctly after upgrading EPiServer.Cms.Shell.UI from versions 12.20.0.0 to 12.33.5.0. This change, caused by the addition of an optional parameter, was addressed to restore compatibility.
  • CMS-47134 – Fixed an issue where users could set their new password to their current password in the MySettings section, which was incorrectly accepted. The system now correctly displays a validation error, preventing the new password from being identical to the current one.
  • CMS-46675 – Fixed an issue where you could not hide the AllowedTypes description (and now you can), providing you with more control over content type configurations.
  • CMS-45964 – Fixed an issue where, when selecting content via a search component within a modal dialog for a ContentArea limited to a single content type (such as ImageData), clicking a search result would close the dialog without adding the selected content item to the ContentArea. Now, the selected content is correctly added.
  • CMS-45741 – Fixed an issue where updating the content of a personalized inline block within a ContentArea could inadvertently overwrite the content of other personalized inline blocks in the same ContentArea. This fix ensures that changes to one inline block are isolated and do not affect others.
  • CMS-43553 – Fixed an issue where the CMS UI's right panel or main content area would sometimes fail to stretch to full width, especially when opening multiple tabs rapidly. The layout now consistently maintains its intended full-width display.
  • CMS-39989 – Fixed an issue where the old domain world.episerver.com was hardcoded in the UI for the feedback link and RSS Data fetcher, causing potential domain redirection problems. The domain was updated to world.optimizely.com.

Content Delivery API

January 28—EPiServer.ContentDeliveryApi 3.12.6

Bug fix

  • HAPI-2931 –Added support for Content Management API (CMA) to create content with any valid language codes, removing the previous restriction to OS-supported cultures. This allows for the creation of content in languages such as zh-CN (Chinese simplified) directly through CMA, even if not listed in CultureInfo.GetCultures().

January 20—EPiServer.ContentDeliveryApi 3.12.5

Bug fix

  • HAPI-2924 – Fixed an issue where special characters in the “Remaining URL” field of a LinkItem were not correctly encoded when returned by the Content Delivery API and Optimizely Graph.

CMP DAM in CMS

April 10—EpiServer.Cms.WelcomeIntegration 2.2.0

Enhancements

  • DAM metadata consistency – Improved consistency and availability of Digital Asset Management (DAM) asset metadata within CMS, ensuring that Description, FocalPoint, and Renditions data for images are now uniformly accessible with both the REST API and Optimizely Graph. This provides a more unified and reliable data experience, with all relevant metadata consistently saved in the CMS database regardless of the retrieval method.
  • Cached metadata rendering – Added cached DAM asset metadata rendering support for templates. The DAM integration now reuses metadata stored in the CMS database to render assets without making extra calls to the CMP Graph API, improving page load performance. Three rendering methods are available: 
    • <dam-asset> TagHelper (recommended)
    • RenderTagWithMetadata HtmlHelper
    • IUrlHelper.DamAssetUrl extension for direct URL generation with optional rendition support (new)
  • Asset tracking and cleanup – Enhanced DAM asset tracking and cleanup processes to ensure accurate management of deleted asset references. This improvement addresses previous limitations where rendition IDs were stored instead of asset IDs, and where public API methods for deleting or updating mapped identities were unavailable.
    • AssetID storage – Implemented the storage of the primary AssetID within the metadata field when creating or updating mapped identities in tblMappedIdentity. This enables correlation of deletion webhooks (which carry the AssetID) with mapped identities, regardless of whether you initially selected a rendition or original asset.
    • IDAMAssetService.DeleteByAssetId(assetId) endpoint – Added REST API endpoint for deleting mapped identity entries, which lets you remove orphaned mapped identities from tblMappedIdentity, preventing data inconsistencies. stale data, and inaccurate asset usage tracking.

Bug fixes

  • CMS-49239 – Fixed an issue where the DAM asset picker did not display in the CMS editor due to an MSBuild target and item group name collision. Now, the target and item groups have package-specific names, resolving the conflict and ensuring proper module deployment.
  • CMS-49316 – Fixed the issue where DamAssetInfo.Renditions was always null because renditions were not fetched when assetType was null. The rendition fetch logic now resolves the asset type from the API response when not explicitly provided, ensuring renditions are populated for all code paths, including the GUID-only overload of GetAssetMetadata and the DAM metadata scheduled job.

Optimizely Forms

March 13—Optimizely.CMS.Forms 1.5.0

Enhancement

  • Added smooth deployment support for Optimizely Forms with Optimizely Graph. Form data is now preserved during Optimizely Graph index rebuilds, preventing data loss and ensuring forms continue to function as expected after activating smooth deployment.

January 5—Optimizely.CMS.Forms 1.4.2

Bug fixes

  • AFORM-4730 – Fixed an issue where the delta synchronization job would fail when content was deleted, preventing users from successfully indexing content. The delta indexing job now runs as expected, ensuring content can be indexed without errors even after deletions.
  • AFORM-4733 – Fixed an issue where the Optimizely.Cms.Forms.ContentGraph package was incorrectly attempting to index non-Form content, leading to an ArgumentException and indexing failures for regular content (pages, blocks, and folders). The Forms ContentGraph package now correctly processes only Form-related content, ensuring smooth indexing for all content types.
  • AFORM-4734 – Fixed an issue where a NullReferenceException would occur during site initialization when EPiServer.Forms, Optimizely.Cms.Forms.ContentGraph, and Optimizely.ContentGraph.Cms packages were present, preventing the site from starting. Sites now initialize successfully with these packages installed.

Optimizely Language Manager

January 5—EPiServer.Labs.LanguageManager 5.5.3

Bug fix

  • LM-714 – Fixed an issue where the Learning Management (LM) system was using an outdated version (0.21.1) of the axios package, which contained a known vulnerability. Language Manager was upgraded to use axios version 0.22.0, aligning with the version used by CMS, to eliminate this security risk.

DXP

March 30

Enhancements

  • Pageview metric – Updated the pageview reporting metric to align with billing dates instead of calendar dates. Pageview data in DXP now matches the Opti ID Admin Center, ensuring consistency across all reporting surfaces.
    • How are my pageviews calculated?

      Pageview counts are aggregated from Application Insights and include traffic across all of your environments.

    • Why do my pageview numbers look different than before?

      Optimizely transitioned from calendar-based reporting to contract-aligned reporting. This change ensures that what you see on your dashboard matches the usage data leveraged for billing.

      Previously, data was shown from the first to the end of each month. Now, your dashboard reflects your specific billing cycle (for example, March 6 – April 5).

  • Availability metric – Updated the availability metric to use a more granular calculation method. The revised calculation provides more precise reporting.
    • How is availability calculated?

      Availability is now calculated using a high-resolution, daily-weighted average. Optimizely measures uptime down to the second every 24 hours (86,400 seconds per day) to determine your daily percentage. Your monthly availability is then derived from the average of these precise daily snapshots.

    • How does this new availability calculation benefit me?

      Optimizely moved to a granular, second-based calculation. This increased precision eliminates rounding discrepancies and gives you the most accurate view of your service level performance to date.

March 26

Enhancement

  • Updated the database export user interface (UI) to improve clarity and usability. The previous Expired database file list has been replaced with a paginated view of database exports from the past 30 days, providing a more intuitive and consistent history of recent exports.

Optimizely Reporting

February 3

Enhancement

  • Improved insights into the Crawl-to-Refer Ratio with new comparison capabilities. You can view the crawl-to-refer ratio comparison between your selected timeframe and the prior period to understand how the ratio changes over time and your optimizations or market shifts impact it.

January 28

Enhancement

  • Expanded AI platform visibility in Crawl-to-Refer Ratio. The dashboard now displays the top six AI platforms based on AI request volume, matching the top six entries in the AI-Agent Analysis table.