EasyStarter's main branch is TanStack Start + Cloudflare Workers + D1, with a $0/month entry cost. We've covered that stack in earlier posts — it's the best option today for users in the US, EU, Southeast Asia and Japan/Korea.
But over the past year one question keeps coming back:
"All my users are in mainland China — can I just use it directly?"
No. Nothing in the Cloudflare version — architecture, compliance, payments — is optimized for mainland China users. So we built a fully separate china branch + zpay branch. This post is only about one thing: why a China edition is necessary, and what structural advantages it has over the Cloudflare version.
One-line summary
| Cloudflare edition | China edition | |
|---|---|---|
| Target users | US / EU / Southeast Asia / JP-KR | Mainland China users |
| Core strength | $0/month + edge cold start < 50ms | Compliance + payments + latency built for China |
| Irreplaceable | Global low latency + elastic scale | ICP filing + WeChat/Alipay + in-country data |
Not "which is better." It's "which audience are you serving." Below: 6 advantages of the China edition that the Cloudflare version structurally cannot match.
Advantage 1: Compliance — ICP filing is not optional
This is the one thing the Cloudflare edition absolutely cannot do.
China's "Internet Information Service Management Regulations" require: any website accessible from inside China must have its primary server inside China and hold an ICP filing number.
| Cloudflare edition | China edition | |
|---|---|---|
| Host location | Outside China (nearest: HK / Japan) | Inside China (Beijing / Shanghai / Hangzhou / Shenzhen) |
| Domain filing | Not possible | Possible |
| Integrate WeChat / Alipay / SOE customers | Not allowed (those APIs require ICP) | Allowed |
| Risk | IP can be blocked at any time | Zero blocking risk |
Real consequences:
- No ICP → can't integrate WeChat OAuth or Mini Program entry points
- No ICP → can't sell to enterprises / government (procurement requires it)
- No ICP → can't run ads on Baidu / Tencent / ByteDance platforms
The Cloudflare path is a structural dead end for serving China users — not a technical problem.
Advantage 2: Payments — WeChat & Alipay are how China actually pays
Chinese users do not pay for SaaS with credit cards. Obvious to locals, easily missed by overseas devs.
| Cloudflare edition (Stripe) | China edition (ZPay aggregator) | |
|---|---|---|
| Payment methods | Credit cards (Visa / MC / Amex) | WeChat Pay + Alipay |
| Success rate for China users | < 5% (most have no overseas card) | > 95% |
| Indie developer onboarding | Stripe needs Atlas (US LLC) | ZPay accepts personal WeChat signup |
| Settlement | T+7 USD to a Hong Kong account | T+1 RMB to mainland bank |
| Money repatriation | USD via OFX or friend's account | Zero overhead, lands in ICBC/CMB |
ZPay (and similar aggregators like Hupiapp, Mapay) is currently the only way for a Chinese individual developer to go live and start collecting money the same day.
EasyStarter's zpay branch ships the entire flow:
PaymentProviderabstraction (same interface as the main branch's Stripe)- One-time (lifetime) flow + async notify verification + idempotent DB writes
- WeChat-or-Alipay checkout redirect
Main branch runs Stripe, China branch runs ZPay — 99% of business code is shared, only the payment provider differs.
Advantage 3: Latency — < 20ms in-region, not 80-150ms
China users hitting Cloudflare route through HK / Japan nodes — P50 latency 80-150ms. Not Cloudflare's fault, it's just physics across the border.
The China edition sits in the same Aliyun / Tencent Cloud region as the user:
| User location | Cloudflare (HK node) | China edition (East China ECS) |
|---|---|---|
| Shanghai | 80-120ms | < 10ms |
| Beijing | 120-180ms | < 15ms |
| Guangzhou | 60-100ms | < 20ms |
| Chengdu | 100-150ms | < 30ms |
For interaction-heavy SaaS (collaboration, chat, form filling), 100ms vs 10ms is the difference between "laggy" and "snappy."
Advantage 4: Data residency — in-country vs out-of-country
| Cloudflare edition | China edition | |
|---|---|---|
| DB location | D1 (overseas nodes) | Self-hosted Postgres (in-country ECS) |
| Data ownership | Held by overseas vendor | Fully self-owned, portable |
| Data Security Law / PIPL compliance | Hard (cross-border transfer review) | Native compliance |
| Fits | Non-sensitive consumer data | B2B / govt / education / health / finance |
If you're building B2B SaaS, 99% of Chinese enterprise customers will ask "where is the data stored?" — and "inside China" is the only acceptable answer.
The China edition defaults to PostgreSQL on your own ECS; data location is fully controllable. Upgrading to RDS for PostgreSQL later keeps it in-country.
Advantage 5: Phone OTP — the default login for China users
| Cloudflare edition (Twilio) | China edition (Aliyun SMS) | |
|---|---|---|
| Delivery rate to China numbers | 60-80% (frequent failures) | > 99% |
| Delivery latency | 5-30 seconds | < 3 seconds |
| Per-message cost | $0.07 (~¥0.5) | ¥0.045 (~$0.006) |
| Filing requirement | Can't send from domestic numbers | Must be filed first |
China users don't sign up with email — "enter phone, get code, log in" is the muscle memory from Taobao / WeChat / Alipay. Twilio's international SMS pipe loses many messages to Chinese carriers — UX disaster.
EasyStarter's main branch already wires Better Auth's phoneNumber plugin + Aliyun SMS provider; the china branch reuses it as-is — no need to rewrite the auth layer for China.
Advantage 6: Aliyun ecosystem — OSS / SMS / RDS one-stop
User uploads (images, attachments, video) on R2 / S3 are slow and unreliable from inside China.
The China edition uses Aliyun OSS:
| Cloudflare R2 | Aliyun OSS | |
|---|---|---|
| In-China download speed | 5-15 MB/s | 30-80 MB/s |
| In-China cost | Free egress (CF) | ¥0.5/GB egress |
| Same account as SMS / RDS | No | Yes |
| Bound to ICP filing entity | N/A | Reused directly |
Yes, R2's free egress is Cloudflare's killer feature — but only when users can actually reach R2. From mainland China, R2 frequently fails SSL handshakes and TCP resets; free egress is irrelevant.
What about the Cloudflare edition's advantages?
To be fair, for global / overseas business the Cloudflare edition still beats the China edition cleanly:
| Dimension | Cloudflare advantage |
|---|---|
| Monthly cost | $0 entry vs ¥70+/month for a VM |
| Global latency | 200+ PoP edge nodes; US/EU users < 50ms |
| Cold start | V8 isolate < 50ms; China edition has long-lived Node but slower first boot |
| Elastic scale | Auto-scales to ~1M QPS; China edition needs manual scale-up |
| Deploy speed | wrangler deploy, live in 30s |
| International credit cards | Stripe global; China edition has none |
| ICP filing needed | No |
So the decision rule is clean — Cloudflare wins on "global + overseas users"; China edition wins on "mainland China + compliance + local payments." Neither replaces the other.
Which one should you use?
Decide by your target audience, not by personal stack preference.
Use the Cloudflare edition if
- Users are primarily in US / EU / Southeast Asia / JP-KR
- Building global SaaS, AI tools, Chrome extensions
- Charging in USD / cards / PayPal
- No ICP filing needed
- Want fixed monthly cost as close to $0 as possible
Use the China edition if
- Users are primarily in mainland China
- Building B2B SaaS — need fapiao, government / enterprise contracts
- Must accept WeChat / Alipay
- Want to run ads on Baidu / ByteDance / Tencent
- Handling sensitive data (ID, phone, health)
- Customer contracts mandate in-country data storage
Use both
If you're shipping "one product serving both China and overseas" — SaaS tools, designer communities, content platforms — the right move is to deploy both:
masterbranch on Cloudflare, domainapp.example.com, for overseaschinabranch on Aliyun, domainapp.example.cn, for China- Optionally share the database (Aliyun RDS public endpoint + IP allowlist) or split
- Same business code at 99%; only payment provider and deploy target differ
The two-branch design exists precisely for this — EasyStarter doesn't force you to pick one.
Closing thought
Most Chinese SaaS starter templates are still in "Nuxt 3 + Aliyun + mocked payments" demo territory. Almost none let an indie developer deploy, accept payments, and stay compliant on day one.
EasyStarter's china + zpay branches aren't a compromise version of the Cloudflare edition — they're a separately designed architecture for mainland China's constraints. If your users are in China, you'll need this path eventually. Better to start with one that's already been stress-tested.
For technical comparisons on the main branch, see Cloudflare Workers vs Vercel vs Supabase and Next.js vs TanStack Start.
Keep reading
Cloudflare Workers vs Vercel vs Supabase: Cost & Latency for Global SaaS
An honest comparison of three popular hosting platforms — pricing, free tiers, cold-start latency, China access, database options and lock-in — with concrete monthly bills.
Next.js or TanStack Start? A Picking Guide for Indie SaaS in 2026
An honest side-by-side of Next.js and TanStack Start on SSR mental model, deployment, Cloudflare compatibility, type safety and ecosystem — with a concrete recommendation for indie SaaS.
Full-stack SaaS Templates Compared in 2026: EasyStarter vs ShipFast vs Makerkit vs Supastarter
An honest side-by-side comparison of four popular SaaS starter templates — stack, pricing, monthly cost, mobile coverage and globalization — so indie hackers can decide in 3 minutes.