Repository navigation
Version Packages (canary) - #3201
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
Author
Unlighthouse Performance Comparison — VercelComparing PR preview deployment Unlighthouse scores vs production Unlighthouse scores. Summary ScoreAggregate score across all categories as reported by Unlighthouse.
Category Scores
Core Web Vitals
|
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
August 31, 2026 19:10
c46c561 to
e1b8ae5
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
August 31, 2026 19:47
e1b8ae5 to
c4220ed
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
September 2, 2026 15:55
c4220ed to
68a8df4
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
September 3, 2026 17:39
68a8df4 to
a292a34
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
September 3, 2026 20:53
a292a34 to
e5c451a
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
September 9, 2026 02:37
e5c451a to
f7dba70
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
September 10, 2026 18:07
f7dba70 to
b5828fe
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
September 10, 2026 19:55
b5828fe to
88bbbb4
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
September 10, 2026 21:41
88bbbb4 to
80b0722
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
September 10, 2026 22:20
80b0722 to
681f006
Compare
Contributor
Author
Bundle Size ReportComparing against baseline from No bundle size changes detected. |
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
September 11, 2026 01:18
4a24672 to
621054e
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
September 11, 2026 15:39
621054e to
fc28d21
Compare
jorgemoya
enabled auto-merge
September 11, 2026 16:05
jorgemoya
approved these changes
Sep 11, 2026
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.0
Minor Changes
#3203
b68192aThanks @jorgemoya! - Upgrade@opennextjs/cloudflarefrom 1.17.3 to 1.20.6, and the Wrangler version the build runs from 4.90.0 to 4.128.0.A stray
@opennextjs/cloudflareentry is also removed from the repo root, where it should never have been. The adapter stays a peer dependency of the CLI package, which is the correct declaration: the copy that matters has to live in the merchant's own project, both so the build can invoke the adapter's binary from there and because the generatedopen-next.config.tsimports it. Wrangler is not declared anywhere, since the build invokes a pinned version directly. Neither belongs in this repo's dependency graph.catalyst buildandcatalyst deploynow offer to update a project's own@opennextjs/cloudflarepin when it has fallen behind the version the CLI targets, and reinstall so the worker is compiled against it. The check runs on the shared build path, immediately before the adapter is invoked. That pin lives in the project'spackage.json, so it previously stayed at whatever version the project was scaffolded with and adapter fixes were skipped with no indication at all.The upgrade is offered only when it is safe to take. A project whose Next.js version the newer adapter does not support is told to run
catalyst upgradefirst, rather than being handed an unsupported dependency set. Nothing is changed undercatalyst deploy --prebuilt, which skips the build and would upload a bundle the new adapter never compiled, nor in a non-interactive environment such as CI, where rewriting dependencies would break an install against a frozen lockfile — both report the exact command to run instead. A project already on, or ahead of, the target version is left alone silently.The adapter's version range on the CLI is relaxed to
^1.17.3and marked optional, and a stray@opennextjs/cloudflareentry is removed from the repo root. It was previously an exact pin, which meant projects still on the older adapter version could not install the upgraded CLI at all — the projects the upgrade prompt above is meant to reach — and projects hosted somewhere that never installs the adapter reported it as missing.Node 20 is dropped from the supported
enginesrange, which is now^22.0.0 || ^24.0.0. Every Wrangler release the adapter now accepts requires Node 22 or later. In practicecatalyst buildandcatalyst deployalready could not work on Node 20, because the previously pinnedwrangler@4.90.0also requires it; what does regress iscatalyst start.For stores already deployed on Commerce Hosting, the sharded tag cache Durable Object adds two columns to its table the first time it is accessed after the next deploy, backing the stale-while-revalidate
revalidateTagsupport added upstream. The migration is automatic and no configuration change is needed.Fixes picked up in the range include a security fix for encoded paths bypassing middleware matching or selecting partially-decoded cache entries, a fix for
/_next/static/*returning 404 on past deployments when a metadata-only Worker version became the newest one, and R2 cache population over remote dev, which is not subject to the Cloudflare API rate limit of 1,200 requests per 5 minutes that failed builds for large catalogs.#3205
02aa913Thanks @jorgemoya! - Add channel checkout URL support to the CLI:catalyst channels inforeports it,catalyst channels updategains--checkout-urland--remove-checkout-url, andcatalyst deploygains--update-checkout-url.Checkout is hosted by BigCommerce and the redirect target is resolved server-side from channel config, so a storefront moved onto a Native Hosting domain keeps sending shoppers to whatever checkout domain the channel had before — with nothing in the CLI to inspect or change it.
catalyst channels info— or barecatalyst channels, which now defaults to it — prints the channel's storefront, canonical and checkout URLs, and calls out when the channel has no checkout URL of its own (in which case BigCommerce falls back to the default channel's primary URL, which may be an unrelated domain).catalyst channels updategains--checkout-urlalongside--hostname, so both of a channel's URLs can be set in one command; passing a checkout flag on its own changes only the checkout URL and leaves the storefront URL alone.--remove-checkout-urlreverts to the shared checkout domain and then reports where checkout actually landed, since the domain it falls back to belongs to the default channel and can't be known beforehand.catalyst deploy --update-checkout-url, alongside the existing--update-site-url, lets a merchant setting up a custom domain configure both of a channel's URLs in one pass. It prompts for the checkout URL after a successful deploy, defaulting to thecheckout.subdomain of the channel's storefront domain. Unlike the site URL this can't be derived from the deployment, since the checkout domain has to already point at BigCommerce with a certificate provisioned there. Passing both flags resolves the channel once rather than asking twice, and either flow failing leaves the deploy reported as successful, since the bundle is already live by that point.All three surfaces warn when a channel's checkout domain doesn't share a main domain with its storefront. Pointing a channel's site URL at a new domain silently leaves checkout on the old one, and a cross-domain checkout is where shopper sessions and carts stop carrying over in browsers that restrict cross-domain cookies.
catalyst channels updateandcatalyst deploy --update-site-urlcheck for this right after they move the site URL, andcatalyst channels inforeports it too. The advice adapts to the storefront domain: on a custom domain it suggests thecheckout.<domain>subdomain to point at BigCommerce, and on an auto-generated deployment hostname it explains that the shared checkout domain is the only option there and that a custom domain is the prerequisite for changing it. Two situations warn, with different copy: a channel that has never had a checkout URL of its own is inheriting the default channel's primary URL, which is where every channel starts; a channel whose own checkout URL no longer matches its storefront has most likely been left behind by a storefront URL change. The consequence is the same either way, so both warn — only the remedy differs. The check is advisory and never fails the command that ran it. Hostnames are compared by registrable domain using the public suffix list, matching what BigCommerce itself enforces:store-x.example.storeandstore-x.c.example.storeshare a domain and are accepted, whileexample.co.ukandother.co.ukdo not.When
catalyst channels infofinds a cross-domain checkout it offers to fix it on the spot rather than only reporting it. The channel is already selected and the site already fetched at that point, so it prompts right there — defaulting to thecheckout.subdomain of the storefront domain — instead of making you re-run the work ascatalyst channels update --checkout-url. The offer is withheld in the two cases where it wouldn't help: when the storefront sits on a BigCommerce-managed hosting zone, where no checkout URL can be issued a certificate and BigCommerce would reject every value, and in non-interactive runs, which print thecatalyst channels updatecommand to run instead so the command stays scriptable.BigCommerce requires the checkout URL to share a main domain with the channel's storefront URL, so sessions carry between the two. That rule is enforced by the API rather than pre-checked locally — determining the registrable domain correctly requires the public suffix list — so the server's own explanation is surfaced verbatim on rejection. Note this also means a custom checkout URL is only possible on a custom storefront domain, and that the checkout domain must be pointed at BigCommerce with a certificate provisioned there, not added with
catalyst domains add.Patch Changes
#3159
49a3432Thanks @jorgemoya! - Fixcatalyst build/catalyst deployfailing on native Windows during the OpenNext step. The generatedopen-next.config.tshardcodednode_modules/.bin/next buildas itsbuildCommand, which OpenNext runs throughexecSync(cmd.exe on Windows) — where the extensionless POSIX shim and forward-slash path fail to resolve. It now invokesnode ./node_modules/next/dist/bin/next build, which works identically across sh and cmd.exe while still skipping the project'sgeneratestep.#3169
ed8fc56Thanks @jorgemoya! - Bind aCATALYST_ROUTES_KVCloudflare KV namespace in the generated Wrangler config, so the routing cache used byproxies/with-routeshas a shared store on BigCommerce Native Hosting instead of degrading to a per-invocation in-memory cache. The generated config points at a local-only placeholder namespace id used bywrangler dev/catalyst startand thewrangler deploy --dry-runbundling step; the real per-project namespace is bound at deploy time.#3213
cdee279Thanks @jorgemoya! - Stop writingCATALYST_ACCESS_TOKENinto.env.localduringcatalyst create. The CLI never read it back — env files are not consulted when resolving credentials — so its only effect was to imply that they are, leading users to addCATALYST_STORE_HASHalongside it and then hit "Missing credentials" fromcatalyst project listandcatalyst deploy..env.localnow carriesBIGCOMMERCE_*build variables only, and CLI configuration lives in.bigcommerce/project.json, which scaffolding already writes. Existing projects are unaffected: the stale entry is harmless and is left in place.#3204
bb35f22Thanks @mfaris9! -catalyst buildandcatalyst deploynow run GraphQL codegen (generate) automatically, so a fresh project no longer needs a manualpnpm buildbefore its first deploy.@bigcommerce/create-catalyst@2.0.5
Patch Changes
49a3432,ed8fc56,cdee279,b68192a,02aa913,bb35f22]:@bigcommerce/catalyst-core@1.11.1
Patch Changes
#3170
ccad51fThanks @jorgemoya! - Use Cloudflare Workers KV for the routing cache on BigCommerce Native Hosting.proxies/with-routescaches redirects and storefront status through the KV abstraction inlib/kv, which previously had no Cloudflare option and silently degraded to an in-process memory cache that isn't shared across edge invocations. When the per-projectCATALYST_ROUTES_KVnamespace is bound to the Worker,createKVAdapternow selects aCloudflareKvAdapter. Vercel Runtime Cache still takes priority, and Upstash/memory remain the fallbacks; the binding is duck-typed so an unrelated env var of the same name falls through cleanly instead of throwing.#3202
715f481Thanks @jorgemoya! - Upgrade Next.js from 16.2.11 to 16.3.4.16.3.3 patches two critical advisories: unauthenticated remote code execution on Windows-hosted servers (GHSA-p293-qw3h-jr36) and unauthenticated remote code execution in the Image Optimization API when AVIF files are used (GHSA-2xp9-vwfh-vxw4). 16.3.4 re-enables AVIF image optimization after that fix.
Also picked up are backported fixes for optimistic-routing bugs that caused repeated prefetch loops, a Nav Inspector request loop on repeat captures, and cache-entry reuse that discards only entries predating a tag revalidation rather than all of them.
#3209
f74c1f9Thanks @mfaris9! - Product detail page date modifiers now respect the date limits set in the control panel. A Date option's earliest date, latest date, and limit mode (earliest only, latest only, or a range) now disable out-of-range days in the PDP date picker, instead of letting shoppers pick any date.