February 28, 2026 1 min read
Server Actions vs REST: A Decision Framework for Next.js
Decision
Depth: ●●○○○
Server actions for auth'd mutations, route handlers for webhooks/payments/binary/cron. The decision framework I use across projects.
The Rule
Authenticated React component doing mutation/query → server action. External service, unauthenticated user, cron trigger, or binary/streaming response → route handler.
Six Cases for Route Handlers
1. Unauthenticated endpoints (guest forms). 2. Payment processing with idempotency keys. 3. Webhooks needing raw body for HMAC. 4. Binary responses (PDF, CSV). 5. File uploads (multipart). 6. Cron/iCal/health.