Apache Airflow 3.4.0 New Features Explained: Task Loops, Dags in TypeScript, Java and Go

apache airflow 3.4.0 new features explained — Task Loops graph view in the Airflow UI

Image: Apache Airflow — the refine_estimate loop, on its third of up to ten iterations (official release blog screenshot)

TL;DR: Apache Airflow 3.4.0 new features explained: the 6 November 2026 release adds bounded Task Loops that repeat a group of tasks until a condition is met, lets teams write whole Dags in TypeScript, Java, Go or YAML instead of only Python, and ships the common.ai provider (1.1.0) as generally available for LLM and agent tasks with human approval.

📌 Key Highlights

  • Apache Airflow 3.4.0 was released on 6 November 2026, with Task Loops (AIP-111), whole-Dag authoring beyond Python (AIP-85) and common.ai going GA.
  • Task Loops: call .loop() on a decorated task group with a required max_iterations cap and an optional until predicate.
  • Whole Dags can now be written in TypeScript, Java or Go — all three SDKs are GA — plus an opt-in YAML importer.
  • common.ai 1.1.0 is GA, turning LLM calls and agents into ordinary Airflow tasks with human approval.
  • Upgrade with pip install apache-airflow==3.4.0 or docker pull apache/airflow:3.4.0.

What happened?

Apache Airflow 3.4.0 landed on 6 November 2026. It follows Airflow 3.3.0 (6 July 2026), which gave tasks a memory and let task bodies be written in Java or Go. Where 3.3 was about what tasks remember, 3.4 is about workflow shape and who can write Dags.

Apache Airflow 3.4.0 new features explained

Task Loops (AIP-111): repeat until done, with a hard cap

Some workflows have no fixed shape: walking a tree of unknown depth, refining an estimate, or running an agentic generate → score → refine loop. Until now, Airflow made you hard-code a fixed depth or build Dags that trigger themselves.

Call .loop() on a decorated task group, with max_iterations as a required upper bound, so a loop can never run away. An optional until predicate decides when to stop early. It behaves like a do … while loop: the body runs before the check, so it always runs at least once, and a loop context object exposes loop.index, loop.previous and loop.result.

Iterations are created lazily, and a loop that hits its cap without converging is marked failed, so existing alerting catches it. The limits: no nesting, no loop inside a mapped task group, and a whole loop cannot be mapped.

Dags beyond Python: TypeScript, Java, Go and YAML

Airflow 3.3 let you write individual tasks in Java or Go while Python still owned the Dag. Airflow 3.4 takes the next step: you can define the entire Dag — schedule, tasks and dependencies — in TypeScript, Java, Go, with no Python file involved. All three SDKs are generally available, powered by AIP-85, the Dag Importer. An opt-in YAML importer on the same framework covers declarative Dags.

Each SDK builds one self-contained artifact: TypeScript to a .min.mjs file (Node.js 22+), Java to a fat JAR, Go to an executable needing no runtime. A Dag definition supports TaskFlow inputs, nested task groups, edge labels, if / else and switch / case branching, and triggering another Dag's run. Java teams will also find the runtime story improving elsewhere — GraalVM 25.5's native-image upgrades are worth a look alongside this release.

common.ai goes GA: LLM and agent tasks, with a human in the loop

The common.ai provider reaches general availability, shipping version 1.1.0 with Airflow 3.4.0. Built on pydantic-ai, it lets a failed call retry like any task. The simplest form is the @task.llm decorator; AgentOperator runs a full agent, with toolsets for SQL, hooks, MCP servers, object storage and sandboxes, plus cost limits. AI routing is a live cost question for agent pipelines, and Route Anything's AI model routing shows one way teams are cutting inference spend.

An agent can pause for a person to approve a tool call or the final answer, using the awaiting_input state from Airflow 3.3. The task parks without holding a worker slot and resumes when a reviewer responds.

What 3.4.0 changes vs 3.3

CapabilityIn Airflow 3.3In Airflow 3.4.0
Repeating workHard-coded depth or self-triggering DagsTask Loops with a max_iterations cap
Dag languagePython owns the DagWhole Dag in TypeScript, Java, Go or YAML
AI taskscommon.ai 1.0common.ai 1.1.0 GA, with human approval
Dag organisationFlat Dags listFolders panel by bundle layout

apache airflow 3.4.0 new features explained — human-in-the-loop review of an AI agent draft inside a Task Loop

Image: Apache Airflow — a draft-and-review Task Loop at iteration 3 of 5, awaiting approval (official release blog screenshot)

Why it matters for Indian data teams

Airflow is a staple orchestrator for data and machine-learning teams in India, and this release lowers two barriers: first, the Python barrier — many Indian engineering teams are Java- or TypeScript-heavy, and until now joining the Airflow side of a data platform meant writing Python. Whole-Dag authoring lets them own pipelines in their own language. Second, iteration: Indian startups shipping LLM features need generate → score → refine loops and human review, and Task Loops plus common.ai's approval flow give them a supervised, bounded way to run those inside Airflow itself. Caveat: the new surface is young — pin the versions you test.

Should you care?

✅ Yes, if you run Airflow and keep hitting the "repeat until done" pattern — Task Loops replace fragile self-triggering Dags. ⏳ Wait, if you are mid-migration or on Airflow 2 — finish that first, then trial 3.4.0.

How to upgrade

Airflow is free, open-source software under the Apache licence — there is no price or India launch date to wait for. Upgrade with pip install apache-airflow==3.4.0 using the release constraints file, or pull docker pull apache/airflow:3.4.0. Before upgrading, review the Significant Changes section of the official release notes. PyCharm 2026.3 adds Python 3.15 lazy imports — see our PyCharm 2026.3 new features explained.

FAQs

What is new in Apache Airflow 3.4.0?

Released on 6 November 2026, it adds bounded Task Loops, whole-Dag authoring in TypeScript, Java, Go and YAML, common.ai 1.1.0 as generally available, and a Dag Folders panel.

How do Task Loops work in Apache Airflow 3.4.0?

Call .loop() on a decorated task group with a required max_iterations cap and an optional until predicate. It behaves like a do-while loop, and a loop that hits its cap without converging fails.

Can you write Airflow Dags in TypeScript, Java or Go?

Yes — in Airflow 3.4.0 all three language SDKs are generally available, so you can define the whole Dag with no Python file involved. Each SDK builds one artifact, and you register a coordinator per language.

What is the common.ai provider in Apache Airflow?

It turns LLM calls and agents into ordinary Airflow tasks, built on pydantic-ai. It offers @task.llm and AgentOperator, toolsets, cost limits, and human approval of tool calls or final answers. Version 1.1.0 ships with Airflow 3.4.0.

Takeaway

Airflow 3.4.0 is a release about reach: loops for work that repeats until it is done, Dags in your team's language, and AI agents that run as supervised, auditable tasks.

If you run Airflow, try the refine_estimate example on a staging Dag first.

Sources

Comments