Skip to content

Commit 122e88f

Browse files
jorgemoyaclaude
andcommitted
docs: add Vercel vs native hosting feature comparison matrix
Add a feature comparison matrix documenting how Catalyst Native Hosting (Commerce Hosting) compares to Vercel across platform, deployment, custom domains, caching, logs, env vars, rollbacks, storefront config, migration, and pricing. Status per row is verified against the Native Hosting Linear issues, the Beta onboarding doc, and the CLI source. Refs LTRAC-1076 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 42dfe9e commit 122e88f

1 file changed

Lines changed: 159 additions & 0 deletions

File tree

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
# Vercel vs. Catalyst Native Hosting — Feature Comparison Matrix
2+
3+
> Tracking issue: [LTRAC-1076](https://linear.app/commerce/issue/LTRAC-1076/vercel-vs-native-hosting-feature-comparison-matrix) · Project: Catalyst Native Hosting (GA milestone)
4+
5+
**Native Hosting** (branded **"Commerce Hosting"**) deploys Catalyst storefronts to
6+
Commerce's **Cloudflare Workers for Platforms** infrastructure through the **Ignition**
7+
deploy service. Builds are produced with **OpenNext**, and the entire lifecycle is driven by
8+
the `catalyst` **CLI** — there is no control-panel deploy flow. The CLI ships as a dependency
9+
of a scaffolded project and is run through the package manager (e.g. `pnpm catalyst deploy`).
10+
11+
**Vercel** is the third-party platform most Catalyst developers use today (Next.js's first-party host).
12+
13+
This matrix reflects the state of Native Hosting as it approaches GA. Row-level references point
14+
at the Linear issues that track each capability, with status as of this writing.
15+
16+
**Legend:** ✅ Supported · 🟡 Partial / in progress · 🔜 Planned / spike · ❌ Not supported · ➖ N/A
17+
18+
---
19+
20+
## 1. Platform & architecture
21+
22+
| Feature | Vercel | Native Hosting |
23+
| --- | --- | --- |
24+
| Runtime | Vercel Edge / Node (Fluid compute) | Cloudflare Workers (Workers for Platforms / Dispatch Namespace) |
25+
| Next.js build adapter | First-party Next.js support | OpenNext (spike to migrate to Cloudflare `vinext`, targeted ~GA — LTRAC-1108) |
26+
| First-party to BigCommerce | ❌ Third-party vendor | ✅ In-house, part of the Commerce ecosystem |
27+
| KV / object storage | Vercel KV, Blob | ✅ Cloudflare KV + R2 provisioned by the pipeline |
28+
| Global edge network || ✅ (Cloudflare) |
29+
| Supported Node versions | Broad | v20 / v22 / v24; pnpm (recommended), npm, or yarn |
30+
31+
## 2. Deployment workflow
32+
33+
| Feature | Vercel | Native Hosting |
34+
| --- | --- | --- |
35+
| Deploy trigger | Git push (auto CI/CD) + CLI | ✅ CLI (`catalyst deploy`) |
36+
| Scaffold new project | `create-next-app` style |`pnpm create @bigcommerce/catalyst@latest --hosting commerce` |
37+
| Link project | `vercel link` |`catalyst project link` / `catalyst channel link` |
38+
| Local dev server | `vercel dev` |`pnpm dev` (Next.js dev — not a `catalyst` subcommand) |
39+
| Local production preview ||`catalyst start` (closer to prod than `pnpm dev`) |
40+
| Build without deploying ||`catalyst build`, or `catalyst deploy --dry-run` / `--prebuilt` |
41+
| Git-integrated preview deployments | ✅ Automatic per-branch/PR URLs | 🔜 Spike for GitHub Actions deploys (LTRAC-969, GA cycle) |
42+
| Production promotion || ✅ (deploy = production) |
43+
| CI/CD deploys || ✅ Set `CATALYST_*` env vars or pass flags; no interactive login needed |
44+
| Deployment-not-found page || 🟡 Not yet built (LTRAC-968) |
45+
| Framework upgrade tooling | Manual |`catalyst upgrade` (3-way merge; `--dry-run` to preview) |
46+
| Auth | Vercel login |`catalyst auth login/whoami/logout` (browser OAuth device-code) |
47+
| Diagnostics for bug reports ||`catalyst debug`; correlation IDs printed on error |
48+
49+
## 3. Custom domains
50+
51+
| Feature | Vercel | Native Hosting |
52+
| --- | --- | --- |
53+
| Auto-generated hostname | `*.vercel.app` |`<project>.catalyst-sandbox.store` (permanent fallback/preview URL) |
54+
| Custom / vanity domains || ✅ Done (LTRAC-399); `catalyst domains add/list/status/remove` |
55+
| Subdomain vs. apex setup || ✅ Subdomain → CNAME to worker URL; apex → A record to store IP |
56+
| DNS verification (CNAME/TXT) || ✅ Modeled on Vercel's TXT-verification flow (LTRAC-854, LTRAC-472) |
57+
| Domain claim / transfer between projects ||`catalyst domains claim` / `transfer` |
58+
| Automatic SSL/TLS || ✅ (single-level); ⚠️ two-level subdomains can't auto-provision Cloudflare SSL |
59+
| Merchant's own Cloudflare (Orange-to-Orange) || 🔜 Enterprise requirement, spike (LTRAC-448, GA cycle) |
60+
61+
> Note: `catalyst domains add --wait` polls for verification but times out after ~5 min; DNS
62+
> propagation can take longer, so re-check with `catalyst domains status`.
63+
64+
## 4. Caching & performance
65+
66+
| Feature | Vercel | Native Hosting |
67+
| --- | --- | --- |
68+
| Route / edge caching | ✅ Vercel Edge Cache | 🟡 Catalyst `with-routes` KV adapter available; auto-config for NH still pending (LTRAC-1019, GA) |
69+
| ISR / on-demand revalidation || 🟡 Via OpenNext (`'use cache'` / `cacheLife`); not tracked as a distinct NH feature |
70+
| Image optimization | ✅ Built-in | ➖ Not in NH scope (images served via BigCommerce CDN) |
71+
| Performance / load-test story | Published benchmarks | 🟡 Being documented with load testing (LTRAC-765, LTRAC-1103) |
72+
73+
## 5. Logs & observability
74+
75+
| Feature | Vercel | Native Hosting |
76+
| --- | --- | --- |
77+
| Real-time log tailing ||`catalyst logs tail` (verified working; `--format request` for HTTP access logs) |
78+
| Historical / persisted log querying ||`catalyst logs query` — up to a **7-day** window; rich filters (level, status, method, URL) |
79+
| Log pagination || 🟡 Blocked by a confirmed Cloudflare endpoint bug (LTRAC-966, GA); `--limit` max 500 today |
80+
| Metrics / usage dashboards | ✅ Analytics + Speed Insights | 🔜 Explored for GA — no dashboard yet (LTRAC-1029) |
81+
| OpenTelemetry || 🔜 Edge-compatible OTel spike (LTRAC-821) |
82+
83+
## 6. Environment variables & secrets
84+
85+
| Feature | Vercel | Native Hosting |
86+
| --- | --- | --- |
87+
| CLI management | `vercel env` |`catalyst env add/remove/list` (values masked on list) |
88+
| Where vars live | Server-managed per environment | 🟡 Client-side only — stored in local `.bigcommerce/project.json`, sent as secrets on every deploy |
89+
| One-off / CI secrets ||`catalyst deploy --secret KEY=VALUE`, or `CATALYST_*` env vars in CI |
90+
| Centralized / backend-persisted secrets || 🔜 Post-GA spike, "nice to have" (LTRAC-975) — today, deploying from another machine/CI needs the vars re-supplied |
91+
| `.env` file loading || 🟡 `.env.local` auto-read (also `--env-path`); behavior being reconsidered (LTRAC-1091) |
92+
93+
## 7. Rollbacks, history & previews
94+
95+
| Feature | Vercel | Native Hosting |
96+
| --- | --- | --- |
97+
| Instant rollback to prior deploy || 🔜 Post-GA, "nice to have" (LTRAC-970) — interim path is git revert + re-deploy |
98+
| Deployment history / activity feed || 🔜 Not built (LTRAC-972, LTRAC-978) |
99+
| Per-branch preview URLs || 🔜 Spike only (LTRAC-969) |
100+
| Deployment versioning || 🟡 Cloudflare Workers versioning under the hood; version-tracking field (LTRAC-466) |
101+
102+
## 8. Storefront-specific (Catalyst / BigCommerce)
103+
104+
| Feature | Vercel | Native Hosting |
105+
| --- | --- | --- |
106+
| Geolocation headers | ✅ Vercel geo headers | ✅ Done — Cloudflare visitor-location transform → canonical `cf-*` headers (LTRAC-478) |
107+
| Channel site-URL assignment | Manual |`catalyst channel update --hostname` / `catalyst deploy --update-site-url` |
108+
| Configurable checkout URL | Manual | 🟡 Still redirects to old Vercel-hosted checkout; config in progress (LTRAC-447, GA — blocked by 2-level subdomain SSL) |
109+
| Multiple storefront channels ||`catalyst channel create` (LTRAC-976) |
110+
111+
## 9. Migration from Vercel
112+
113+
| Consideration | Detail |
114+
| --- | --- |
115+
| Support scope | Native hosting product only; **migration complexity is the developer's responsibility** (per project brief) |
116+
| `instrumentation.ts` + `@vercel/otel` | ⚠️ Custom server hooks may be incompatible with the managed runtime; setup offers to remove `instrumentation.ts` (interactive only — silently skipped in CI, so remove/gate it yourself) |
117+
| Vercel-parity blockers at project start | Geo headers ✅ resolved; checkout URL 🟡 in progress (LTRAC-478 / LTRAC-447) |
118+
119+
## 10. Pricing, limits & support
120+
121+
| Feature | Vercel | Native Hosting |
122+
| --- | --- | --- |
123+
| Billing model | Vercel plans / usage-based, separate vendor + invoice | Bundled with BigCommerce; pricing/packaging TBD at GA (LTRAC-1102) |
124+
| Usage limits | Plan-tiered hard limits | Soft-limit program w/ thresholds + playbook (LTRAC-1101, LTRAC-1156) |
125+
| Support | Vercel support tiers | White-glove (alpha) → docs/community-first (beta) → GA TBD |
126+
| WAF / DDoS | ✅ Vercel Firewall | ✅ Inherited from Cloudflare (not surfaced as a configurable NH feature) |
127+
128+
---
129+
130+
## Summary — where Native Hosting stands vs. Vercel
131+
132+
**At or near parity (shipped):** CLI deploy workflow, custom/vanity domains + DNS verification +
133+
claim/transfer, automatic SSL, real-time log tailing and 7-day historical log querying, geo headers,
134+
channel site-URL assignment, multi-channel creation, framework upgrade tooling, and first-party
135+
BigCommerce integration (something Vercel can't match).
136+
137+
**In progress toward GA:** routing-KV auto-configuration, configurable checkout URL, log-query
138+
pagination, metrics/OTel dashboards, O2O custom domains, deployment-not-found page.
139+
140+
**Deferred to Post-GA ("nice to have"):** instant rollback, centralized/backend-persisted env vars,
141+
deployment history/activity feed, Git-based preview deployments.
142+
143+
**Structural differences (not necessarily gaps):** CLI-only (no control-panel deploy or Git-push
144+
CI/CD trigger), env vars are client-side today, bundled pricing with soft limits vs. Vercel's plan
145+
tiers, and migration-from-Vercel complexity being the developer's responsibility.
146+
147+
**Native Hosting's advantages:** single vendor/invoice with BigCommerce, no third-party relationship,
148+
purpose-built for Catalyst, lower total cost of ownership (the SLG sales pitch), and Cloudflare's edge
149+
with inherited WAF/DDoS protection.
150+
151+
---
152+
153+
_Not represented as tracked Native Hosting features (confirm before treating as committed): image
154+
optimization, ISR, WAF config, web analytics, and cron jobs — these reflect inherited
155+
Cloudflare/OpenNext behavior rather than product features._
156+
157+
_Sources: Catalyst Native Hosting Linear project (verified against individual issues LTRAC-399, 447,
158+
448, 478, 966, 969, 970, 975, 1019, 1029, 1093), the Native Hosting Beta Onboarding doc, the CLI source
159+
in `packages/catalyst/src/cli/commands/`, and the project brief._

0 commit comments

Comments
 (0)