Choosing Edge vs Node Runtime

+15 Mana ✨

Introduction

Not every route should run at the Edge. Understanding when to use each runtime helps you make the right performance and capability tradeoffs.

Key Concepts

Choose Edge when:

  • Low latency is critical
  • Logic is simple (auth checks, redirects)
  • No Node.js-specific APIs needed

Choose Node.js when:

  • Database connections required
  • File system access needed
  • Heavy computation
  • Node.js libraries required

Deep Dive

Edge Route Handler

typescript
// app/api/geo/route.ts
export const runtime = 'edge';

export async function GET(request: Request) {
  // Simple, fast, no DB needed
  const country = request.headers.get('x-vercel-ip-country');
  return Response.json({ country });
}

Node.js Route Handler

typescript
// app/api/users/route.ts
// Default runtime is Node.js

export async function GET() {
  // Needs database connection
  const users = await prisma.user.findMany();
  return Response.json(users);
}

Mixed Approach

typescript
// Proxy for auth check (runs on Node.js by default in Next.js 16)
// Edge runtime for latency-sensitive route handlers
// Node.js for data fetching (route handlers)

Summary

Proxy runs on the Node.js runtime by default in Next.js 16, giving you full Node.js API access. Use Edge runtime for latency-sensitive, simple route handlers. Use Node.js when you need database connections, file access, or Node-specific libraries.

✓ Completed