Getting Started

Comparison

Choosing a durable workflow engine is mostly a question of where you want the durability boundary to live. Some products give you a managed control plane. TanStack Workflow gives you a headless TypeScript engine and lets you choose the runtime, store, scheduler, and deployment target.

That is the core positioning: durable execution for TypeScript apps without requiring your application logic to move into a workflow platform. Use a managed workflow product when you want that product to own execution. Use TanStack Workflow when you want workflows to remain app-embedded, storage-adapter-driven, and portable across hosts.

This comparison shows how TanStack Workflow fits against the workflow systems teams commonly evaluate. It focuses on product shape and operational trade-offs, not every feature or pricing detail. If you use one of these systems and see something that should be corrected, please suggest a change with notes or source links.

Capability matrix

Legend: ✅ first-class fit, 🟡 possible or partial fit, 🔴 not a primary fit. The TanStack signal column explains whether the row is a differentiator, table stakes, or an area where competitors set the bar we need to meet. This matrix compares product fit, not identical APIs. When public documentation does not clearly support a first-class claim, the cell is marked partial.

CapabilityTanStack signalTanStack WorkflowCloudflare WorkflowsTemporalInngestTrigger.devAWS Step FunctionsVercel Workflow / WDK
Headless library embedded in your appDifferentiator🔴🔴🔴🔴🔴🟡
Bring your own durable storeDifferentiator🔴🟡🔴🟡🔴🟡
No required external serviceDifferentiator🔴🔴🔴🟡🔴🔴
Runs across Cloudflare, Railway, Netlify, Node, AWS, VercelDifferentiator🔴🟡🟡🔴🟡
Plain TypeScript workflow authoringTable stakes🟡
Explicit durable stepsTable stakes
Durable sleep / timersTable stakes
Wait for external eventsTable stakes
Human approval gatesCatch up to Temporal-style workflows🟡🟡🟡🟡🟡
Recurring schedules / cronTable stakes🟡
Schedule pause/resume/backfill controlsCatch up to Temporal, Inngest, Trigger.dev🟡🔴🟡🟡🟡
Durable queues / concurrency controlsCatch up to managed task platforms🟡
Version routing for paused runsCatch up to Temporal and Trigger.dev🟡🟡🟡
Run search, replay, retry, and retention operationsCatch up to mature control planes🟡🟡
Devtools / dashboard includedCatch up to managed platforms, TanStack-style🟡
Managed control plane includedIntentional non-goal🔴🟡

Product shape

Product / libraryForm factorProgramming modelPersistence boundaryPortabilityBest fit
TanStack WorkflowHeadless core plus optional capability packages for stores, timers, schedules, queues, and devtools.createWorkflow + explicit ctx.step, ctx.sleep, ctx.waitForEvent, ctx.approve.A WorkflowStore you own or configure. Store adapters provide event logs, run state, timer indexes, schedule records, leases, search indexes, and retention.High. Same workflow code across Cloudflare, Railway, Netlify, Node, AWS, Vercel, and custom infrastructure.Teams that want TanStack-style primitives, app-embedded durable execution, framework portability, and control over persistence.
Cloudflare WorkflowsCloudflare-managed workflow product.Worker workflow classes, steps, sleeps, events.Cloudflare managed workflow state.Low to medium. Cloudflare-oriented.Cloudflare-native durable workflows.
TemporalDedicated workflow server/control plane plus workers.Deterministic workflow code + Activities, Signals, Queries, Updates.Temporal event history in Temporal service/database.Medium. Portable infrastructure, but you operate or adopt Temporal.Teams that want the deepest mature workflow control plane.
InngestManaged/serverless event workflow platform.Event-triggered functions with durable step.* APIs.Inngest managed history/state.Medium. Framework integrations, but platform-bound.Serverless event workflows with strong managed DX.
Trigger.devManaged/self-hostable background task platform.Tasks, waits, queues, schedules.Trigger managed/self-hosted task run state.Medium. Self-hostable, but task-platform oriented.Background jobs, queues, schedules, replays, and operational task UX.
AWS Step FunctionsManaged state machine service.JSON/YAML or SDK-defined state machines.AWS managed execution history.Low to medium. AWS-native.Enterprise/serverless workflows inside AWS.
Vercel Workflow / WDKManaged Vercel platform plus open SDK/world abstraction."use workflow" / "use step" directives and WDK APIs.Vercel managed persistence for state/event logs on Vercel; swappable worlds in WDK.Medium. WDK has worlds, but Vercel Workflow value is Vercel-managed.Best native Vercel choice when you want Vercel to own the workflow platform.

