Skip to content

LTRAC-2014: feat(cli) - Offer to align the channel's URLs after deploy - #3247

Merged
jorgemoya merged 12 commits into
jorgemoya/ltrac-1962-cli-set-the-channels-checkout-url-to-the-provisionedfrom
jorgemoya/ltrac-2014-cli-after-deploy-offer-to-align-the-channels-site-and
Sep 25, 2026
Merged

jorgemoya merged 12 commits into
jorgemoya/ltrac-1962-cli-set-the-channels-checkout-url-to-the-provisionedfrom
jorgemoya/ltrac-2014-cli-after-deploy-offer-to-align-the-channels-site-and

Conversation

@jorgemoya

@jorgemoya jorgemoya commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

Linear: LTRAC-2014

Stacked on #3243.

What/Why?

A plain catalyst deploy left the channel on its mybigcommerce.com URL and the default channel's checkout, and said nothing. After an interactive deploy it now asks two questions. Each is checked separately on every deploy:

  1. Site URL: point the served channel at the deployment's hostname.
  2. Checkout URL: on the managed zone, move checkout to c.<hostname>, using LTRAC-1962: feat(cli) - Put checkout on the storefront's domain for native hosting #3243's flow.

Worth a look:

  • Both default to No. A "no" is saved per channel in .bigcommerce/project.json (declinedSiteUrlChannels, declinedCheckoutUrlChannels), and that offer isn't made again.
  • The channel and hostname come from the deploy, never a picker. The channel is BIGCOMMERCE_CHANNEL_ID, with deployment secrets first, matching OpenNext's runtime order.
  • channels update makes the same checkout offer after a site URL change, because that change deletes the checkout URL.
  • Nothing runs without a TTY, with CI set, or when either --update-* flag is passed.

Testing

deploy-channel-urls, channels and deploy specs pass, including with CI=true; tsc and eslint are clean. Run end to end on integration: two confirmations, then … is serving checkout.

Migration

None.

🤖 Generated with Claude Code

jorgemoya and others added 3 commits September 24, 2026 15:32
A deploy without --update-site-url or --update-checkout-url left the
channel on its mybigcommerce.com storefront URL and the default channel's
checkout, and said nothing, so the address bar changed domain at payment
unless the merchant knew the flags.

After an interactive deploy, if the channel the build targets doesn't
already point at the project, ask whether to update its site URL, with that
channel and the new hostname pre-selected. If the site then sits on an
auto-generated hostname and checkout is elsewhere, ask whether to move
checkout to c.<hostname>, using the same write-then-wait flow as the flag.
Declining that prints the cross-domain warning instead.

Declining the site URL is saved per channel in project.json so later
deploys stay quiet. Checkout declines aren't saved, since the site URL
prompt that leads to it doesn't come back. Explicit flags, channels
update, and deploys without a TTY behave as before.

Refs LTRAC-2014
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… one

The post-deploy site URL offer opened the channel picker with the deployed
channel pre-selected. The deploy already knows which channel the build
targets, so asking again only invited pointing a different channel at this
storefront. Pass the channel through; only the hostname is prompted for.
That leaves the picker's default-channel option unused, so it goes.

Refs LTRAC-2014
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…annel

The post-deploy offer took BIGCOMMERCE_CHANNEL_ID from the env files first
and fell back to deployment secrets. At runtime it's the other way round:
OpenNext copies the worker's bindings onto process.env first and only fills
unset keys from the env files baked in at build time. So with both set, the
offer could name a different channel from the one the storefront serves.
Check the secrets (project.json env and --secret) first.

Refs LTRAC-2014
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 48d7a58

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes changesets to release 1 package
Name Type
@bigcommerce/catalyst Patch

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercel Bot commented Sep 24, 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 Sep 25, 2026 4:18pm UTC

Request Review

@github-actions

github-actions Bot commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

Bundle Size Report

Comparing against baseline from bd061a2 (2026-09-25).

No bundle size changes detected.

…for it

After agreeing to point the channel at the deployment, the merchant still
got a hostname picker with the new deployment pre-selected. The deploy
already reports the hostname it went live on, so pass it through. The
picker now only shows if the deploy status carried no hostname.

Refs LTRAC-2014
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

Unlighthouse Performance Comparison — Vercel

Comparing PR preview deployment Unlighthouse scores vs production Unlighthouse scores.

Summary Score

Aggregate score across all categories as reported by Unlighthouse.

Prod Desktop Prod Mobile Preview Desktop Preview Mobile
Score 92 94 92 95

Category Scores

Category Prod Desktop Prod Mobile Preview Desktop Preview Mobile
Performance 77 85 77 83
Accessibility 95 98 95 98
Best Practices 100 100 100 100
SEO 100 100 100 100

Core Web Vitals

Metric Prod Desktop Prod Mobile Preview Desktop Preview Mobile
LCP 3.5 s 4.3 s 3.5 s 4.7 s
CLS 0 0.002 0 0
FCP 1.2 s 1.2 s 1.2 s 1.2 s
TBT 0 ms 20 ms 0 ms 0 ms
Max Potential FID 60 ms 70 ms 50 ms 30 ms
Time to Interactive 3.7 s 4.3 s 4.2 s 4.7 s

Full Unlighthouse report →

…fter channels update

The checkout offer only existed as the second step of the site URL offer,
and deploys skip that once the site points at the project. So checkout was
never offered again after one decline, never offered at all when the site
URL was set some other way, and a checkout later dropped by a site URL
change went unnoticed.

Check the two separately on every deploy. The checkout offer moves into a
shared offerManagedCheckoutUrl: on the managed zone, when checkout is on
another domain and wasn't customized there by the merchant, offer the `c.`
hostname. A decline is now saved (declinedCheckoutUrlChannels), since
re-checking every deploy would otherwise ask every time.

channels update makes the same offer after it updates a site URL, because
that update deletes the channel's checkout URL. As an explicit command it
asks despite an earlier decline, and falls back to the cross-domain warning
when there's nothing to offer.

Refs LTRAC-2014
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The site and checkout offers after a deploy defaulted to Yes, so pressing
Enter past an unexpected question rewrote a live channel's URLs. Nothing
asked for them, so default to No. channels update keeps Yes for its
checkout follow-up, since the site URL change there was requested.

Refs LTRAC-2014
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The post-deploy offers and the channels update checkout follow-up only
checked for a TTY. Some CI setups allocate a pseudo-terminal (docker run
-t, script), where a prompt waits for input nobody gives and the job hangs.
Also skip when CI is set, which CI systems define.

Refs LTRAC-2014
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
jorgemoya and others added 2 commits September 25, 2026 11:05
Refs LTRAC-2014
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
LTRAC-2014's post-deploy offers ship in the same PR as the managed-zone
checkout flow, so describe them in one changelog entry.

Refs LTRAC-1962, LTRAC-2014
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@jorgemoya
jorgemoya merged commit 48d7a58 into jorgemoya/ltrac-1962-cli-set-the-channels-checkout-url-to-the-provisioned Sep 25, 2026
@jorgemoya
jorgemoya deleted the jorgemoya/ltrac-2014-cli-after-deploy-offer-to-align-the-channels-site-and branch September 25, 2026 16:17
@jorgemoya

Copy link
Copy Markdown
Contributor Author

Merged into #3243's branch, which now carries all of these commits. Continue review on #3243.

This branch was successfully deployed

1 active deployment
Preview — 48d7a587 Deployed Sep 25, 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.

1 participant