Skip to content

Version Packages (canary) - #3255

Open
github-actions[bot] wants to merge 1 commit into
canaryfrom
changeset-release/canary
Open

github-actions[bot] wants to merge 1 commit into
canaryfrom
changeset-release/canary

Conversation

@github-actions

@github-actions github-actions Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to canary, this PR will be updated.

Releases

@bigcommerce/catalyst@1.4.3

Patch Changes

  • #3268 4b2daee Thanks @jorgemoya! - catalyst channels update --checkout-url now checks that the checkout URL is serving a certificate, and warns if it isn't, so the command doesn't finish silently before checkout loads. On a native hosting deployment hostname (c.<project>), where setting the URL is what provisions the certificate, it waits for the certificate to be issued first.

  • #3267 9d528fc Thanks @jorgemoya! - Fix catalyst upgrade failing with unknown option `merge-base' on git versions older than 2.40.

@bigcommerce/catalyst-client@1.0.4

Patch Changes

  • #3263 4db7221 Thanks @jorgemoya! - Retry Storefront GraphQL queries that fail on a dropped connection or a 502, 503, or 504. Previously a single upstream hiccup threw straight to the error page ("There was a server error!"). Queries are now retried up to twice, after 100ms and 300ms, including when the connection drops while the response body is being read (TypeError: terminated). Mutations are never retried, since they aren't idempotent, and 4xx responses, GraphQL errors, and aborted requests fail immediately as before. Each retry logs a console.warn naming the operation, the attempt, and the failure (for example [BigCommerce] Retrying query GetSite after HTTP 502 (attempt 2 of 3)), so recovered failures still show up in server logs.

@bigcommerce/create-catalyst@2.0.8

Patch Changes

  • Updated dependencies [4b2daee, 9d528fc]:
    • @bigcommerce/catalyst@1.4.3

@bigcommerce/catalyst-core@1.12.3

Patch Changes

  • #3254 75aa709 Thanks @jorgemoya! - Fix the cart shipping estimator not updating until a page reload. After "View shipping options", "Add shipping", or a quantity change, the shipping form now reflects the new address, quote, and selected option immediately.

    Migration

    In core/vibes/soul/sections/cart/client.tsx, key the ShippingForm on the server's shipping state so it remounts when that state changes:

    {
      shipping && (
        <ShippingForm
          key={JSON.stringify([
            shipping.address,
            shipping.shippingOptions,
            shipping.shippingOption?.value,
            shipping.showShippingForm,
          ])}
          {...shipping}
        />
      );
    }
  • #3261 24dacae Thanks @jorgemoya! - Speed up routing cache reads on BigCommerce Native Hosting. The Cloudflare KV adapter now caches reads at each Cloudflare location for 5 minutes instead of Workers KV's 60-second default, so most with-routes lookups that miss the in-process cache take a few milliseconds instead of a trip to central KV storage. The trade-off is staleness: in the worst case, a storefront status change (maintenance mode, launch) can take up to about 11 minutes to reach a location instead of about 7. It's usually sooner, since the background refresh's write is normally visible at once in the location that made it. Route changes have the same 4 extra minutes on top of their 30-minute window.

    Migration

    In core/lib/kv/adapters/cloudflare-kv.ts, pass a cacheTtl when reading from the namespace:

    const ROUTES_READ_CACHE_TTL_SECONDS = 60 * 5;
    
    // RoutesKvNamespace
    get(key: string, options: { type: 'json'; cacheTtl?: number }): Promise<unknown>;
    
    // CloudflareKvAdapter.mget
    const value = await this.namespace.get(key, {
      type: 'json',
      cacheTtl: ROUTES_READ_CACHE_TTL_SECONDS,
    });
  • #3272 95f78f9 Thanks @jorgemoya! - Add the product the shopper is viewing to the cart, even if the product page's hidden id field was edited. The add to cart form now sets the product ID from its productId prop right before calling the action, so changing the field in devtools or with a script no longer adds a different product. The hidden input stays so add to cart still works without JavaScript.

    Migration

    In core/vibes/soul/sections/product-detail/product-detail-form.tsx, set the product ID in the onSubmit handler before calling the action:

    onSubmit(event, { formData }) {
      event.preventDefault();
    
      // Use the product from props, not the hidden field, so editing the form can't add a different product.
      formData.set('id', productId);
    
      startTransition(() => {
        formAction(formData);
    
        events.onAddToCart?.(formData);
      });
    },
  • #3271 42fd792 Thanks @jorgemoya! - Send the ProductViewed analytics event once per product per visit. Before, every PDP request with the visit cookies sent one, so refreshes and repeat hits each cost BigCommerce an uncacheable GraphQL mutation. The product ids already reported are kept in a new catalyst.productViews cookie tied to the current visit id, with the same sliding 30-minute lifetime as catalyst.visitId, and the cookie is removed along with the other analytics cookies when measurement consent is declined.

    Migration

    Add core/lib/analytics/bigcommerce/product-views.ts (with addProductView and parseProductViews), and getProductViewsCookie, setProductViewsCookie and deleteProductViewsCookie to core/lib/analytics/bigcommerce/index.ts.

    In core/proxies/with-routes.ts, only record the visit on the first view of the product in the current visit:

    if (!isPrefetch && !isRSC && (await isFirstViewInVisit(node.entityId))) {
      event.waitUntil(recordProductVisit(req, node.entityId));
    }
    
    async function isFirstViewInVisit(productId: number) {
      const visitId = await getVisitIdCookie();
    
      if (!visitId) {
        return false;
      }
    
      const productViews = addProductView(await getProductViewsCookie(), visitId, productId);
    
      if (!productViews) {
        return false;
      }
    
      await setProductViewsCookie(productViews);
    
      return true;
    }

    In core/proxies/with-analytics-cookies.ts, delete the cookie when consent is declined, and refresh it along with the visit cookie:

    if ((await getProductViewsCookie()) != null) {
      await deleteProductViewsCookie();
    }
    
    // In the `hasValidVisit` branch, after `setVisitIdCookie(existingVisitId)`:
    const existingProductViews = await getProductViewsCookie();
    
    if (existingProductViews != null) {
      await setProductViewsCookie(existingProductViews);
    }
  • #3280 446ecdf Thanks @jorgemoya! - Send the Catalyst User-Agent when fetching the GraphQL schema during dev and build, matching the storefront's runtime requests.

  • #3269 0755fff Thanks @jorgemoya! - Fix the product gallery not updating when selecting a variant with a different default image.

    Migration

    In core/vibes/soul/sections/product-detail/index.tsx, key both ProductGallery usages on the first image so the gallery remounts when the variant's default image changes:

    <ProductGallery
      images={imagesData.images}
      key={imagesData.images[0]?.src}
      ...
    />
  • Updated dependencies [4db7221]:

    • @bigcommerce/catalyst-client@1.0.4