Adjacent systems

These products are still useful reference points, but they are narrower, newer, or more architectural than the main comparison set.

Product / libraryWhy it mattersWhy it is not in the main matrix
Netlify Async WorkloadsImportant partner deployment-native reference for Netlify and useful for side-by-side demos with TanStack Workflow on Netlify.It is Netlify-specific and less widely evaluated as a standalone workflow platform.
DBOSStrong reference for Postgres-backed durable execution, schedules, and queues.It is more of a database-backed application/runtime architecture than a broad workflow-platform comparison target.
RestateStrong reference for durable service handlers, virtual objects, workflow routing, and deployment versioning.It is adjacent to workflows, but the main mental model is durable services rather than common app-embedded workflow primitives.

How to read this

TanStack Workflow is intentionally smaller than managed workflow platforms. The core engine handles deterministic replay, durable steps, pauses, signals, approvals, and version routing. Capability packages provide production store, timer, schedule, queue, host, and devtools integrations without making the core engine own your deployment target, database, cron system, queue, or dashboard.

That split is the point:

  • If you want a managed platform with an included control plane, Cloudflare Workflows, Temporal, Inngest, Trigger.dev, AWS Step Functions, or Vercel Workflow may be the right fit.
  • If you want a TypeScript workflow engine that can run inside your app, on your chosen host, against your chosen durable store, TanStack Workflow is the headless option.
  • The production surface is assembled from capability packages: durable store adapters, timer drivers, schedule records, queue/concurrency helpers, host adapters, and devtools.

The advantage is not that TanStack Workflow has a bigger control plane. The advantage is that it does not need one to be useful. It gives you durable execution as a composable app primitive, then lets your infrastructure remain your infrastructure.

Vercel Workflow note

Vercel Workflow is an important comparison for serverless TypeScript apps. It has a similar developer promise: write normal async TypeScript, split durable work into steps, sleep without consuming compute, resume from external events, and let the platform handle persistence and replay.

The difference is the product boundary.

QuestionVercel Workflow / WDKTanStack Workflow
What do you adopt?A managed Vercel workflow platform, powered by WDK, Vercel Functions, Vercel Queues, and Vercel-managed persistence.A headless TypeScript engine inside your app, plus whichever store/timer/schedule adapters you choose.
How do you mark durable code?Directive model: "use workflow" and "use step".Explicit API model: createWorkflow, ctx.step, ctx.sleep, ctx.waitForEvent, ctx.approve.
Where does persistence live?On Vercel, state and event logs live in Vercel-managed persistence. WDK also has swappable "worlds" such as Postgres for self-hosting.In a RunStore you own or configure. The event log, run state, timer index, and schedule records are part of the adapter contract.
Who owns timers?Vercel Workflow owns the timer system. Long sleeps likely combine persisted deadlines with bounded queue wakeups.Core records the deadline. A timer driver/store adapter claims due timers and resumes runs.
Who owns operations UI?Vercel dashboard and Workflow observability.TanStack devtools/admin APIs are planned capability packages.
Best fitTeams already deploying on Vercel that want the managed workflow product and do not mind the Vercel runtime boundary.Teams that want durable workflows to stay part of their app architecture and remain portable across Cloudflare, Railway, Netlify, Node, AWS, Vercel, and custom infrastructure.

So the positioning is not "TanStack Workflow works on Vercel and Vercel Workflow doesn't." Vercel owns the Vercel-native experience.

The positioning is:

Use Vercel Workflow when you want Vercel to be the workflow platform. Use TanStack Workflow when you want durable execution as an app-embedded, explicit, storage-adapter-driven TanStack primitive.

Current recommendation

For production-style TanStack Workflow deployments, use a durable store as the system boundary. Postgres is the best first target because it can hold run state, the append-only event log, due-timer indexes, schedule records, leases, run search indexes, and retention policies in one portable substrate.

On serverless hosts like Cloudflare, Netlify, and Vercel, provider cron or scheduled functions should wake bounded timer sweeps. The database decides whether a workflow is actually due to resume.