2026 Optimizely CMS 13 release notes

  • Updated

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

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

Release highlights

Date Release highlights Type
June 1

EPiServer.CMS.Core 13.1.0

  • Expanded external content property type mappings
  • Promoted Applications endpoints in CMS REST API to general availability
  • Added _AssetItem external URL indexing for LinkItem DAM properties
  • Added VisibleInMenu to Optimizely Graph schema for page types
  • Released Graph Conventions API for CMS 13
Enhancements and bug fixes
May 22 Released Opal tools for CMS 13 Enhancement
May 4 Added JavaScript SDK support to CMS 13 Enhancement
April 28 DXP – Added support for Incremental Static Regeneration (ISR) Enhancement
April 24 (Beta) Serve clean markdown to AI agents Beta feature
April 22 EPiServer.CMS.Core 13.0.2 Bug fixes
April 9 EPiServer.CMS.Core 13.0.1 Bug fixes
April 9 Optimizely Forms – Version 6.0.0 is now compatible with CMS 13. Enhancement and bug fix
April 7 Released Opal Chat Enhancement
March 31 CMS 13 general availability (GA) release GA release

May 4

  • Added JavaScript SDK support to CMS 13 – The Optimizely JavaScript SDK provides developers with a modern, React-ready solution for modeling, fetching, and rendering CMS content, reducing manual tasks, accelerating development, and simplifying the creation and maintenance of content-driven experiences. See the JavaScript SDK documentation for more information. See JavaScript SDK.
    • Structured content modeling – Define content types, property groups, and display templates for clean, predictable content.
    • Simple content fetching – Fetch, filter, and sort CMS content with built-in utilities and webhook support.
    • Modern rendering – Render pages, experiences, and rich text with live preview and DAM asset support.
    • Developer-friendly tooling – Full TypeScript support with autocomplete, error handling, and detailed logs.
    • Faster workflows – CLI tools sync content and content types directly from the CMS.

April 24—Beta feature

Apply to join the Markdown for Agents for CMS 12 and CMS 13 beta on the Optimizely beta signup page.
  • (Beta) Markdown for AI agents – Deliver a clean markdown version of your pages to AI agents at the edge, instead of full HTML. Because AI agents process markdown more efficiently than HTML, this reduces ingestion cost and improves the accuracy of AI-generated responses that reference your content. The feature does not affect the page experience for human visitors.

CMS Core—EPiServer.CMS.Core

June 1—13.1.0

Enhancements

  • Expanded property type mappings for external contentProperty type mappings for external content sources are now more flexible when you use external content without modifying existing content types. Text properties (ShortString, LongString) can now map to LongString, XHTMLString, LinkItem, and URL. Number properties (Integer, Decimal) can map to Decimal, ShortString, LongString, and XHTMLString. Content reference properties (ContentReference, ContentReference<T>) can map to LinkItem, URL, and ContentReference. These rules also apply to list types.
  • Applications endpoints in CMS REST API now generally available – The experimental designation has been removed from the Applications endpoints in the CMS REST API.
  • Added external URL indexing for DAM assets in LinkItem properties – When DAM assets are referenced in LinkItem properties with the _AssetItem configuration, Optimizely Graph now indexes the external URL from _AssetItem.url. The url.default and url.hierarchical fields are now populated with the external DAM asset URL instead of the internal CMS URL. This behavior applies only to sites using the new _AssetItem DAM configuration. Existing sites with legacy DAM configuration are not affected.
  • Added VisibleInMenu to the Optimizely Graph schema – The VisibleInMenu property (displayed as Display in Navigation in the CMS edit UI) is now indexed in the Optimizely Graph schema and queryable for all page types. To hide it globally, set CmsFeatureOptions.SectionsVisibility.VisibleInMenuProperty in your startup configuration.
  • Released Graph Conventions API for CMS 13 – Use the Conventions API to customize how content is indexed in Optimizely Graph for CMS 13. Exclude content types from indexing or add computed fields to the Graph schema. Configure it using the conventionsBuilder parameter on AddContentGraph().

