We decommissioned our split Supabase and Vercel infrastructure to run 100% on Cloudflare serverless edge. Here is our unvarnished experience with D1 SQLite limits, OpenNext caching primitives, and cryptographic PBKDF2 session auth.
The Multi-Vendor Latency Tax
Modern full-stack web applications often start on Vercel for frontend hosting and Supabase or Neon for Postgres. While convenient during prototyping, this split introduces inevitable latency penalties: every server-rendered page must hop across cloud regions to reach an external database.
During our rebuild of intactic.net, we set a strict objective: zero origin servers, zero third-party database roundtrips, and 100% compute execution on edge points of presence.
Living with Edge SQLite: Concurrency & Schema Discipline
Cloudflare D1 is built on SQLite. Moving from Postgres meant abandoning complex triggers and native UUID types in favor of explicit application conventions: generating UUIDs in TypeScript, storing timestamps as ISO-8601 strings, and serializing nested arrays as JSON text.
Because D1 executes read queries at the edge near the user and commits writes deterministically, our global TTFB dropped below 200ms across Asia-Pacific and European test points.