---
id: route-error-durable-offload
title: Durable offload for timeout-heavy routes
status: active
candidateKinds: ["route_errors"]
frameworks: ["*"]
priority: 84
citations:
  [
    "https://vercel.com/docs/workflow",
    "https://workflow-sdk.dev/docs/foundations/starting-workflows",
    "https://workflow-sdk.dev/docs/foundations/workflows-and-steps",
    "https://vercel.com/docs/queues",
    "https://vercel.com/docs/functions/limitations",
  ]
maxBriefChars: 850
---

## Investigation Brief

Timeout-heavy routes often need a job boundary, not a higher limit. Workflow fits durable multi-step work that can continue after the response; return a run ID instead of waiting on `returnValue`.

## Evidence To Check

Use `errorStatusPattern`, `errorCodes`, and source flow. Look for fan-out, polling, batch work, AI jobs, uploads, sleeps, approval, multi-step side effects. If Workflow is already used, check whether the route waits or streams progress.

## Do Not Recommend When

Do not offload work that must finish before responding. Do not claim savings from offload alone: Workflow Steps/Storage bill separately, and invoked functions still use compute billing.

## Verification

Name the timeout/error class, long-running operation, post-enqueue response contract, and queue or workflow boundary that preserves semantics.
