Prefect Bought Dagster. Your DAG Did Not Get the Memo

Prefect 3.8.5 shipped September 3 with jittered retries. Airflow is on 3.3.1 with multi-language tasks. The July acquisition did not merge the mental models.

In July, Prefect bought Dagster Labs. Prefect’s own FAQ says Dagster keeps its name and its open-source license, and customers do not have to do anything. That is the corporate sentence. The engineering sentence is still the one we used in August: Airflow thinks in DAGs, Dagster thinks in assets, Prefect thinks in Python functions with orchestration attached.

Tech Insider’s September pricing and version roundup is the reason to write this again. Apache Airflow 3.3.1 picked up a stateful task store and multi-language tasks. Dagster’s core sat at 1.13.21 with dynamic partition management. Prefect 3.8.5 landed on September 3 with a patch nickname, “A little jitter never hurt anybody,” for jittered scheduling and retry timing, plus UI fixes. 3.8.0 had already made the redesigned UI the default. None of that is a merger.

If you are choosing an orchestrator this month because a VP forwarded the acquisition blog, stop. Read the abstractions. Then read the versions. We already did the 2026 tool landscape. This is the delta.

The versions on the table

Tech Insider’s snapshot, September 2026:

AirflowDagsterPrefect
Latest3.3.11.13.213.8.5
Core ideaDAG / task graphSoftware-defined assetPython flow / task
GraphStatic, declared up frontInferred from asset depsDynamic, at runtime
GitHub stars~46,800~16,100~19,200–22,800
Usage~30M PyPI downloads/monthnot public~10.4M framework usage
Lineagepartial, 3.x assets layerbuilt-inadd-on
LanguagesJava, Go via Task SDK in 3.3Python-firstPython-first

Stars and download counters are vanity until you are arguing with procurement. The row that changes a pager is the graph type. If your pipeline cannot be drawn before it runs, Airflow 2-era muscle memory will fight you even on 3.3.1. If your pipeline is “this table depends on that table,” Dagster’s asset graph is still the native language, acquisition or not. If your pipeline is a Python function that branches because an API said so, Prefect’s @flow is still the least fake.

Prefect 3.7.8, July 9, was about the scheduling engine and the event stream that feeds the UI and automation triggers. 3.8.0 made the new UI default instead of a beta flag. 3.8.5 added jitter. Jitter is not a press release feature. It is how you stop a fleet of retries from thundering the same downstream at second 0. If you run a lot of cron-shaped work, that patch is the one you actually install.

Airflow’s 3.3.1 multi-language Task SDK is the opposite bet: maybe not everything is Python. That is a real split. Prefect’s site still answers “can my coding agent write Prefect workflows?” with yes, because a flow is ordinary Python plus two decorators. Agents write Python. They do not particularly want to write Airflow’s older YAML-adjacent world, even if Airflow 3 has moved.

Dagster 1.13.21’s dynamic partitions are for people whose data actually arrives in late partitions. If you have never typed partitions_def, skip that sentence.

The acquisition does not unify your on-call

Prefect acquired Dagster Labs. It did not acquire your mental model. The FAQ is explicit: nothing changes for users of either product. That is comforting if you are on Dagster Cloud and you feared a forced rewrite. It is annoying if you hoped for one UI, one bill, one way to retry.

Two products under one buyer can stay two products for years. They can also slowly share a cloud account page and nothing else. Do not migrate “because we got acquired.” Migrate because your graph type is wrong for the tool.

If you are on Dagster and your pain is Python-shaped dynamic tasks, Prefect was already the answer in July. The purchase does not make that move cheaper. It might make the sales call weirder.

If you are on Prefect and you wanted first-class asset lineage without add-ons, Dagster still has that row in the table. Buying the company does not paste lineage into @task. Tech Insider still marks Prefect lineage as an add-on.

Airflow is not in the deal. It still has the install base: ~80,000 organizations in that roundup, versus 1,662+ detected Dagster companies and a vague “thousands” for Prefect. Defaults have gravity. Gravity is not the same as fitness.

NVIDIA PAIR is a LAN scheduler for local agents. Do not drop it into this comparison. Different job. If your “orchestration” is a box of laptops running models, PAIR is closer than Airflow. If your orchestration is last night’s warehouse build, stay here.

What to pick in September without a rewrite

Stay on Airflow if you already have DAGs, operators, and people who know the scheduler’s moods. 3.3.1 is an upgrade path, not a reason to leave. Use the Task SDK if you actually have Go or Java tasks. Do not use it as an excuse to avoid Python if Python is what you have.

