by tilt on 10/23/25, 5:03 PM with 73 comments
by Etheryte on 10/23/25, 5:59 PM
by AgentME on 10/23/25, 8:14 PM
by halflife on 10/23/25, 6:43 PM
At least in any other framework library I can just command click and see why things are not working, place breakpoints and even modify code.
by moritzwarhier on 10/24/25, 4:52 PM
It's probably a common async functional programming term that I don't know.
But when "algebraic effects" were all the rage, the people evangelizing them at least cared to explain first in their blog posts.
This one instead straight jumps via AI agents (what does this have to do with TypeScript syntax extensions?) to "installation".
No thanks.
Edit:
I've read the examples after commenting and it's understandable, still explained in a post-hoc way that I really dislike, especially when it comes to a proprietary syntax extension.
Also the examples for their async "steps" look like they are only one step away from assuming that any async function is some special Next.js thing with assumptions about clients and servers, not "just" async functions with some annotation to allow the "use workflow" to do its magic.
by qianli_cs on 10/24/25, 12:15 AM
I asked their main developer Dillon about the data/durability layer and also the compilation step. I wonder if adding a "DBOS World" will be feasible. That way, you get Postgres-backed durable workflows, queues, messaging, streams, etc all in one package, while the "use workflow" interface remains the same.
Here is the response from Dillon, and I hope it's useful for the discussion here:
> "The primary datastore is dynamodb and is designed to scale to support tens of thousands of v0 size tenants running hundreds of thousands of concurrent workflows and steps."
> "That being said, you don't need to use Vercel as a backend to use the workflow SDK - we have created a interface for anyone to implements called 'World' that you can use any tech stack for https://github.com/vercel/workflow/blob/main/packages/world/..."
> "you will require a compiler step as that's what picks up 'use workflow' and 'use step` and applies source transformations. The node.js run time limitations only apply to the outer wrapper function w/ `use workflow`"
by trevor-e on 10/23/25, 8:49 PM
by tom1337 on 10/23/25, 6:23 PM
I guess in the end it's another abstraction layer for queues or state machines and another way to lock you into Vercel.
by zzixp on 10/23/25, 7:11 PM
I do wish that there was some kind of self-hostable World implementation at launch. If other PAAS providers jump onto this, I could see this sticking around.
by TimTheTinker on 10/23/25, 7:33 PM
export async function welcome(userId: string) {
const user = await retry(() => getUser(userId));
const { subject, body } = await retry(() => generateEmail({
name: user.name, plan: user.plan
}));
const { status } = await retry(() => sendEmail({
to: user.email,
subject,
body,
}), 2);
return { status, subject, body };
}by heldrida on 10/24/25, 12:58 PM
by sevender on 10/24/25, 7:02 AM
Durability is achieved by running the workflows in a wasm runtime.
by pavel_lishin on 10/23/25, 6:57 PM
by bern4444 on 10/24/25, 2:22 AM
How do you create an environment where everything is deterministic? Do they invoke every supported non deterministic function when creating the environment and rewrite those functions to return the values from the environment's creation time? Is there something more complex happening?
by drawfloat on 10/23/25, 6:30 PM
Starting to scatter magic strings throughout a code base feels like a real step back.
by game_the0ry on 10/23/25, 11:00 PM
by 0xb0565e486 on 10/23/25, 6:24 PM
by dangoodmanUT on 10/23/25, 7:26 PM
just build state machines folks
by khalic on 10/23/25, 7:21 PM
by lloydjones on 10/23/25, 8:04 PM
"use blackBoxWrapperForEverything";
by jadbox on 10/24/25, 1:23 AM
by sampli on 10/24/25, 3:30 AM
by LewisJEllis on 10/23/25, 8:03 PM
looking at the docs and examples, I see Workflows and Steps and Retries, but I don't see any Durable yet. none of the examples really make it clear how or where anything gets stored
by oulipo2 on 10/23/25, 9:40 PM
What happens if you saw a bug, or you want to update and change a workflow? Is there a way to discard / upgrade the existing in-memory workflows that are being executed (and correspond to the previous version) so they are now "updated"?
by fullstackchris on 10/24/25, 2:16 AM
by ssijak on 10/23/25, 7:21 PM
by 8note on 10/23/25, 8:10 PM
or is this some extra compilation step to rewrite the code?
by nawgz on 10/23/25, 11:17 PM
- where does the state and telemetry get stored?
- if something is sleeping for 7 days, and you release a new version in that time, what is invoked?
- how do you configure retries? Looks like it retries forever
And I echo the hatred of the magic strings. Terrible dx
by quacky_batak on 10/23/25, 6:20 PM
I don’t like having custom bundler logic for my code.