I didn't set out to test three edge platforms. I just wanted to move my API closer to users because the 200ms response times from my single US-East server were making European customers complain. What started as a simple migration turned into an 8-month odyssey through the wild world of edge computing.
Cloudflare Workers is stupid fast but will make you question your sanity when you hit those CPU timeouts. I learned this the hard way when my image processing function kept timing out during high traffic - usually when I least expected it, like when someone posted our app on HN. Even with the new 5-minute limits they rolled out, it still bites you when you're not careful.
Vercel Edge Functions works beautifully if you're already married to Next.js, but good luck if you want to do anything outside their golden path.
Deno Deploy was the dark horse. I expected it to be half-baked garbage from a company nobody's heard of, but it's actually the most reliable of the three. Go figure.
What \"Performance\" Actually Means When Your Users Are Pissed
Cloudflare Workers is genuinely fast. Like, "did I break my monitoring?" fast. But here's what they don't tell you: the default 30-second CPU timeout will still catch you off guard, even with the new 5-minute max they rolled out in March 2025. My webhook processing function worked fine in testing with 3 webhooks. Production traffic with 50 concurrent webhooks? Timeouts everywhere because I was doing too much JSON parsing. You can bump it up to 5 minutes now, but good luck explaining that to your CFO when the bill comes.
Vercel's cold starts aren't terrible if you're in North America or Europe, but my users in Southeast Asia were getting hammered with 100ms+ response times. Maybe more - the monitoring got pretty ugly. The silver lining? If you're already using Next.js, the developer experience is chef's kiss. Preview deployments work perfectly, and the integration just makes sense. But try to run a non-Next.js project and you'll feel like you're using a hammer to perform surgery.
Deno Deploy has only 6 regions, which should suck, but somehow it doesn't? Maybe because their TypeScript runtime is so clean, or because that 512MB memory limit means you can actually do real work without hitting arbitrary constraints. I migrated a complex ETL function that was constantly timing out on Cloudflare, and it just worked on Deno. No code changes, no optimization tricks.
The Bill That Made My Accountant Cry
Let's talk about money, because this is where things get spicy.
Cloudflare's \"usage-based\" pricing seems reasonable until you realize their bandwidth charges kick in after 10GB. I had a client who was serving PDF files through Workers for "just a few hundred users." Three months later: bandwidth bill was absolutely brutal - I think it was $700-something? Maybe more. I stopped looking. The lesson? Cloudflare is great for APIs, terrible for anything that moves real data. Pro tip: use R2 with custom domains if you're moving files.
Vercel hit me with the classic startup pricing trap. Free tier was amazing, then suddenly I needed team features for $20/month per user. Five developers = $100/month before I even deployed anything. Then the usage charges started hitting. A moderate traffic spike during a Product Hunt launch cost us a few hundred extra - I think it was around $300? Maybe more. All I know is my credit card hurt. The billing dashboard shows you everything, which is nice when you're watching your money disappear in real-time.
Deno Deploy's free tier is honestly embarrassing to the other platforms. 1 million requests per month? I ran my side project for 6 months without paying a dime. Even when I eventually hit the paid tier, it was $20/month flat. No surprise charges, no per-user nonsense. It's almost like they actually want developers to use their platform.