Bug fixes

  • CMS-38305 – Fixed an issue where the preview token was not refreshed when switching between On-Page Editing, Visual Builder, and Preview modes, which caused "Not authorized" errors when the token expired.
  • CMS-50924 – Fixed an issue where a URL hash fragment entered in the Remaining URL field of a LinkItem was excluded from the URL indexed in Optimizely Graph.
  • CMS-51017 – Fixed an issue in the Graph C# SDK where GraphQL queries generated using OrderBy() on metadata properties such as StartPublish, Status, Variation, and Language were invalid and threw an exception when executed. The generated queries now correctly nest the sort field under _metadata.
  • CMS-51656 – Fixed an issue in multisite setups where block content stored in per-application asset folders had null values for _metadata.url.base and _metadata.url.default in Optimizely Graph queries, making it impossible to filter blocks by site.
  • CMS-51671 – Fixed an issue where synonym expansion was not available when using full-text search in the Graph C# SDK. The SDK now supports synonyms through the BuildFilter<T>() API with a SynonymSlot.
  • CMS-51700 – Fixed a performance issue in the Graph sync event handler where a redundant synchronous content comparison check caused UI slowdowns during content publish.
  • CMS-51711 – Fixed an issue where calling Facet(x => x.Name) in a Graph C# SDK query threw an InvalidFacetFieldException even though the Name property supports faceting in Optimizely Graph.
  • CMS-51811 – Fixed an issue in CMS 13 where a site could not start when the database was configured in ReadOnly mode using the DatabaseMode setting in appsettings.json.
  • CMS-51841 – Fixed an issue where custom localization providers were not applied to property captions and help text on content types. Property labels and help text are now resolved from the highest-priority registered localization provider.
  • CMS-51845 – Fixed an issue in the Graph C# SDK autocomplete validator where ContentReference, LinkItem, and LinkItemCollection properties incorrectly threw an exception even though these types support autocomplete in the Optimizely Graph schema. Also fixed an issue where string properties without [IndexingType(IndexingType.Queryable)] were silently accepted but failed at the Graph gateway.
  • CMS-52263 – Fixed an issue where upgrading from CMS 12 to CMS 13 could fail when the database contained content type names with characters that CMS 13 considers invalid, such as non-ASCII characters, hyphens, or dots. The upgrade process now includes a migration step to sanitize these names. Content type name validation has also been updated to work correctly regardless of SQL database collation.

April 22—13.0.2

Bug fixes

  • CMS-49168 – Fixed the issue where content type conversion did not update the soft link table, which caused a database constraint error and prevented the site from starting after a converted content type was removed.
  • CMS-50885 – Fixed the issue where querying Optimizely Graph for a page with a block list property bound to an external content source returned null instead of the expected external content values.
  • CMS-50994 – Fixed the validation error that occurred during startup when an automatically created app name contained invalid characters, such as dashes.
  • CMS-51112 – Fixed the issue where a custom dijit property editor that did not implement the onChange method failed to render in the Visual Builder.
  • CMS-51171 – Fixed the site startup failure that occurred when an add-on or project containing custom property definition types was uninstalled and then reinstalled.
  • CMS-51200 – Fixed the issue where the View on website link appeared in the Options menu for root and block content items, where it is not applicable.
  • CMS-51273 – Fixed the issue where a language-shared list property did not display its value in translated language versions after the [CultureSpecific] attribute was removed from the property definition.
  • CMS-51481 – Fixed the site definition migration failure that occurred when a site definition name did not conform to the required naming format. The migration now uses the site's UniqueId instead of its display name.

April 9—13.0.1

