Workflow SDK (@workflowsdk) header
Workflow SDK (@workflowsdk) profile picture

Build durable, resilient, and observable workflows. Built by @vercel.

San Francisco, CA
Joined October 2025
Workflow DevKit is now @WorkflowSDK
1
4
28
2,136
Sending an alert to four channels sequentially means the last channel waits for the first three. If you send them in parallel without coordination, you lose track of which specific channels failed. Promise.allSettled() provides the best of both worlds.
1
3
1,257
Traditional: a retry queue, a backoff column, and a cron to sweep stuck jobs. Workflow: a for-loop with `sleep()`:
2
8
637
30 Days of Workflow DevKit — Day 4 — Payment Webhooks What if your webhook tracked an order from first charge to final refund — remembering every event — without a database? `createWebhook()` can do that in a simple loop:
2
1
5
555
30 Days of Workflow DevKit — Day 3 — Easy Cancel You tweaked the system prompt and kicked off a test workflow. Three sections in, every paragraph reads like a fever dream. Stop the run, keep what's there, fix the prompt. All thanks to a simple cancel():
1
5
357
30 Days of Workflow DevKit — Day 2 — Email Drip Campaign You need to send 4 emails over 7 days. So you set up a cron, a state table, a "last sent" column, retry logic... Or you write this:
1
4
1
12
1,400
30 Days of Workflow DevKit — Day 1 — Approval Gate You need a human in the loop. So you build: a webhook endpoint, a database row, a polling cron, a timeout cron, a cleanup cron... Or ship a few lines of TypeScript with WDK:
1
3
12
882