Stay on Dagster if assets and lineage are how you talk in stand-up. Dynamic partitions in 1.13.x are a reason to upgrade, not a reason to switch to Prefect because of the logo on the acquisition blog.

Stay on Prefect if your flows are already functions. Install 3.8.5 for jitter and the default UI. Read the 3.8.0 notes if someone on the team is still toggling the old interface.

Switch only if the abstraction is wrong. A team writing Airflow DAGs to fake runtime branching should look at Prefect. A team faking assets in Prefect with naming conventions should look at Dagster. A team running one Python script in cron should look at scheduled reports before they buy a cloud orchestrator.

Coding agents change the typing, not the pager. Prefect is right that an agent can emit a @flow. An agent can also emit a broken DAG. Review is still a human job. Durable execution, which Prefect’s FAQ leans on versus Airflow, is still the feature you notice at 2 a.m. when a worker dies. If you do not have crash recovery as a requirement, you do not have an orchestrator requirement. You have cron with extra YAML.

Pricing as a filter, not a score

Tech Insider’s piece is titled as a pricing comparison. Versions are what I trusted enough to put in a table. Cloud SKUs move. Self-host costs hide in the Kubernetes bill. Do your own quote.

A few filters that do not require a salesperson:

  • If you refuse to run a scheduler, Prefect Cloud’s “we host that” pitch is the product. Airflow you will operate, even with a vendor.
  • If legal wants lineage in the core product, Dagster’s built-in row is the product. Everyone else is an integration slide.
  • If finance wants one invoice after the acquisition, ask whether that invoice exists. The FAQ’s “no action required” suggests two invoices for a while.

Do not pick a tool because PyPI shows 30 million downloads. Airflow’s number includes a decade of import airflow in places that are not proud of it.

Jitter, events, and the 2 a.m. file

Prefect’s 3.8.5 notes sound cute until you have a cron that retries on the minute. Jittered scheduling and retry timing spread the thundering herd. If you copied a flow 200 times and they all miss the same API at 00:00:00, you already know why the patch exists. Upgrade before you write a custom sleep.

The 3.7.8 work on the event stream is how automations fire when a state changes, not only when a clock ticks. That is the line between “orchestrator” and “cron with a UI.” If your team still triggers everything from a crontab that calls prefect deployment run, you are leaving the event bus on the floor.

Airflow 3.3.1’s stateful task store is the same class of unglamorous change. Tasks that need to remember something without you bolting on Redis should get cheaper. I have not run that store in production this week. Treat the version number as a changelog to read, not a migration to start on a Friday.

Durable execution, Prefect’s FAQ pitch versus Airflow, is crash recovery as a default. Workers die. If your current Airflow setup already handles that with a pattern you trust, you do not owe Prefect a proof of concept. If your current setup is “rerun the DAG,” you do.

Agents writing flows will emit retries=3 because the docs do. They will not emit jitter unless you put it in the skeleton. Keep a company template. The acquisition blog will not.

Help Net Security’s September 7 OpenAI “automated research intern” story is adjacent only. Research agents running experiments are not your warehouse. If your orchestrator pitch this month is “AI will write the DAGs,” make the agent use the template and keep the pager on a human.

A migration you should not do this month

Do not merge Dagster and Prefect repos because they share a parent. You will spend a quarter translating assets into flows or flows into assets and you will ship nothing.

Do not rewrite Airflow 2 DAGs into Airflow 3 and Prefect in the same quarter. Pick one move.

Do pin versions. 3.8.5 is a patch. 3.8.0 was a UI default change. Those surprise people who auto-follow latest.

If you are greenfield in September 2026, my default is still: Prefect for function-shaped work, Dagster for asset-shaped work, Airflow if the company already standardized there and you like having a job in two years. The acquisition did not create a fourth default.

The memo your DAG did not get is this: a purchase announcement is not a scheduler. Jitter in 3.8.5 is a scheduler. Multi-language tasks in Airflow 3.3.1 are a scheduler. Dynamic partitions in Dagster are a scheduler. Install those. Leave the org chart to the people who collect logos.

If you need a one-line staff update: Prefect and Dagster are siblings now, not a rewrite. Airflow 3.3 is still the default at companies that already run it. Pin 3.8.5 if you are on Prefect. Do not schedule the “grand unification” sprint. There is no unification, and the jitter patch will do more for tonight’s retries than a new logo in the footer.

Spread The Article

Share this guide

Send this article to your network or keep a copy of the direct link.

X Facebook LinkedIn Reddit Telegram

Discussion

Leave a comment

No comments yet

Be the first to start the conversation.