We are excited to announce the release of Catalyst v1.4.0, which brings product reviews, newsletter subscriptions, and more.
For additional details, you can refer to the Catalyst 1.4 changeset.
Catalyst now supports end-to-end product reviews on the storefront, integrated with the Storefront GraphQL API. This release includes:
site.settings.reviews.enabled)site.settings.display.showProductRating)site.settings.display.onlyAcceptPreviousCustomerReviews)
Here is an example Storefront GraphQL query for the settings related to product reviews.
For more information on managing reviews in the Control Panel, refer to the Managing Reviews documentation.
Catalyst now supports an end-to-end newsletter subscription experience, integrated with the BigCommerce Storefront GraphQL API. This includes:
site.settings.newsletter.showNewsletterSignup)on the home page and account settings pagesite.customer.isSubscribedToNewsletter)Here is a sample Storefront GraphQL query that queries the new settings related to newsletter subscriptions.
For more information on newsletter settings in the Control Panel, refer to the Newsletter and Email Marketing Settings documentation.
The Require Consent toggle in the store’s Miscellaneous settings, which overrides the Newsletter Checkbox when enabled and allows customers to opt in to receive abandoned cart emails and other marketing emails, was not implemented in this release.
Additionally, the Show Newsletter Summary field is not supported.
This release adds store-aware inventory messaging across both Product Listing Pages (PLPs) and Product Detail Pages (PDPs). Messages are automatically driven by BigCommerce inventory and backorder settings, ensuring consistent customer communication without custom logic.
Product cards can now display inventory status messages based on store and product configuration.
An Out of Stock message will be displayed when:
A Backorder message will be displayed when:
Product detail pages now surface richer backorder context when applicable. When a product supports backorders and store settings allow it, the PDP can display:
We’ve made several updates to how we handle consent management in Catalyst.
@c15t/nextjs to version 1.8.2custom to offline modedecoder.ts, encoder.ts)CookieBanner now supports the privacyPolicyUrl field from BigCommerce API and will be rendered in the banner description if available.The ConsentManagerProvider now uses offline mode instead of custom mode with endpoint handlers. The provider configuration has been simplified:
mode changed from 'custom' to 'offline'endpointHandlers - no longer needed in offline modeenabled prop to control consent manager functionalitystorageConfig for cookie storage configurationBefore:
After:
If you have custom code that directly reads or writes consent cookies, you’ll need to update it:
Before: The previous implementation used custom encoding/decoding. If you were directly accessing consent cookie values, you would have needed to use the custom decoder.
After: The consent cookie now uses c15t’s compact format. The public API for reading cookies remains the same:
The getConsentCookie() function now internally uses parseCompactFormat() to parse the compact format cookie string. If you were directly parsing cookie values, you should now use the getConsentCookie() helper instead.
getConsentCookie now returns a compact version of the consent values:
Instances where getConsentCookie is used have been updated to reflect this new schema. We also removed setConsentCookie from server and client since this is now handled by the c15t library.
c15t scripts now support rendering in either the <head> or <body> based on the location field from the BigCommerce API:
The ScriptsFragment GraphQL query now includes the location field, allowing scripts to be placed in the appropriate DOM location. FOOTER location is still not supported.
The RootLayoutMetadataQuery GraphQL query now includes the privacyPolicyUrl field, which the CookieBanner component now accepts as a prop. Here is an abbreviated version of that query.
This property is then passed to the privacyPolicyUrl prop in the CookieBanner.
The privacy policy link:
target="_blank")privacyPolicyUrl is provided as a non-empty stringAdd translatable privacyPolicy field to Components.ConsentManager.CookieBanner translation namespace for the privacy policy link text.
Catalyst now ships with built-in OpenTelemetry (OTel) instrumentation using @vercel/otel and Next.js native instrumentation. This enables production-grade observability out of the box:
NOTE: Collection of OpenTelemetry data is enabled by default. For testing locally, you can follow the Testing your instrumentation documentation from Vercel. Additionally, when connecting to a production environment, you’ll want to configure an observability provider. Here is a non-exhaustive list of vendors who natively support OpenTelemetry.
Next.js includes tracing for several spans out of the box. Refer to the Default Spans in Next.js documentation for more details. Additionally, if you need to create custom spans, you can find examples in the tracer.ts file.
For an introduction to observability, read the Observability primer doc on the OpenTelemetry website.
Previously, automatic discounts to a specific product (not the entire cart) were not being displayed appropriately. Because of this, it wasn’t clear whether the promotions were being applied correctly. This has now been fixed, by displaying a strikethrough price for individually discounted products.
We have published new tags for the Core and Makeswift versions of Catalyst. Target these tags to pull the latest code:
And as always, you can pull the latest stable release with these tags: