Durable execution is still early. The pain points are real.
What developers report in public when they adopt Temporal, Restate and DBOS, the problems that recur across all three, and how Dex approaches them.
Introduction
Durable execution is becoming a product category, and it is still far from mainstream. Temporal is the established leader, Restate and DBOS followed with lighter runtimes, and long-running AI agents are now bringing the category a wider audience. What happens after a team adopts one of these engines, and why do teams that evaluate one decide against it?
We read what developers say about the three engines in public: Hacker News, Reddit, the Temporal community forum, GitHub issues, and each vendor's documentation and pricing. We build Dex, a durable execution engine, so we have a stake in the answer; the last part of this post is ours.
This is a qualitative review of public discussion, not a survey. Temporal has by far the largest pool of firsthand reports because it has by far the most production users. The methodology is at the end.
The complaints converge on five themes, whatever the engine
Read side by side, the discussion settles on five problems: changing code while runs are in flight, the learning curve, operating the engine, seeing what a run is doing, and cost, with AI agent workloads as a sixth, newer one. The shading below reflects how direct and how repeated the public evidence is, which depends as much on a product's age and user base as on the product itself.
Where does public evidence of each pain point exist, by engine?
- Repeated direct complaints
- Specific complaints or issues
- Recognized trade-off
- Little independent data
Every engine shares one structural constraint: changing the code of a process that is already running
Each engine recovers a process by re-executing its workflow code against a recorded history or journal, and a long-running execution may have started under an earlier version of that code. Change the order or identity of the steps, and the replay no longer matches what was recorded. Temporal users describe it most often; Restate's contributors acknowledged the same limit in the launch thread.
What happens to a run that is in flight when its code changes?
“It's becoming a pain point to apply versioning whenever I need to update a workflow or activity name or signature.”
“I really see no way to make such a handler safely updatable.”
“I find the documentation on how workflow versioning works, very confusing.”
All three vendors document a path through this: Temporal with patching and worker versioning, Restate with versioned deployments and shorter chained invocations, DBOS with patching and versioning as its upgrade guide describes. The constraint is not that in-flight runs break on every deploy. It is that every deploy that touches a workflow carries a compatibility question for as long as a run started on the old code is alive.
The learning curve leads the complaints about the largest engine; SDK fit leads them for the lightest
Before the durable model feels natural, a developer learns where a workflow ends and an activity begins, what determinism forbids inside a workflow function, and how workers and task queues are tuned. For Temporal, with the most surface area and the most users, that curve is the most repeated complaint in our scan.
“The onboarding and learning curve were insanely difficult and complex.”
“Serialization was a big pain point, especially if you write something on top of it that handles generics (in Go, I didn't try it with other languages).”
“My main experiments were pretty frustrating when I tried it originally because everything in the client is global state.”
For DBOS, a library added to an existing application, the sharpest critique is about how the SDK fits that application. The DBOS team had already received the feedback, and the dependency weight was reduced before the follow-up. It sits beside positive onboarding reports, including a developer who moved a job queue from Graphile Worker to DBOS in about half an hour with no infrastructure change. Incremental adoption and SDK friction are different stages of the same integration.
Operating the engine is a commitment of its own, and the lighter runtimes trade it for licensing questions
Self-hosting Temporal means a server cluster, a database, usually a search cluster, capacity planning, upgrades and worker tuning. Teams that already run Kubernetes and managed databases call it manageable; smaller teams call it a disproportionate commitment for the handful of processes that need durability. Restate and DBOS were built partly in response, and both draw praise for it. The complaints that follow are of a different kind.
“Tuning Temporal workers has gotten easier with auto-tune, but still remains difficult. I can't easily explain, for example, why some activities or workflows are slow or slow to start.”
“Looks very interesting, but calling it Open Source is misleading.”
“i love idea and and simplicity behind dbos but it feels not complete without having conductor as a self-hosted option, compare to temporal or hatchet that we use right now.”
The Restate objection came from an evaluator whose customers configure their own workflow steps, and who read the licence's notion of an application platform as a risk to that model; the repository still carries the Business Source License with an additional use grant. DBOS has since shipped a self-hosted Conductor under a proprietary licence. The accurate version of that complaint in October 2026 is not that the control plane cannot be self-hosted, but that the open-source library and the component that provides central visibility and recovery are two differently licensed products.
Observability is improving on every engine, and a business-readable view is still something you build
Every engine ships an execution UI, and in every case the engineers who use it have something to say about it.
“One consistent pain point is the ugly, unintuitive UI that a lot of people hate.”
“The hosted service UX and frontend can use a lot of work.”
Restate's early evaluators wanted execution-path diagrams rather than handler logs, and its 2026 releases answer much of that, most recently queue and wait-condition visibility in 1.8, released on October 15, 2026. What none of the three provides is a view of a running business process that an operator outside engineering can act on. Teams that need one build an application layer for it.
Cost complaints are specific to Temporal Cloud, and none of them come with a bill
Temporal is the only one of the three with a well-supported public cost complaint, and the only one with a published usage price to argue about.
What does Temporal Cloud publish as its price?
Temporal Cloud pricing page, read October 29, 2026. Worker compute is separate.
“Yes. Handling the flow of millions of dollars. It works fine, but it's kind of expensive.”
“Temporal was a bad fit for us, and we regret it deeply.”
Neither speaker disclosed what they paid. For Restate and DBOS we found no generalized cost complaint. The cost no thread measures is the engineering time a self-hosted deployment absorbs, which is the number most teams are actually trading against.
AI agents are the newest source of friction, and they stress the parts of the model that were already hardest
An agent loop makes many small tool calls, changes its code often, and streams output while it works. Each of those stresses a replay-based engine: tool calls accumulate in the history, code changes raise the versioning question on every deploy, and streaming has to happen outside the history.
“I ran into issues where for coding tasks the churn from tool calls blew out the temporal history limit.”
“The receiver applied the request twice in 30 of 30 trials.”
In the second report the handler had written to an external service before its worker was killed and the result reached Restate's journal, and the receiver could not deduplicate. That is the known edge of at-least-once retries: without an idempotency key or a shared transaction, no durable execution engine makes an external effect exactly-once. Agents call external tools constantly, which makes that boundary the common case.
What each engine's users complain about most
The order combines how often a theme recurs, how specific the reports are, and how much friction they describe. Severity estimates the practical impact on an adopting team, not incident frequency or satisfaction.
Temporal
Largest firsthand sample of the three
- 1. Learning curve and complexityHigh
- 2. Workflow versioning and deploymentHigh
- 3. Operational overheadHigh
- 4. Debugging, observability, worker tuningMedium-high
- 5. Cost and performance at scaleMedium-high
- 6. SDK friction and serializationMedium
- 7. Business-facing workflow UXMedium
- 8. AI-agent integrationEmerging
Restate
Founder thread, evaluators and a few issues
- 1. Replay-compatible code changesHigh
- 2. Licensing for platform buildersMedium-high
- 3. External side-effect duplication windowMedium-high
- 4. Business-level visualization (historic)Medium
- 5. Scheduling and cluster edge casesMedium
- 6. Journal size and long-lived designMedium
DBOS
A few detailed evaluators and prospects
- 1. SDK integration and maturityHigh
- 2. Open-source library vs. commercial control planeMedium-high
- 3. Replay and version compatibilityMedium-high
- 4. Monitoring and console UXMedium
- 5. PostgreSQL dependency and scaling questionsMedium
- 6. External side-effect idempotencyMedium
Why teams adopt durable execution anyway
The strongest statements in the record are not complaints. The same users who describe the learning curve and the tuning describe what the engine has done for them.
“Temporal is probably the only part of our tech stack that has had zero issues in the last several years.”
“Genuinely loved the developer experience with Dbos.”
An engineer running a large, business-critical Temporal deployment wrote that they would adopt it again, complaints included. Across all three engines the complaints are about the cost of the model and the praise is about what it buys: durable retries, processes that survive restarts, a recorded history to debug from, and no distributed state machinery written by hand.
Where Dex stands on each of these
Dex is the durable execution engine we build, designed after years of operating the replay model at scale. Its unit is the Flow, a process written as Steps: a Step runs ordinary code and returns the next Step, and a Flow waits on Timers, Channels and RPCs without holding a thread and keeps its state in Attributes. The engine stores each Step's result as it completes, and that storage model, rather than a history to replay, is where most of the differences come from.
Dex, pain point by pain point
- Changing the code of a running process
- No replay. Each Step's result is recorded as it completes, and a running Flow continues on the new code from its next Step. No version branches, no old deployment kept alive.
- Learning curve and SDK
- A Step is ordinary code with its own retry policy and timeout, and no determinism rules, because nothing re-executes it. SDKs for Python, Go, Java, TypeScript and Rust.
- Operating the engine
- One binary that keeps its state in object storage such as S3, with no database or search cluster. Run it yourself or on Dex Cloud. Source available under the Sustainable Use License.
- Seeing a run
- A process graph generated from the code, with every run drawn on it: the current Step, what it waits for, inputs, results and errors. Business data in Attributes, searchable across runs.
- Cost
- Less infrastructure than a cluster with a database, and a published throughput and latency benchmark against Temporal on the home page. No total-cost comparison across engines exists yet, from us or anyone.
- AI agent workloads
- No history to grow, and Streams carry live output from a running Step. External side effects still need an idempotency key, as on every retry-based engine.
The comparison on our home page sets these differences beside the replay model row by row, and the AI agent example in the Dex repository shows the agent case end to end.
Try Dex
Run a Flow on your laptop in a few minutes, or on Dex Cloud. If you are choosing an engine, we will walk through your process with you.
Methodology
A qualitative review of public discussion, not a representative survey: threads on Hacker News and Reddit, the Temporal community forum and public GitHub issues, with each vendor's documentation, pricing and release notes as of October 29, 2026. A report was included when it gave direct experience, an informed objection from an evaluator, a reproducible issue, or vendor material that clarifies whether an older complaint still applies. Quotes are verbatim and dated by comment. Severity in the ranked lists estimates practical friction for an adopting team, not an incident rate, and fewer public complaints about one product reflect discussion volume, not defect rates. The record cannot say how often each complaint occurs among paying customers or what a comparable workflow costs per year; those need interviews and benchmarks.
Sources
- Has anyone used Temporal.io for production? r/ExperiencedDevs, December 2025.
- Have you used Temporal.io? If so, what were your experiences? r/ExperiencedDevs, August 2024.
- Has anyone successfully used Temporal as the long-running agent runtime? r/LangChain, July to October 2026.
- Temporal production trade-offs, Hacker News, 2026.
- Temporal Python, Hacker News, May 2024.
- High-volume cost debate, Hacker News, 2026.
- Workflow/activity versioning and versioning documentation, Temporal community forum, December 2023 and January 2025.
- Temporal Cloud pricing and workflow definition and versioning docs, read October 29, 2026.
- Restate launch discussion, Hacker News, June 2024; Restate licence.
- External side effect duplication window, docs-restate #410, September 2026.
- Announcing Restate 1.8, October 15, 2026.
- Absurd Workflows, with Armin Ronacher's DBOS evaluation, Hacker News, November 2025.
- Build durable workflows with Postgres, Hacker News, August 2025.
- DBOS Go and PostgreSQL, Hacker News, 2025.
- Does anyone here use dbos.dev or trigger.dev? r/ExperiencedDevs, September 2025 to January 2026.
- DBOS docs: upgrading workflows, self-hosting Conductor, migrating from Temporal, read October 29, 2026.