Bug fixes

  • CMS-49431 and CMS-50893 – Fixed the issue where property values in deeply nested inline blocks were not persisted when the nesting was three or more levels deep.
  • CMS-50556 – Fixed the missing context menu icon for IList<Block> items in All Properties mode.
  • CMS-50716 – Fixed the syntax error that occurred when using Contains, StartsWith, or EndsWith in FilterBuilder due to a naming conflict with LINQ. These methods are renamed to FilterContains, FilterStartsWith, and FilterEndsWith.
  • CMS-50752 – Fixed the issue where URL fragment anchors (for example, #section) were stripped from shortcut target links in rich-text and link fields.
  • CMS-50870 – Fixed the 500 error that occurred when deleting a content source that was actively used in a content binding. The API now returns a 400 status code with a descriptive error message.
  • CMS-51034 – Changed the default behavior of the Create a new block option in content area properties to create inline blocks instead of shared blocks. Inline blocks are stored directly on the page, which reduces shared block sprawl in the Assets pane and makes content easier to manage.

Optimizely Forms—EPiServer.Forms

April 9—6.0.0

Enhancement

Bug fix

  • CMS-50238 – Fixed an issue where an exception was thrown during the import and export flow for newly created content due to security settings not being properly initialized. This fix ensures security is correctly set when content is saved during this process, and prevents unexpected errors when importing or exporting content that includes form field dependencies.

DXP

April 28

Enhancement

  • Added support for Incremental Static Regeneration (ISR), which lets you update individual pages without rebuilding your entire site. ISR reduces build times, improves performance for large or frequently updated sites, and reduces infrastructure load. See Next.js ISR caching and Optimizely Graph webhooks.

Optimizely Opal chat—Cms.OpalChat

April 7—2.0.0

Released the Optimizely.Cms.OpalChat 2.0.0 NuGet package that includes Opal Chat, so editors can access AI-powered assistance without leaving CMS.

Optimizely Opal tools—Optimizely.Cms.Opal.Tools

May 22—13.0.0

Released tools to help you create and manage content and content types, optimize for search engines, and improve AI discoverability. See Available tools for CMS 13.

  • paas_cms_list_content_types – Lists all content types in CMS.
  • paas_cms_get_content_type_details – Retrieves detailed information about a specific content type, including all property definitions with types, validation rules, and group assignments.
  • paas_cms_create_content_type – Creates a new content type with a key, display name, base type, and property definitions.
  • paas_cms_update_content_type – Modifies an existing content type's display name, description, or property definitions.
  • paas_cms_delete_content_type – Deletes a content type from CMS. The content type must not have any existing content instances.
  • paas_cms_list_property_groups – Lists all property groups in the CMS with their names and sort order.
  • paas_cms_create_property_group – Creates a new property group with a unique key and optional sort order.
  • paas_cms_get_content_data – Retrieves a content item's data including all non-metadata properties. Fetches a specific version or the latest published version.
  • paas_cms_update_content_item – Updates properties on a content item. Accepts a JSON object of property name and value pairs. If no contentkey is specified, creates a new content item as a draft. Returns a contentKey (GUID) and contentVersion for subsequent operations.
  • paas_cms_delete_content_item – Moves a content item to the waste basket. An editor can restore the item.
  • paas_cms_publish_content_item – Publishes a content item immediately or schedules it for a future date and time. Requires a content version number.
  • paas_cms_create_content_variation – Creates a new locale variation of a page or experience content item.
  • paas_cms_get_content_preview_url – Generates a preview URL for a specific content version, letting Opal fetch and analyze the rendered HTML.
  • paas_cms_seo_analysis – Analyzes content SEO performance and provides AI-powered recommendations.
  • paas_cms_seo_edit – Applies SEO recommendations to CMS content.
  • paas_cms_geo_analysis – Performs an AI-powered audit of content for LLM discoverability.
  • paas_cms_geo_apply – Applies JSON-LD schema templates to the content's JsonLdTemplates property. Creates a new draft version with the schema markup.