← Tools I Use

Cloudflare vs Vercel for a SaaS in 2026 — which one I actually picked

2026-05-24 · ~8 min read · Conor Dobbs

I run production workloads on both. Currently I have a SaaS on Cloudflare (Workers + D1 + Pages) and a marketing/landing-page stack on Vercel (Next.js 15 App Router). Here's what I actually learned shipping both.

The honest summary

For a new SaaS in 2026, my default pick is Cloudflare Workers + D1 + Pages. The reasons aren't what the marketing pages emphasize.

For a content-heavy site that needs SSR + image optimization + a fast deploy cycle, my default pick is Vercel. Their developer experience for Next.js is unmatched.

Where Cloudflare actually wins

Cost predictability. Workers has a known per-request price. D1 reads/writes have a known per-operation price. R2 has zero egress fees. You can build a SaaS that handles 100k requests a day and reasonably predict the bill within a few dollars. With Vercel, your bill can spike in a single deploy if a function loop misbehaves. I've watched both happen.

Global by default. Workers run at the edge in 300+ locations without configuration. Vercel's edge functions exist but cost more and have stricter runtime limits.

Zero-egress storage. R2 is S3-compatible without the egress bill. For any product that serves user-uploaded files, this is a >10x cost difference vs putting them in S3 behind Vercel.

The integrated stack means less glue. Workers + D1 + KV + R2 + Queues + Durable Objects + Email Routing — all in one dashboard, billed together. Vercel has integrations with external services but you're still managing 5 dashboards.

Where Vercel actually wins

Next.js DX. Vercel built Next.js. The deploy story is one git push and everything just works — App Router, server components, ISR, image optimization, font subsetting, all configured optimally without you knowing. Cloudflare Pages can host Next but the integration is less seamless.

Preview deployments per pull request. Better than Cloudflare's equivalent. The preview URL is shareable, the env is automatically a non-prod copy, and the integration with GitHub PR comments is genuinely useful.

The build toolchain. Build logs are readable. Build failures are debuggable. Cache hits are reported clearly. Cloudflare's build experience has improved a lot but Vercel still leads.

If your stack is React-and-React-only. Vercel's optimizations assume Next.js or Remix. If you write SvelteKit or Astro on Vercel, you're paying full price for tooling you don't use.

The pricing reality

For a SaaS with ~100k requests/day, ~1GB egress, light DB use:

The 3-5x cost difference at this scale is real, and it widens with scale (Vercel's per-execution and bandwidth pricing gets ugly).

What about Cloudflare Workers vs Vercel Functions?

Cloudflare Workers run on V8 isolates. They cold-start in <5ms. Their runtime is limited to web APIs + Workers-specific bindings — no Node-built-in modules unless you opt in via `nodejs_compat`.

Vercel Functions run on AWS Lambda + Node.js 20. They cold-start in 200-1500ms depending on bundle size. Full Node ecosystem available.

If you're writing a thin API: Workers wins on latency + cost. If you're using a Node library that doesn't work on V8 isolates (some ORMs, native modules, anything that touches fs): Vercel.

The decision matrix I'd actually use

Pick Cloudflare if any of these are true:

Pick Vercel if any of these are true:

What I actually do

I use both. The SaaS backend lives on Cloudflare (cost + global + the D1+R2 integration is too good to pass up). The marketing landing pages, blog, and dev portfolio live on Vercel (because Next.js + Vercel is genuinely the smoothest deploy story I've used).

I treat them as complementary, not competitive. The mistake people make is picking one for everything because they read a "X vs Y" article and went all-in.

Links