@github-actions
github-actions Bot requested a review from a team as a code owner September 30, 2026 14:17
@vercel

vercel Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
catalyst Ready Ready Preview Oct 15, 2026 3:40pm UTC

Request Review

@github-actions

Copy link
Copy Markdown
Contributor Author

Bundle Size Report

Comparing against baseline from 75aa709 (2026-09-30).

No bundle size changes detected.

@github-actions

github-actions Bot commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor Author

Unlighthouse Comparison

✅ Resolved: the latest run found no regressions.

Full Unlighthouse report →

@github-actions
github-actions Bot force-pushed the changeset-release/canary branch from 63931a3 to a6ce2f1 Compare October 2, 2026 15:32
@github-actions
github-actions Bot force-pushed the changeset-release/canary branch from a6ce2f1 to dab869a Compare October 2, 2026 19:03
@github-actions
github-actions Bot force-pushed the changeset-release/canary branch from dab869a to 5dc771c Compare October 2, 2026 19:09
@github-actions
github-actions Bot force-pushed the changeset-release/canary branch from 5dc771c to 9703cb8 Compare October 2, 2026 20:35
@github-actions
github-actions Bot force-pushed the changeset-release/canary branch from 9703cb8 to bb2636f Compare October 6, 2026 15:27
@github-actions
github-actions Bot force-pushed the changeset-release/canary branch from bb2636f to 60df1f1 Compare October 7, 2026 18:00
@github-actions
github-actions Bot force-pushed the changeset-release/canary branch from 60df1f1 to d727110 Compare October 7, 2026 19:59
@github-actions
github-actions Bot force-pushed the changeset-release/canary branch from d727110 to 47d8599 Compare October 13, 2026 12:51
@github-actions
github-actions Bot force-pushed the changeset-release/canary branch from 47d8599 to 5da49b0 Compare October 15, 2026 15:30

This branch was successfully deployed

1 active deployment
Preview — a4e0cb91 Deployed Oct 15, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants