May 2024 release

  • Updated
Optimizely discovered a bug in the May 2024 release (5.2.2405.2604+sts). We have replaced the original May release with hotfix version 5.2.2405.2620+sts. This version includes the hotfixes.

Release: 5.2.2405.2620+sts

The following is a list of the bug fixes and enhancements in the May 2024 release. Some bug fixes listed below may address existing support articles. A comprehensive list is at the bottom of this page.

The May 2024 release is now available for developers to pull down and work with locally or to request for deployments.

Release highlights

Breaking changes

Binary breaking changes do not necessarily require code changes but rather just a recompilation of the project. This section describes breaking changes to method signatures or to method behaviors in Optimizely Configured Commerce.

Low risk

  • Enabled VSTHRD110 Analyzer – Added a RunAsync method to the non-extensible public interface IScopedTaskRunner.
  • Cleaned up public projects to not reference private projects – The ContentPageFilterService class was moved to a private project. The IContentPageFilterService interface remains in the public surface area. No customers are impacted by this change.
  • Restricted X-Forwarded-Host to domains found in websites table – The non-extensible interface IWebsiteRepository has a new method: IReadOnlyCollection<string> GetExistingDomains().
  • Fixed a performance issue on the Spire CMS page re-order feature – The non-extensible interface IDataProvider has a new method: InsertRange<T>(IEnumerable<T> value).
  • Fixed attributes value text exceeding length limits – Added a function parameter to log warning messages during search indexing. Affected Interfaces are IProductSearchIndexer and ISearchIndexBuilder.
  • Developed Commerce search provider – Added an optional parameter searchProvider to the method IProductSearcIndexer.BuildProductSearchIndex will be used by Commerce Search v3 to know the current context of the search provider and correctly initiate the product indexing.
  • Optimized Spire translation dictionary performance – Switched from an extensible solution to a performance-optimized solution. No customizations were affected by this.
  • Fixed broken customizations to CanAddToCart in Product API V2 when using Override Product v1 setting – Added a method to the non-extensible interface ICatalogPipeline to add a pipeline for CanAddToCart logic so it can be consistently customized in both products v1 and v2.

Partners/Developers: At the bottom of this page, you can view a cumulative list of breaking changes, including Spire breaking changes. The spreadsheet has two tabs: one for cumulative breaking changes and one for Spire breaking changes.

Database changes and updates

  • Added OAuth tables to the carrier table.
  • Added indexes to EmailMessageDeliveryAttempt tables.

Library changes and updates

No significant changes.

Enhancements and bug fixes

Spire enhancements

  • Added a searchable filter for ShipTo for Order Approval.
  • Added a searchable filter for ShipTo customers for My Quotes.
  • Added a searchable filter for ShipTo for Budget Management.
  • Moved logic for 'googletagmanager' to adding it in the initial html from the server which should help with Interaction to Next Paint (INP)

Other enhancements

  • Added AVIF and WebP file formats to be available as selectable formats within Image Library for sites that are using these formats to help with Largest Contentful Paint (LCP)
  • Added OAuth 2.0 authentication to the UPS Rating Service.
  • Added internal-only authentication to /api/v2/ShareEntityGenerateFromWebpage.
  • Restricted X-Forwarded-Host Header to known hosts to improve security.
  • Added DbExecutionStrategy to override ShouldRetryOn to enable entity framework query retries in .NET 4.8.
  • Updated outdated JavaScript Libraries.
  • Updated the CORS Origin setting to support multiple domains.
  • Increased the time limit to update Product.IndexStatus during search rebuild to 1 Hour.
  • Updated GetUrlForLookingUpWebsite to check if the referrer domain matches a website thenuse the host if it does not.
  • Improved security for Client-Side Template Injection (CSTI) in search history and lists in Classic.
  • Updated RetryPolicy to be opt-in with a system setting, Enable Retry On Handlers. When enabled, handler chains are retried if there is a transient error (like a deadlock or connection interruption) during a database query.
  • Split .NET Framework 4.8 and .NET 8 changes to WebIntegrationService GetIntegrationJob to improve stability.

Bug fixes

  • Fixed an issue where the user export failed when you filtered by role.
  • Fixed an issue when you created a new Promotion Result and set the Promotion to apply at the Order Level.
  • Fixed an unhandled error when you unassigned a customer while impersonating a website user.
  • Fixed an error in the Order Submit job's WIS log file that caused the job to become stuck.
  • Fixed an unhandled error when you tried to reorder pages in Spire.
  • Fixed an issue where the PunchOut XML endpoints returned XML without the Doctype.
  • Fixed an issue where customers did not receive Forgot Password emails because the emails were sent from the wrong domain.
  • Fixed an issue where the Allow Billto/ShipTo Address editing setting worked only on the client side.
  • Fixed an issue in Spire where the Main Navigation widget in the browser console opened the parent page when selected instead of showing the submenu.
  • Fixed an issue when customizing the Product API v2's CanAddToCart while using the Override Product v1 setting.
  • Fixed an issue where the value of the custom Boolean attribute displayed incorrectly when you switched Can Edit to No.
  • Fixed an issue in Spire where the Favicon did not render on Safari.
  • Fixed an issue in Spire where Paystand did not properly capture the card number and stored an incorrect number.
  • Fixed an issue where the crosssell GET request produced a response without any crosssell products.
  • Fixed a 404 error when you set AWS as the storage provider and ran the Rebuild Search Index job.
  • Fixed an issue in Spire when a promotion code is entered with the wrong casing and cannot be removed from the cart.
  • Fixed an issue in Spire where the LoadProducts.ts extension stopped working, preventing the products list from rendering any products.
  • Fixed an issue in Spire with Paymetric where payment credit card field labels and field validation messages were not translatable.
  • Fixed an issue in Spire where LogoImagePath did not work on the Website_UserNameChanged email template.
  • Restricted anonymous metadata for admin APIs in Spire.
  • Fixed an issue in Spire where the Vertex Tax Calculator did not recalculate tax after you applied a promotion.
  • Fixed an issue in Spire where LazyImage stripped the query strings from the image source, causing thumbnails for 360 images in the Product Image Carousel to break.
  • Fixed an issue in Spire where LogoImagePath did not work on the Admin_ResetPassword email template.
  • Fixed an issue in Spire where the CheckoutShippingAdditionalEmails widget on the Checkout - Shipping page added additional emails to previous orders.
  • Fixed an issue in Spire where a promotion code gave an error when there was a trailing space after it.
  • Fixed an error in Spire when you tried to upload another file on the Order Upload page after uploading a file with invalid data.
  • Fixed an error in Classic when you used the API postman to create a website user and set IsSubscribed to True.
  • Fixed an error in Spire when you used the RichTextField with expandedToolbarButtons in the ListField editorTemplate.
  • Fixed an issue in Spire where uploading web users did not update the users with new values.
  • Fixed a "Value cannot be null" error in the Application Log in Classic for passwords.
  • Fixed a msSaveBlob error.
  • Fixed an Invalid ShipVia error in Classic from a punchout request.

Related Support Articles

Configured Commerce REST APIs

Cumulative breaking changes spreadsheet