Back to blog
Comparison & Stack Picks
10 min read

Why EasyStarter Has a Dedicated China Edition — Compared to the Cloudflare Version

Why a Cloudflare-based SaaS template isn't enough for mainland China users. The real, structural advantages of EasyStarter's China edition (Aliyun + ZPay) over the Cloudflare main branch — compliance, payments, latency, data residency.

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 editionChina edition
Target usersUS / EU / Southeast Asia / JP-KRMainland China users
Core strength$0/month + edge cold start < 50msCompliance + payments + latency built for China
IrreplaceableGlobal low latency + elastic scaleICP 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 editionChina edition
Host locationOutside China (nearest: HK / Japan)Inside China (Beijing / Shanghai / Hangzhou / Shenzhen)
Domain filingNot possiblePossible
Integrate WeChat / Alipay / SOE customersNot allowed (those APIs require ICP)Allowed
RiskIP can be blocked at any timeZero 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 methodsCredit cards (Visa / MC / Amex)WeChat Pay + Alipay
Success rate for China users< 5% (most have no overseas card)> 95%
Indie developer onboardingStripe needs Atlas (US LLC)ZPay accepts personal WeChat signup
SettlementT+7 USD to a Hong Kong accountT+1 RMB to mainland bank
Money repatriationUSD via OFX or friend's accountZero 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:

  • PaymentProvider abstraction (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 locationCloudflare (HK node)China edition (East China ECS)
Shanghai80-120ms< 10ms
Beijing120-180ms< 15ms
Guangzhou60-100ms< 20ms
Chengdu100-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 editionChina edition
DB locationD1 (overseas nodes)Self-hosted Postgres (in-country ECS)
Data ownershipHeld by overseas vendorFully self-owned, portable
Data Security Law / PIPL complianceHard (cross-border transfer review)Native compliance
FitsNon-sensitive consumer dataB2B / 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 numbers60-80% (frequent failures)> 99%
Delivery latency5-30 seconds< 3 seconds
Per-message cost$0.07 (~¥0.5)¥0.045 (~$0.006)
Filing requirementCan't send from domestic numbersMust 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 R2Aliyun OSS
In-China download speed5-15 MB/s30-80 MB/s
In-China costFree egress (CF)¥0.5/GB egress
Same account as SMS / RDSNoYes
Bound to ICP filing entityN/AReused 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:

DimensionCloudflare advantage
Monthly cost$0 entry vs ¥70+/month for a VM
Global latency200+ PoP edge nodes; US/EU users < 50ms
Cold startV8 isolate < 50ms; China edition has long-lived Node but slower first boot
Elastic scaleAuto-scales to ~1M QPS; China edition needs manual scale-up
Deploy speedwrangler deploy, live in 30s
International credit cardsStripe global; China edition has none
ICP filing neededNo

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:

  • master branch on Cloudflare, domain app.example.com, for overseas
  • china branch on Aliyun, domain app.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.

EasyStarter is a production-ready SaaS starter for web, API, and mobile teams.

© 1970 easystarter.dev. All rights reserved.