Shipping a reliable long-running process to production usually means tearing your codebase apart to accommodate queues, workers, status tables, and retry logic.
Dedicated orchestration services add yet another complex layer of background processes that you must maintain, monitor, and pay for on top of your core application compute.
Instead of managing a separate orchestration codebase, Vercel Workflows is now generally available to make durable execution a direct extension of your application.
The core concept is simple: your code is the orchestrator.
You write long-running functions using normal control flow, isolating units of work with "use step" and wrapping the execution in "use workflow". The underlying infrastructure automatically handles queues, retries, step isolation, and durable state.
export async function createSite(input: { userId: string }) {
"use workflow"
const profile = await fetchUserProfile(input.userId)
const plan = await generateSitePlan(profile)
return buildSite(plan)
}
How is your team currently handling durable execution for complex background jobs?
Are you managing dedicated orchestrators, or have you rolled your own queue-based systems to handle the load?