Skip to content
Docs

Vercel Workflows

Vercel Workflows is a fully managed platform for building durable applications and AI agents in JavaScript, TypeScript, and Python.

It builds on the open-source Workflow SDK for JavaScript and TypeScript, and on workflow support in the vercel Python SDK to let your code pause, resume, and maintain state.

With Workflows, Vercel manages the infrastructure so you can focus on writing business logic. Vercel Functions execute your workflow and step code. Vercel Queues enqueue and execute those routes with reliability. Managed persistence stores all state and event logs in an optimized database.

Your workflows are:

  • Resumable: Pause for minutes or months, then resume from the exact point.
  • Durable: Survive deployments and crashes with deterministic replays.
  • Observable: Use built-in logs, metrics, and tracing and view them in your Vercel dashboard.
  • Write async JavaScript, TypeScript, or Python with familiar language primitives. No YAML or state machines.
Workflows diagram.
Workflows diagram.

Use a workflow when your logic needs to pause, resume, or span minutes to months:

app/workflows/ai-content-workflow.ts
export async function aiContentWorkflow(topic: string) {
  'use workflow';
 
  const draft = await generateDraft(topic);
 
  const summary = await summarizeDraft(draft);
 
  return { draft, summary };
}

Install the Workflow SDK package:

Terminal
pnpm i workflow

Follow the Workflow SDK getting started guide to create your first workflow.

  • Workflows and steps: Write durable functions with 'use workflow' and 'use step' directives.
  • Sleep and hooks: Pause for minutes to months, or wait for external events.
  • Observability: Track runs in real time, trace failures, and analyze performance.
  • Streams: Stream data in and out of workflows with managed persistence.
  • Multi-region: Run workflows close to your users across all Vercel Function regions.
  • Skew Protection: Protect your workflows from version skew.
  • Usage-based pricing: Pay only for Events, Data Written, and Data Retained.

Workflows runs in every Vercel Function region. When a run starts, Workflows pins it to a single region and keeps its state, queue dispatch, and streams there for the run's lifetime. This avoids cross-region round trips on the hot path and contains the blast radius of a regional event to the runs pinned there.

Reads, hook resumes, and stream consumers can come from anywhere. The platform routes them to the run's region automatically.

By default, Workflows pins a run to the region of the function that started it. No configuration needed:

  • Deploy your app to a single region and every run lives in that region.
  • Deploy your app to multiple regions and each run is pinned to the region that served the user who triggered it.

To pin a run to a specific region, pass the region option to start():

app/api/start-workflow/route.ts
import { start } from 'workflow/api';
import { myWorkflow } from '@/workflows/my-workflow';
 
const run = await start(myWorkflow, [input], { region: 'sfo1' });

The region option controls where the run's data is stored and where its queue messages are dispatched from. It does not deploy your code to that region. For step execution to happen in the selected region, deploy your app there. To do this, configure Function regions through the regions key in vercel.json or the Function Regions project setting. If you deploy your app to a region other than the requested one, the run's data stays in the requested region while its steps execute in the nearest deployed region.

Multi-region requires workflow version 5.0.0-beta.33 or later. Runs created by the 4.x release line always live in iad1. Workflows locks each run's region at creation. To run in a different region, start a new run. Upgrading the SDK does not migrate runs created before the upgrade.

Every step, input, output, sleep, and error inside a workflow is recorded automatically.

You can track runs in real time, trace failures, and analyze performance without writing extra code.

To inspect your runs, go to your Vercel dashboard , select your project and navigate to Observability, then Workflows.

Last updated June 17, 2026

Was this helpful?

supported.