Why edge rendering is not always the answer
Edge runtimes — Cloudflare Workers, Vercel Edge, Deno Deploy, AWS Lambda@Edge — have transformed a category of workloads that used to be hard. They have also been over-applied to workloads they make worse, with predictable consequences for latency and reliability.
Where the edge wins
The edge is a clear win when:
- The work is genuinely cacheable or genuinely close-to-the-user (geolocation, A/B test assignment, header rewriting).
- The runtime needs are simple and the dependency surface is small.
- You can tolerate a more constrained runtime in exchange for the latency profile.
Static asset rewriting, authentication shims, image resizing, lightweight personalisation — these are the canonical edge wins, and they really do shave hundreds of milliseconds off otherwise unavoidable round trips.
Where the edge loses
The edge is the wrong tool when your workload needs to talk to a database that lives in a single region. Every edge invocation is now a cross-continent network call away from its data, and the cumulative latency erases whatever you saved by terminating TLS closer to the user.
This is the failure mode we see most often: a team moves their entire app to the edge, the app talks to a database in us-east-1, and p95 latency from Europe gets worse, not better.
The decision
For each route, ask two questions:
- Does this route need cross-region data? If yes, render it in the same region as the data. The edge is at best neutral and usually a regression.
- Is this route cacheable? If yes, the edge is great. If no, render at the origin and rely on a CDN for the static assets.
A pragmatic Next.js or Remix app in 2026 uses the edge for the document, the CDN for assets, and a regional origin for any route that touches the database. That is unglamorous and it is what works.
The one place we always reach for the edge
Authentication and routing decisions that need to happen before you know which region to serve from. An edge middleware that reads a cookie, maps the user to a region, and rewrites the request to the correct origin is a small piece of code that pays for itself on every request.
Use the edge for what it is good at. Resist the temptation to use it for everything.