2026 Optimizely Graph release notes
Follow this article to receive email notifications when new packages are available for Optimizely Graph. Product packages are found on the Optimizely NuGet server and include updates to the following components:
- Gateway
Note
Are you looking for release notes before January 2024? See the Optimizely Release Notes on the Optimizely World site.
Are you looking for Graph Documentation? See the Optimizely Graph Documentation.
You can find prior versions of user guides and when functionality was released or deprecated at the following locations:
Most recent releases
Date | Release | Type |
|---|---|---|
September 07, 2026 | Content Graph 4.4.4 | |
August 18, 2026 | Content Graph 4.4.3Content Graph 4.4.3 | Bug fix |
August 11, 2026 | Service 5.13.1 | Bug fix |
August 3, 2026 | Gateway 3.30.0 & 3.31.03.30.0 & 3.31.0 | Enhancement |
July 22, 2026 | Service 5.12.0 | Bug fix |
July 6, 2026 | Enhancement | |
June 29, 2026 | Gateway 3.29.2 | Bug fix |
June 23, 2026 | Content Graph 4.4.2 | Enhancement & Bug fixes |
June 2, 2026 | Gateway 3.29.0 | Bug fixes |
May 25, 2026 | Content Graph 4.4.1 | Bug fixes |
May 21, 2026 | (Beta) Graph Search UI | Enhancement |
April 28, 2026 | Bug fixes | |
April 21, 2026 | Content Graph 4.4.0 | Enhancement & bug fixes |
March 25, 2026 | Gateway 3.25.1 | Bug fixes |
March 18, 2026 | Service 5.7.0 | Enhancement |
February 2, 2026 | Enhancement & Bug fix | |
January 20, 2026 | Content Graph 4.3.1 | Bug fixes |
January 5, 2026 | Content Graph 4.3.0 | Enhancement & Bug fixes |
Optimizely Opal
August 14
Released the following tools in Optimizely Opal to help you manage your Optimizely Graph content in Optimizely Content Management System (SaaS), CMS 12 (PaaS), and CMS 13 (PaaS).
- graph_pinned_result – Manages pinned results and pinned result collections in Optimizely Graph.
- graph_synonyms – Manages synonyms in Optimizely Graph. Synonyms help you find content using alternative terms.
CMS to Graph Integration
September 7
Optimizely.ContentGraph.Cms 4.4.4
Enhancement
- Added a guard that blocks account reset while a smooth rebuild is active, so in-progress rebuilds are not lost. The Smooth Rebuild page disables the Reset to default button, and the server also rejects direct requests. See Smooth rebuild
Bug fix
- CMS-54483 – Fixed the issue where the Status field on the Smooth Rebuild page always showed N/A (undefined)
- CMS-54724 – Fixed the issue where an empty LinkItemCollection reached Optimizely Graph as an object instead of an empty array. The issue affected projects on .NET 9 and later and broke GraphQL queries on the *_json field.
- CMS-54937 – Fixed the issue where CMS search returned no results for users with non-ASCII characters in their username or roles. The issue affected characters such as Å, Ä, and Ö.
August 18
Optimizely.ContentGraph.Cms 4.4.3
Bug fix
- CMS-54804 – Fixed the dotnet restore issue that occurred when a project referenced Optimizely.ContentGraph.Core 4.4.2.
June 23
Optimizely.ContentGraph.Cms 4.4.2
Enhancement
- Improved content save and publish speed in the CMS UI. Saving no longer blocks while content is indexed in Optimizely Graph. This removes the long waits and timeouts editors previously saw when saving or publishing.
- Increased the timeouts that apply when new indices are provisioned during a Smooth Rebuild. Large rebuilds are now less likely to fail or time out.
Bug fixes
- CMS-52542 – Fixed an issue where content blocks moved to the trash were still returned in Expanded ContentArea query results. The trashed block resolved with _id: null while still populating other fields such as Name.
May 25
Optimizely.ContentGraph.Cms 4.4.1
Bug fixes
- CMS-46764 – Fixed the _fulltext highlight query that returned broken HTML or JSON markup instead of clean text extracts for XhtmlString properties.
- CMS-51530 – Fixed the incorrect indexing of custom Content Delivery API properties with decimal type to Optimizely Graph.
- CMS-52335 – Fixed the issue where Html and Text fields returned null when PreventFieldCollision and RichTextStructAsJson were both enabled.
- CMS-52423 – Fixed the issue where CMS Edit mode search returned no results on sites with many enabled locales.
April 21
Optimizely.ContentGraph.Cms 4.4.0
Enhancement
- Improved the resilience of the HttpClient configuration.
Bug fixes
- CMS-46635 – Fixed an issue where the Optimizely Graph full indexing job did not return error details when it failed to pull data about processing progress.
- CMS-47156 – Fixed an issue where LinkItem properties could generate incorrect or unclean language-specific URLs when linking to content across sites in Optimizely Graph.
- CMS-47939 – Fixed an issue where syncing Forms content containing List<ICondition> properties produced critical log errors during content type synchronization, even though indexing completed successfully.
- CMS-48801 – Fixed an issue where URLs stored in LinkItemCollection were not updated in Optimizely Graph when the referenced page was moved in the CMS tree.
- CMS-49458 – Fixed an issue where enabling a new language while Smooth Rebuild was active caused the language to be enabled only in the live slot instead of the rebuild slot.
January 20
Optimizely.ContentGraph.Cms 4.3.1
Bug fixes
- CMS-47482 – Fixed an issue where LinkItem properties returned from Optimizely Graph did not correctly encode special characters in the "Remaining URL" portion of the link.
- CMS-47995 – Fixed the content type synchronization issue that was occurring when content ID 1 was missing.
January 5
Optimizely.ContentGraph.Cms 4.3.0
Enhancement
- Added an in-memory queue system for event indexing to control the number of content items processed in parallel, preventing system overload during large content imports or publishing operations.
Bug fixes
- CMS-47223 – Fixed an issue where a full indexing job failed with a null reference exception when a content type included an integer property named "Id" and PreventFieldCollision was set to false. Additionally, validation has been added to prevent the use of reserved content type names such as SiteDefinition.
- CMS-47386 – Fixed an issue where the number of failed items in the delta indexing job output was incorrectly displayed twice (as 303303 instead of 303).
- CMS-47487 – Fixed an issue where content with a null name failed to sync to the graph.
- CMS-47011 – Fixed an issue where publishing a project would freeze the user interface until indexing was complete. Project publishing is now non-blocking, allowing users to continue working while indexing occurs asynchronously.
Graph Search UI
July 6
(Beta) Added two tools to Search Management portal for monitoring and evaluating Optimizely Graph search.
- Performance dashboard – Monitor query response times and cache hit ratios to find slow queries and keep search fast. See Performance dashboard in Search Management portal.
- Development accounts – Create a self-service development instance to evaluate and test Optimizely Graph in an isolated, non-production environment. See Development accounts in Search Management portal.
May 21
(Beta) Released the Optimizely Graph Search Management Portal, a dedicated UI that lets content editors and marketers configure search behavior directly, without developer involvement for day-to-day tasks. Find the portal in the Optimizely global navigation bar. The portal includes:
- Overview dashboard – Shows total query volume, click-through rate, and problematic queries (those with low or no click-through), so you can spot where search is underperforming. Refreshes on demand and supports date-range filtering.
- Pinned Results – Promotes selected content to the top of search results for chosen queries. Create, edit, and delete rules in the portal, and changes take effect immediately. (Formerly Best Bets in Search & Navigation.)
- Synonyms – Expands query matching by defining term relationships, supporting two-way (equivalent) and one-way (directional) synonyms. Changes take effect within minutes.
Access requires Opti ID and Admin Center permissions for your Graph tenant. Pinned Results and Synonyms also require a one-time developer configuration. Use the in-portal feedback link to share feedback during the beta.
Gateway
August 3
Gateway 3.31.0
Enhancement
- Added support for percent-encoded cg-roles and cg-username header values on requests authenticated with hash-based message authentication code (HMAC). Roles with characters such as å, ä, and ö now resolve correctly, so those users receive their restricted content. See HMAC for information.
- Added MONTH and YEAR units to date facets, so you can bucket content across long time spans. DAY reaches the 1,000-bucket limit at about 2.7 years, while MONTH covers roughly 83 years and YEAR covers 1,000. See Facets for information.
Gateway 3.30.0
Enhancement
- Added an optional count=true parameter to the /api/content/v3/sources endpoint that returns each source's document count. You can now size every source in one request instead of querying each separately. See Get source metadata for information.
June 29
Gateway 3.29.2
Bug fixes
- CG-17551 – Fixed the issue where GraphQL content search queries failed with an internal error when a queried field definition was missing.
June 2
Gateway 3.29.0
Bug fixes
- CG-15587 – Fixed the issue where webhooks were not triggered immediately after a purge-cache request.
- CG-17180 – Fixed the issue where content types from non-default sources were missing after a source deployed to a new slot.
April 28
Gateway 3.27.0
Bug fixes
- CG-15978 – Fixed the issue where passing a full _id value (including language and status suffixes) into the ids argument of a GraphQL query returned no results. The ids argument now resolves full _id values correctly.
- CG-16423 – Fixed the issue where cached responses for Content Marketing Platform (CMP) documents were never invalidated, causing stale data to be served after updates. Cache purge now applies to all indexed documents regardless of publish status.
- CG-16560 – Fixed the schema-sync error returned by Instance Manager when provisioning a new Content Graph instance for Structured Content tenants.
- CG-16865 – Fixed the issue where image references inside experience compositions returned null DAM fields.
March 25
Gateway 3.25.1
Bug fixes
- CG-15204 – Added the cg-include-deleted-only request header, which returns only deleted content from Graph. This lets developers build per-site wastebasket views without filtering deleted items out of mixed result sets.
- CG-13511 – Fixed the issue where the match operator returned an incomplete result set for media content types (ImageFile, VideoFile). Match queries now return all matching items, ranked by exact match, phrase match, full-word match, and partial match.
- CG-13946 – Fixed the issue where registering a new webhook through POST /api/webhooks returned a null id in the response. Newly registered webhooks now return a non-null ID.
- CG-15726 – Fixed the TypeError: This ReadableStream is disturbed exception returned by the _stream endpoint. Streamed bulk requests are no longer consumed before the underlying fetch is issued.
- CG-15931 – Fixed the issue where large GraphQL queries failed with query too complex. The threshold at which Graph switches to a wildcard _source includes has been lowered, so wide selection sets succeed more reliably.
- CG-16013 – Fixed the issue where pinned-result phrase matching was case-sensitive. Pinned phrases now match search terms regardless of case (Test and test are treated as equivalent).
- CG-16150 – Fixed the issue where the cg-include-deleted, cg-include-deleted-only, cg-include-hard-deleted, and cg-include-expired filters were silently ignored. These four filters are now sent as HTTP headers and applied as expected.
- CG-16360 – Fixed the issue where _metadata.content returned an empty string for media files indexed on CMS 13 sites. Extracted text content is now returned for newly indexed PDF, DOCX, and image assets.
February 2
Gateway 3.24.0
Bug fixes
- CG-6569 – Fixed the issue where faceting on ContentLink.Id returned a single empty bucket containing all content. Facets are now generated correctly for ContentLink.Id values.
- CG-15716 – Fixed the issue where pinned items configured without a language returned no results when a specific locale was requested. Locale-agnostic pinned items are now returned for any requested locale, not just ALL.
- CG-15740 – Fixed the 500 error returned by the GraphQL Gateway when a non-nullable field had no value. The gateway now returns a 400 response that identifies which field is missing a value.
- CG-15802 – Fixed the issue where querying folders with _link (type: DEFAULT) returned an empty items array. _link(type: DEFAULT) now resolves linked content the same way _link (type: ITEMS) does.
Service Deployment
August 11
Service Deployment 5.13.1
Bug fix
- CG-18526 – Fixed the issue where pages imported across environments returned 404 for 30 to 60 minutes after the import.
July 22
Service Deployment 5.12.0
Bug fix
- CG-14827 – Fixed the issue where Graph queries that filtered on many locales returned a 500 error.
April 28
Service Deployment 5.9.0
Bug fixes
- CG-13355 – Fixed the issue where deleting content in Optimizely Graph triggered a generic bulk webhook event instead of a dedicated deletion event.
March 18
Service Deployment 5.7.0
Enhancement
- Improved content ingestion performance and reliability by decoupling vector embedding generation from the indexing pipeline.
February 2
Service Deployment 5.6.0
Enhancement
- Added Smooth Rebuild support to rebuild Graph indexes with minimal disruption by keeping the existing index available while preparing a new one. This feature reduces downtime and provides a safer way to apply schema and configuration changes. Learn more about Smooth Rebuild.
Bug fixes
- CG-15806 – Fixed an issue where Smooth Rebuild was returning 0 results on subsequent runs.
Note
Customers should be aware that if they are running Smooth Rebuild, there is an existing bug not caused by this release. We are actively working on a fix for it. In the mean time, the workaround is to simply make a small change to that document and sync it again, the changes will take effect. Learn more about the bug.