Version Packages (canary)#3082
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
Author
Bundle Size ReportComparing against baseline from No bundle size changes detected. |
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
July 7, 2026 22:29
2e19863 to
865ae79
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 7, 2026 23:19
865ae79 to
9ffa584
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 7, 2026 23:41
9ffa584 to
d4383c6
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 8, 2026 15:01
d4383c6 to
52ed33e
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 8, 2026 19:47
52ed33e to
0bc942b
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 8, 2026 19:53
0bc942b to
0cb6daa
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 8, 2026 20:25
0cb6daa to
384150c
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 8, 2026 21:23
384150c to
9581854
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 8, 2026 22:41
9581854 to
ee90862
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 10, 2026 14:28
ee90862 to
254efb9
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 10, 2026 14:49
254efb9 to
72a10d2
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 13, 2026 15:23
72a10d2 to
2a0963f
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 13, 2026 15:39
2a0963f to
09a7158
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 13, 2026 19:59
cc2c5d4 to
2d6a5e0
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 14, 2026 00:18
2d6a5e0 to
19d05ca
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 14, 2026 15:47
19d05ca to
bf41031
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 14, 2026 17:27
bf41031 to
c8d3d07
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 14, 2026 17:46
c8d3d07 to
e0aeb93
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 15, 2026 16:35
e0aeb93 to
65d655b
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 15, 2026 21:27
65d655b to
97cc5cc
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 16, 2026 01:49
97cc5cc to
ce4419c
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 16, 2026 01:50
ce4419c to
7f2a2df
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 16, 2026 15:38
7f2a2df to
17782ec
Compare
github-actions
Bot
force-pushed
the
changeset-release/canary
branch
from
July 16, 2026 18:18
17782ec to
6817cee
Compare
jorgemoya
approved these changes
Jul 16, 2026
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.1.0
Minor Changes
#3111
9565d76Thanks @jorgemoya! -catalystnow reads the API host fromCATALYST_API_HOST(renamed fromBIGCOMMERCE_API_HOST) and resolves it with the same precedence as other credentials:--api-hostflag >CATALYST_API_HOST>.bigcommerce/project.jsonapiHost> defaultapi.bigcommerce.com. Breaking: theBIGCOMMERCE_API_HOSTenvironment variable is no longer read — setCATALYST_API_HOSTinstead.#3110
5ca4c61Thanks @jorgemoya! - Add thecatalyst debugcommand, which prints a diagnostic report (CLI version, runtime, the project's package manager, project/config state, telemetry correlation ID, and which key files exist) to include when filing a bug report. Credentials and environment variables are resolved across the same chain a build uses (process.env>.env.local>.env>.bigcommerce/project.json) and reported by name and source only — secret values are never printed. Use--jsonfor machine-readable output.#3084
aadaf27Thanks @jorgemoya! - Add thecatalyst domains claimcommand, which claims ownership of a custom domain that is already in use on another store. When you try to add a domain bound to a different store,catalyst domains addnow prints the ownership-verification TXT record to publish; after publishing it, runcatalyst domains claim <domain>to release the domain from the other store and bind it to your project.#3089
8d9f9a9Thanks @jorgemoya! - Add thecatalyst domains transfercommand, which moves a custom domain from one project to another project in the same store (the same-store counterpart todomains claim). Pass--to-project-uuid <uuid>to target a specific project, or omit it to pick the destination interactively from your store's projects. Whencatalyst domains addfails because the domain is already bound to another project in the store, it now points you at the exactdomains transfercommand to move it instead of surfacing the raw API error.#3098
05f600aThanks @jorgemoya! - Env-file loading is now scoped tocatalyst buildandcatalyst deploy— the only commands that need storefront environment variables (for the build). Previously.env.localwas auto-loaded globally from the current working directory (but.envwas not), which was surprising, inconsistent, and affected commands that don't use those variables. Nowbuildanddeployauto-load.env.localand.envfrom the current directory (with.env.localtaking precedence, and neither overriding your real environment), and you can point at a specific file with--env-path <path>. No other command reads env files.Migration: if you relied on env vars being auto-loaded for a command other than
build/deploy, set them in your shell environment or pass the relevant flags instead. For a build with an env file outside the project directory, usecatalyst deploy --env-path ../.env.local.Patch Changes
#3105
552cfb5Thanks @jorgemoya! - Add a--wrangler-version <version>flag tocatalyst buildandcatalyst deployso developers can build against a Wrangler version or dist-tag other than the pinned default. When omitted, the build uses the pinned default as before (and the flag is ignored bydeploy --prebuilt, which skips the build). The value is validated to look like a version or dist-tag before it's interpolated into thewrangler@<version>spec.#3102
fea7b30Thanks @jorgemoya! - Add the@bigcommerce/catalystCLI to a newly created project'sdevDependenciesinstead ofdependencies. The CLI is a build-time tool (it only backs thebuild/start/deploynpm scripts) and is never imported at runtime, so it doesn't belong in runtime dependencies.#3095
27373e8Thanks @jorgemoya! - Validate channel names before creating a channel.catalyst createandcatalyst channel createnow reject names containing unsupported characters (such as an apostrophe in "Bob's Store") with a clear message that names the offending input and lists the allowed characters — letters, numbers, spaces, hyphens, and underscores — instead of surfacing an opaque API error. The interactive prompt validates as you type, and an invalid--nameflag fails fast.#3099
b4e5952Thanks @jorgemoya! - Unify the device-code login UX acrossauth login,create, and the channel commands. The CLI now waits for you to press Enter before opening the browser and best-effort copies the one-time code to your clipboard so you can paste it directly (the code is still printed as a fallback). Non-interactive/CI runs skip the prompt and open directly.#3097
e3e5ab2Thanks @jorgemoya! - Failcatalyst build/catalyst deployfast with a clear, actionable error when required environment variables (BIGCOMMERCE_STORE_HASH,BIGCOMMERCE_STOREFRONT_TOKEN,BIGCOMMERCE_CHANNEL_ID,AUTH_SECRET) aren't loaded, instead of surfacing a raw OpenNext/Next.js build stack trace. The check also runs on the plainnext buildfallthrough (non-Commerce-Hosting projects), not just the Commerce Hosting pipeline. The message names the missing variables and explains that the build auto-loads.env.localand.envfrom the current directory (or pass--env-path <path>to load a file from elsewhere).#3107
0d42b12Thanks @jorgemoya! - Fix the dependency install step hanging indefinitely duringcatalyst project linkand thecatalyst deployfirst-run setup. nypm runs the install through tinyexec, which in silent mode drains the child's stdout to completion before it reads stderr; pnpm floods stderr with Node warnings (on Node 26, thousands ofFile descriptor N opened in unmanaged modelines), filling the stderr pipe buffer while tinyexec is still on stdout, so pnpm blocks writing and the install deadlocks. The install now runs the child withNODE_NO_WARNINGS(and pinsCOREPACK_ENABLE_DOWNLOAD_PROMPToff) so stderr never fills. Thelink/deploysetup paths also now detect the project's actual package manager from its lockfile instead of always forcing pnpm.#3096
c1d0f3dThanks @jorgemoya! -project createnow shows the actionable "Infrastructure Projects API not enabled — contact support to join the beta" guidance when the API responds404, matching the existing403handling, instead of a crypticFailed to create project: Not Found.#3094
bf58b13Thanks @jorgemoya! - Give the CLI readable, actionable errors when a BigCommerce API returns a 4xx or 5xx. A shared HTTP-error helper now turns a failed response into a clear message: it prefers the API's own reason (detail/title/field errors) and, when the body is empty or unparseable, falls back to curated copy for the status class. Client (4xx) errors are treated as user-actionable and print without the "share this Correlation ID with BigCommerce support" framing, while server (5xx) errors keep it. This replaces the raw... failed: <status> <statusText>throws across thechannel,project,deploy,logs, andauthAPI paths.#3088
ce03afbThanks @jorgemoya! - Stop framing clear, user-actionable CLI errors as bugs to report. Validation errors, not-found and not-enabled responses, conflicts, and bad command input now print just the message and exit, instead of appending a Correlation ID and a "share this with BigCommerce support" prompt. That framing is now reserved for genuine server-side (5xx) failures and unexpected errors. Applies across thedomains,project,channel,logs, andauthcommands via a sharedUserActionableErrortype.#3100
07cd41cThanks @jorgemoya! - The CLI now follows.env.exampleas the source of truth when writing.env.local. Generated env files preserve the documented ordering and per-key comment blocks, render documented-but-unsupplied keys as blank/default active keys, and append any CLI-only variables in a clearly separated trailing section. Existing.env.localvalues are reconciled rather than clobbered on re-runs (e.g.channel link), so user-set values are preserved while newly documented keys are added in their canonical position.@bigcommerce/create-catalyst@2.0.1
Patch Changes
552cfb5,9565d76,fea7b30,5ca4c61,27373e8,b4e5952,e3e5ab2,aadaf27,8d9f9a9,0d42b12,c1d0f3d,bf58b13,05f600a,ce03afb,07cd41c]:@bigcommerce/catalyst-core@1.9.0
Minor Changes
#3104
25d6471Thanks @parthshahp! - Respect default product search sort and product category sort settings from the control panel.#3083
2b7f2ccThanks @jorgemoya! - Display product videos (YouTube) on the PDP in a dedicated section below the primary product content, mirroring the Stencil/Cornerstone layout. The Storefront GraphQL API exposes product videos as a{ title, url }pair (Product.videos); Catalyst now fetches them and renders a featured player with a thumbnail strip (clicking a thumbnail swaps the featured video) usinglite-youtube-embed— a lightweight facade that loads the YouTube player only when a shopper clicks. A smallgetYouTubeId()helper extracts the video id from the watch URL the API returns.Migration
Additive — no breaking changes; existing PDP markup, the image gallery, and image pagination are unchanged. Forks adopting this manually need to:
lite-youtube-embeddependency;videos(first: 25) { edges { node { title url } } }on the PDP product query (product/[slug]/page-data.ts);ProductVideossection belowProductDetail(product/[slug]/page.tsx);i.ytimg.com/vi/**innext.config.tsimages.remotePatternsfor poster thumbnails.#3057
a763accThanks @bc-vivekaggarwal! - Wire promotion callouts into PDP and PLP pages using live data from the Storefront GraphQL API (featuredPromotionson theProducttype).Patch Changes
#3076
c6b3b07Thanks @chanceaclark! - Fix Account Settings failing to save for customers when a merchant-defined required custom customer field exists. BigCommerce revalidates required custom fields on everyupdateCustomercall, so Account Settings now renders and resubmits those fields (mirroring the existing Register/Address form-field support) instead of only supporting first name, last name, email, and company.#3106
4975333Thanks @jorgemoya! - Disable caching for the webpage sidebar navigation and route/raw-page resolution when a customer access token is present, so customer-only navigation links and pages aren't leaked to (or hidden from) other visitors via a shared cache.#3109
8256b46Thanks @jordanarldt! - Keep the cart's locale in sync when a shopper switches their storefront locale. Previously, changing the locale only updated the storefront URL and left the cart on its original locale. The locale switcher now calls the newupdateCartLocaleStorefront GraphQL mutation to update the active cart in place before navigating, mirroring the existing currency-switch behavior. This mutation is currently gated behind a store-side feature flag; until it's enabled,updateCartLocalereturnsnulland the switch is a no-op.#3103
d09f8dcThanks @chanceaclark! - Coalesce rapid cart line item quantity and delete clicks into at most one in-flight server action. Quantity buttons now update an optimistic pending intent that flushes a single absolute-quantityupdateintent after a short debounce (replacing the per-clickincrement/decrementintents), and deletes are serialized instead of queueing unboundedly. This prevents the serial server-action queue buildup that could lock up navigation on the cart page, and unifies cart revalidation onrevalidateTag.The cart section is now keyed by cart
entityIdonly (previouslyentityId-version) and renders line items from the revalidation-refreshedcartprop. Remounting on every mutation swallowed clicks landing during the DOM swap and could drop queued actions, leaving the summary skeletons and checkout button stuck in a pending state until hard refresh.Each quantity/delete control is now its own progressive-enhancement form that posts a real absolute quantity or delete request to the server action; JS intercepts the submit to route through the coalescing dispatcher, but the buttons keep working (as full page round-trips) before hydration or if the app bundle fails to load.
Also fixes the checkout button getting stuck spinning forever if its navigation is cancelled (Esc, "Stay" on the leave-page prompt, a flaky connection). The URL-string checkout action previously awaited a promise that never resolved, leaving retry clicks queued behind a dead action; it now settles after a short timeout and on bfcache restore, re-enabling the button as a retry.
#3087
cb7d025Thanks @jairo-bc! - Respect the Blog visibility setting (Control Panel > Storefront > Blogs) in the footer navigation. The Blog link no longer appears in the footer's "Navigate" section when Blog visibility is turned off.#3101
f60aea6Thanks @bc-svc-local! - Update translations.