Follow this article to receive email notifications when Optimizely Content Management System (SaaS) features are available for 2026. See also DXP release notes and the 2025 CMS (SaaS) release notes.
Optimizely CMS (SaaS) user and developer documentation is located on the developer documentation site.
Recent enhancements and bug fixes
| Date released | Enhancements and bug fixes (see sections for details) |
|---|---|
| February 24 |
|
| February 13 |
|
| February 3 |
|
| January 28 |
|
| January 27 |
|
February 24
Enhancement
- Contracts – Added the ability to define contracts (interfaces) that enforce shared properties across multiple content types, ensuring a consistent editing experience and standardized metadata. Contracts integrate with Optimizely Graph by automatically generating GraphQL schemas that let developers query all implementing content types with a single unified query. This simplifies data access, improves code reusability, and decouples front-end development from specific content type implementations. See Create contracts for more information.
February 13
Enhancements
-
JavaScript SDK – The JavaScript SDK is now generally available, providing 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.
- 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.
-
Conditional Forms – Added the ability to configure rules that dynamically show, hide, enable, or disable form fields based on the values of other fields, directly in the form builder. This enhancement unlocks sophisticated form scenarios, making your forms more user-friendly and efficient for both your editors and end-users. See the Conditional Forms documentation for more information.
- Personalized form experiences – Display only relevant fields to reduce clutter, improve clarity, and increase completion rates.
- Intuitive configuration – Set up conditions directly in the form builder UI with support for multiple conditions (AND/OR logic) and various comparison types (equals, not equals, contains, regular expression).
- Added the ability to bind block properties in the Visual Builder, similar to content binding. This feature applies to first-level content, such as pages or shared blocks, and does not support nested block properties within Content Areas, lists of blocks, or blocks used as sections. This provides greater flexibility in associating content blocks.
- Improved content connection handling in nested block dialogs, ensuring that content connections are now saved together with other property changes instead of immediately. This enhancement provides a more intuitive editing experience in which all changes within a dialog, including content connections, follow the standard save-and-cancel workflow.
Bug fixes
- CMS-39991 – Fixed an issue where hyperlinks in the user interface (UI) were incorrect (like the feedback link). The affected links are now updated, improving consistency in CMS.
- CMS-43532 – Fixed an issue where the Link Validation job incorrectly displayed broken link warnings across all language versions of a page, even when the broken link only existed in a specific language version. Broken link warnings now accurately display only in the content version containing the invalid link.
- CMS-44090 – Fixed an issue where the API incorrectly returned an HTTP 500 error when you created a variation version and then tried to update its variation key. The API now correctly returns an HTTP 400 error with the message "Variation key cannot be changed once variation version has been created."
- CMS-46270 – Fixed an issue where CMS incorrectly reported "This item is not used anywhere" for media files linked within blocks, specifically when the external link included a URL with spaces. The system now accurately identifies and displays all instances where a media item is referenced, ensuring users receive correct usage information.
- CMS-46633 – Fixed an issue where the system automatically published copy-and-pasted content for editors with publish permissions, preventing necessary review and updates to fields, like Page Title and Page URL. Duplicated content now remains in draft status, allowing authors to review and edit before publication.
-
CMS-46811 – Fixed an issue where content failed validation if you removed a
DisplaySettingfrom itsDisplayTemplate. This occurred because obsolete settings were incorrectly persisted in the layout information. The system now correctly handles the removal ofDisplaySettings, preventing validation failures. -
CMS-46881 – Fixed an issue where removing a choice from a
DisplaySettingin aDisplayTemplatecaused content previously saved with that setting to block publishing with an unclear validation error. The system now provides a validation warning instead of blocking publication. - CMS-47137 – Fixed an issue where the Last changed by date in the user interface (UI) displayed an incorrect date that did not align with a user’s server time settings. The date now accurately reflects the server's time settings.
- CMS-47166 – Fixed an issue where the edit dialog box for an inline block failed to open, and an error message displayed during data binding, when the inline block was within a content area on a page that had undergone multiple publish, remove, and re-create cycles, particularly when the source and target blocks had a binding definition.
- CMS-47171 – Fixed an issue where you could not open a newly created inline block, nested within another inline block in a Content Area, immediately after its creation.
- CMS-47188 – Fixed an issue where the system lost mapping definitions for block properties when you updated composition settings, properties, child content types, or permissions in the target content type.
- CMS-47269 – Fixed an issue where Cloudflare could cache login redirects or protected media files, potentially blocking access for authenticated users or exposing restricted content. Protected files without public access now include no-cache headers.
- CMS-47320 – Fixed an issue where a missing content source in Optimizely Graph caused an error loading edit mode and the broken links gadget on the dashboard.
- CMS-47349 – Fixed an issue where the edit dialog box for an inline block did not open, resulting in a console error, when attempting to edit an inline block nested within a Content Area property of a block used on a page in edit view.
- CMS-48580 – Fixed an issue in the API where the creation of experiences with nested block structures could fail, throwing a 500 response.
February 3
Enhancements
- Added functionality to integrate external content sources, such as Digital Asset Management (DAM) and Product Information Management (PIM) systems, directly with Optimizely CMS (SaaS). This feature enables users to configure data synchronization, use synced assets within the CMS, and map external content types to CMS content types, reducing content duplication and streamlining content management workflows. See Integrate external content sources with CMS (SaaS).
- Added content filtering capabilities that let you select among All, CMS, DAM, and OCP content views to find and manage content from various sources more efficiently by filtering based on content types or data standards. See Manage Content with Content Manager.
- Added new features to the Content Manager's table view, featuring dynamic column display and robust customization options, and including intelligent default columns based on content source, personalized column customization with saved preferences, a reset to default option, the ability to select all columns, and a sticky first column for clarity. See Manage Content with Content Manager.
- Added capabilities for data-bound content loading and binding blocks and content instances to data sources directly within the Visual Builder edit view. This enhancement improves efficiency and flexibility in design and development processes, enhances the user experience through dynamic content management, and streamlines workflows. See Connect content source using GraphQL.
- Visual Data Binding – A "link" badge next to the block or content title indicates if an instance is data-bound. This badge is visible on content area items and when the block is opened in quick edit.
- Intuitive Connection Management – For unbound blocks or content, you can select Connect content to open a filtered Content Manager picker. For already bound items, you can select Replace and Disconnect to manage the data source.
- Read-Only Mapped Properties – Properties configured in the data source mapping are now read-only, ensuring data integrity.
- Platform Support – Support for data-bound content loading is included in ContentLoader and Graph indexing, with separate caching for bound and unbound models.
- Added automatic creation of Content Sources and Shadow content types for each indexed in the graph. This lets content managers manage effectively without manual provisioning. See Connect content source using GraphQL.
Bug fixes
- CMS-45965 – Fixed the issue where the content selector dialog closed without adding the selected image to the content area when an image was selected from search results and the content area was limited to a single content type.
- CMS-46164 – Fixed the issue where the Save and Cancel buttons in the edit dialog for nested blocks were unreachable when the dialog exceeded screen dimensions at 1280x800 resolution.
- CMS-46387 – Fixed the {contentType} placeholder that remained in the content type deletion warning message in the Page Type Settings view. It now shows the name of the content type.
- CMS-46456 – Fixed an issue where background tasks could encounter conflicts, particularly with database contexts, due to running in shared environments with other parallel threads or tasks. This fix ensures that all background tasks now execute within an isolated context, preventing such conflicts and improving overall system stability and data integrity.
- CMS-46562 – Fixed degraded performance and increased resource usage that occurred when referenced content was repeatedly loaded and re-indexed during delta synchronization due to a missing de-duplication check.
-
CMS-46880 – Fixed the issue where validation for
DisplaySettingsfailed for checkbox settings that lacked associated choices. - CMS-46919 – Fixed the validation error The identifier for Composition nodes must be formatted as a GUID (UUID) that occurred when publishing pages with node IDs in the API format. The system now supports node IDs in both dashed and undashed UUID formats.
-
CMS-46881 – Fixed an issue where removing a choice from a
DisplaySettingin aDisplayTemplatecaused content previously saved with that setting to block publishing with an unclear validation error. The system now provides a validation warning instead of blocking publication. - CMS-47171 – Fixed an issue where a newly created inline block, nested within another inline block in a Content Area, could not be opened for editing immediately after its creation.
- CMS-47349 – Fixed an issue where the edit dialog box for an inline block did not open, resulting in a console error, when attempting to edit an inline block nested within a Content Area property of a block used on a page in Edit view.
- CMS-48710 – Fixed an issue where the edit view re-rendered and updated content value during autosave, even when the value from the backend was not different. This caused problems with focus, mouse cursor, and expand-collapse list properties. The system only re-renders when the value is different.
- CMS-48967 – Fixed an issue where the edit dialog for a newly added block in a content area did not open for new blocks that you added to a page with existing blocks in its content area. Now, you can open the edit dialog and successfully edit any block on the page.
-
CMS-49004 – Fixed an issue where the
XhtmlStringfield refreshed, and the cursor jumped to the top or disappeared when adding a table. Now, the cursor remains in the same position, and the table is created in the correct location.
January 28
GEO Analytics
- 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.
- Added the Generative Engine Optimization (GEO) Analytics dashboard in Optimizely Reporting to view AI platform traffic and optimize your site’s performance. Using the data from GEO Analytics, you can track AI traffic trends, identify frequent AI agents, and discover popular webpages among AI platforms. This lets you refine your content for AI optimization and leverage high-performing pages to improve overall engagement. See GEO Analytics for CMS (PaaS) – Support Help Center.
January 27
Opal tools
- Added the
cms_create_content_itemtool, which lets you create a new empty content instance in CMS based on an existing content type. This tool supports all base types, including pages, blocks, components, and media, and lets you include a collection of properties. You can also specify the language branch and an optional container for the new content item. This tool creates content items as drafts; you must manually publish them in the user interface. See System tools for Content Management System (CMS). - Added the
cms_update_content_itemtool, which lets you update the values for all properties on a content item identified by its content key and version. This tool accepts parameters forcontent key,version, andlanguage. It supports updating the outline for an Experience. The tool handles drafts by creating a new draft if the current version is published or updating an existing draft. This tool uses the Preview3 API. See System tools for Content Management System (CMS). - Added the
cms_publish_content_itemtool, which lets you programmatically publish specific content instances within Optimizely Content Management System (SaaS). This tool supports all base content types, including pages, blocks, components, and media, and lets you specify the language branch and an optional container for the content item. See System tools for Content Management System (CMS). - Added the
cms_delete_content_itemOpal tool that lets you delete (to recoverable trash) an instance of a specific content items. This tool accepts the content item's ID and an optional language branch, supporting all base types such as pages, blocks, components, and media. This streamlines the process of deleting an instance of a specific content type. See System tools for Content Management System (CMS). - Added the
cms_get_content_datatool, which retrieves CMS content data. This tool allows you to include aContentVersionwhen a specific version number is provided; otherwise, it retrieves published versions. See System tools for Content Management System (CMS).
Opal agents
Released the following Optimizely Opal agents to the Agent Directory:
- Content Refresh Analysis – Identifies, sorts by last edit date, and helps resolve duplicate and outdated content (in terms of content guidelines as reference) across a website in CMS (SaaS) to improve Search Engine Optimization (SEO) performance, site credibility, compliance, and content maintenance efficiency.
- GEO Schema Optimization – Lets you enhance your CMS (SaaS) content's visibility and (LLM) discoverability by automatically identifying opportunities for structured data markup.
- SEO Metadata Implementation – Evaluates existing SEO properties, identifies optimization opportunities, recommends improvements, and, upon your approval, creates or updates SEO metadata fields in your CMS (SaaS) instance.
Please sign in to leave a comment.