Skip to content
'; user_status_content.firstChild.appendChild(avatarContainer); } else { // Placeholder for LoggedOutUserMenu let loggedOutContainer = document.createElement('div'); // if LoggedOutUserMenu fallback let userBtn = document.createElement('button'); userBtn.style.width = "33px"; userBtn.style.height = "33px"; userBtn.style.display = "flex"; userBtn.style.alignItems = "center"; userBtn.style.justifyContent = "center"; userBtn.style.color = "var(--ds-gray-900)"; userBtn.style.border = "1px solid var(--ds-gray-300)"; userBtn.style.borderRadius = "100%"; userBtn.style.cursor = "pointer"; userBtn.style.background = "transparent"; userBtn.style.padding = "0"; // user icon ( from geist) let svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); svg.setAttribute('data-testid', 'geist-icon'); svg.setAttribute('height', '16'); svg.setAttribute('stroke-linejoin', 'round'); svg.setAttribute('style', 'color:currentColor'); svg.setAttribute('viewBox', '0 0 16 16'); svg.setAttribute('width', '16'); let path = document.createElementNS('http://www.w3.org/2000/svg', 'path'); path.setAttribute('fill-rule', 'evenodd'); path.setAttribute('clip-rule', 'evenodd'); path.setAttribute('d', 'M7.75 0C5.95507 0 4.5 1.45507 4.5 3.25V3.75C4.5 5.54493 5.95507 7 7.75 7H8.25C10.0449 7 11.5 5.54493 11.5 3.75V3.25C11.5 1.45507 10.0449 0 8.25 0H7.75ZM6 3.25C6 2.2835 6.7835 1.5 7.75 1.5H8.25C9.2165 1.5 10 2.2835 10 3.25V3.75C10 4.7165 9.2165 5.5 8.25 5.5H7.75C6.7835 5.5 6 4.7165 6 3.75V3.25ZM2.5 14.5V13.1709C3.31958 11.5377 4.99308 10.5 6.82945 10.5H9.17055C11.0069 10.5 12.6804 11.5377 13.5 13.1709V14.5H2.5ZM6.82945 9C4.35483 9 2.10604 10.4388 1.06903 12.6857L1 12.8353V13V15.25V16H1.75H14.25H15V15.25V13V12.8353L14.931 12.6857C13.894 10.4388 11.6452 9 9.17055 9H6.82945Z'); path.setAttribute('fill', 'currentColor'); svg.appendChild(path); userBtn.appendChild(svg); loggedOutContainer.appendChild(userBtn); loggedOutContainer.style.display = 'flex'; loggedOutContainer.style.gap = '8px'; loggedOutContainer.style.alignItems = 'center'; user_status_content.firstChild.appendChild(loggedOutContainer); } })();
Workflows

Vercel Workflows

Last updated May 20, 2026

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.
  • Skew Protection: Protect your workflows from version skew.
  • Usage-based pricing: Pay only for Events, Data Written, and Data Retained.

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.


Was this helpful?

supported.