github apache/airflow 3.1.0
Airflow 3.1.0

5 hours ago

We are thrilled to announce the release of Apache Airflow 3.1.0, an update that puts humans at the center of data
workflows.

Read more about what 3.1.0 brings in https://airflow.apache.org/blog/airflow-3.1.0/

📦 PyPI: https://pypi.org/project/apache-airflow/3.1.0/
📚 Core Airflow Docs: https://airflow.apache.org/docs/apache-airflow/3.1.0/
📚 Task SDK Docs: https://airflow.apache.org/docs/task-sdk/1.1.0/
🛠️ Release Notes: https://airflow.apache.org/docs/apache-airflow/3.1.0/release_notes.html
🚏 Constraints: https://github.com/apache/airflow/tree/constraints-3.1.0

Apache Airflow 3.1.0 represents an extraordinary community effort, showcasing the vibrant ecosystem that drives this project forward with 163 contributors making this release possible across 1,400+ commits.

Screenshots

i18n-demo
snake
calendar
favorite
gantt
hitl

New Features

  • Add Calendar and Gantt chart views to modern React UI with enhanced filtering (#54252, #51667)
  • Add Python 3.13 support for Airflow runtime and dependencies (#46891)
  • Add SQLAlchemy 2.0 support with various compatibility fixes for Python 3.13 (#52233, #52518, #54940)
  • Add support for the psycopg3 postgres driver (#52976)
  • Add ability to track & display user who triggers DAG runs (#51738, #53510, #54164, #55112)
  • Add toggle for log grouping in task log viewer for better organization (#51146)
  • Add tag filtering improvements with Any/All selection options (#51162)
  • Add comprehensive filtering for DAG runs, task instances, and audit logs (#53652, #54210, #55082)
  • Add XCom browsing with filtering and improved navigation (#54049)
  • Add bulk task instance actions and deletion endpoints (#50443, #50165, #50235)
  • Add DAG run deletion functionality through UI (#50368)
  • Add test connection button for connection validation (#51055)
  • Add hyperlink support for URLs in XCom values (#54288)
  • Add pool column to task instances list and improve pool integration (#51185, #51031)
  • Add drag-and-drop log grouping and improved log visualization (#51146)
  • Add color support for XCom JSON display (#51323)
  • Add configuration column to DAG runs page (#51270)
  • Add enhanced note visibility and management in task headers (#51764, #54163)
  • Introduce React plugin system (AIP-68) for modern UI extensions (#52255)
  • Add support for external view plugins via iframe integration (#51003, #51889)
  • Add dashboard integration capabilities for custom React apps (#54131, #54144)
  • Add comprehensive plugin development tools and documentation (#53643)
  • Implement complete HITL operator suite (HITLOperator, ApprovalOperator, HITLEntryOperator) for human decision workflows (#52868)
  • Add HITL UI integration with role-based access and form handling (#53035)
  • Add HITL API endpoints with filtering and query support (#53376, #53923)
  • Add HITL utility functions for generating URLs to required actions page (#54827)
  • Improve HITL user experience with bug fixes, UI enhancements, and data model consistency (#55463, #55539, #55575, #55546, #55543, #55536, #55535)
  • Add ordering and filtering support for HITL details endpoints (#55217)
  • Add "No Response Received" required action state (#55149)
  • Add operator filter for HITL task instances (#54773)
  • Implement deadline alert system for proactive DAG monitoring (AIP-86) (#53951, #53903, #53201, #55086)
  • Add configurable reference points and notification callbacks (#50677, #50093)
  • Add deadline calculation and tracking in DAG execution lifecycle (#51638, #50925)
  • Add comprehensive UI translation support for 16 languages (#51266, #51038, #51219, #50929, #50981, #51793 and more)
  • Add right-to-left (RTL) layout support for Arabic and Hebrew (#51376)
  • Add language selection interface and browser preference detection (#51369)
  • Add translation completeness validation and automated checks (#51166, #51131)
  • Add calendar data API endpoints for DAG execution visualization (#52748)
  • Add endpoint to watch DAG runs until completion (#51920, #53346)
  • Add DAG run ID pattern search functionality (#52437)
  • Add multi-sorting capabilities for improved data navigation (#53408)
  • Add bulk connection deletion API and UI (#51201)
  • Add task group detail pages across DAG runs (#50412, #50309)
  • Add asset event tracking with last event timestamps (#50060, #50279)
  • Add has_import_errors filter to Core API GET /dags endpoint (#54563)
  • Add dag_version filter to get_dag_runs endpoint (#54882)
  • Add pattern search for event log endpoint (#55114)
  • Add dry_run support with consistent audit log handling (#55116)
  • Add utility functions for generic filter counting (#54817)
  • Add keyboard navigation for Grid view interface (#51784)
  • Add improved error handling for plugin import failures (#49643)
  • Add plugin validation in /plugins API with warnings for invalid plugins (#55673)
  • Improve accessibility for screen readers and assistive technologies with proper language detection (#55839)
  • Add enhanced variable management with upsert operations (#48547)
  • Add favorites/pinning support for DAG dashboard organization (#51264)
  • Add system theme support with automatic OS preference detection (#52649)
  • Add hotkey shortcut to toggle between Grid and Graph views (#54667)
  • Add queued DAGs filter button to DAGs page (#55052)
  • Add DAG parsing duration visibility in UI (#54752)
  • Add owner links support in DAG Header UI for better navigation (#50627)
  • Add dag_display_name aliases for improved API consistency (#50332, #50065, #50014, #49933, #49641)
  • Add enhanced search capabilities with SearchParamsKeys constants (#55218)
  • Add ALL_DONE_MIN_ONE_SUCCESS trigger rule for flexible task dependencies (#53959)
  • Add fail_when_dag_is_paused parameter to TriggerDagRunOperator for better control (#48214)
  • Add XCom validation to prevent empty keys in XCom.set() and XCom.get() operations (#46929)
  • Add collapsible plugin menu when multiple plugins are present (#55265)
  • Add external view plugin categories (admin, browse, docs, user) (#52737)
  • Add iframe plugins integration to DAG pages (#52795)
  • Add plugin error display in UI with comprehensive error handling (#49643, #49436)
  • Add collapsible failed task logs to prevent React error overflow (#54377)
  • Add dynamic legend system for calendar view (#55155)
  • Add React UI for Edge functionality (#53563)
  • Add pending actions display to DAG UI (#55041)
  • Add description field for filter parameters (#54903)
  • Add Catalan language support to Airflow UI (#55013)
  • Add Hungarian language support to Airflow UI (#54716)
  • Add map_index validation in categorize_task_instances (#54791)
  • Add Grid view UX improvements (#54846)
  • Add HITL UX improvements for better user experience (#54990)
  • Add async support for Notifiers (AIP-86) (#53831)
  • Add filtering capabilities for tasks view (#54484)
  • Add asset-based filtering support to DAG API endpoint (#54263)
  • Add iframe plugins to navigation (#51706)
  • Add RTL (right-to-left) layout support for Arabic and Hebrew (#51376)
  • Add test connection button to UI (#51055)
  • Add task instance bulk actions endpoint (#50443)
  • Add connection bulk deletion functionality (#51201)
  • Add pool column to task instances list (#51185)
  • Add iframe_views to backend plugin support (#51003)
  • Add keyboard shortcuts to clear and mark state for task instances and DAG runs (#50885)
  • Add deadline relationship to DAG runs and deadline model (#50925, #50093)
  • Add DAG run deletion UI (#50368)
  • Add task instance deletion UI and endpoint (#50235, #50165)
  • Switch all airflow logging to structlog (#52651, #55434, #55431, #55638)
  • Add Filter Bar to Audit Log (#55487)
  • Add Filters UI for Asset View (#54640)
  • Update color palette and leverage Chakra semantic tokens (#53981, #55739)
  • Improve calendar view UI with enhanced tooltips and visual fixes (#55476)

Bug Fixes

  • Fix DAG list filtering to include QUEUED runs with null start_date (#52668)
  • Fix XCom deletion failure for mapped task instances through bulk deletion API (#51850)
  • Fix XCom deletion failure for mapped task instances (#54954)
  • Fix task timeout handling within task SDK (#54089)
  • Fix task instance tries API duplicate entries (#50597)
  • Fix connection validation and type checking during construction (#54759)
  • Fix mapped task instance index display in Task Instances tab (#55363)
  • Fix Gantt chart state mismatch with Grid view (#55300)
  • Fix Gantt chart status color display issues (#55296)
  • Fix XCom mapping for dynamically-mapped task groups (#51556)
  • Fix missing ti_successes and related metrics in Airflow 3.0 Task SDK (#55322)
  • Fix bulk operation permissions for connection, pool and variable (#55278)
  • Fix clearTaskInstances API: Restore include_past/future support on UI (#54416)
  • Fix migration when XCom has NaN values (#53812)
  • Fix HITL related UI schema generated by prek hooks (#55204)
  • Fix consistent no-log handling for tasks with try_number=0 in API and UI (#55035)
  • Fix timezone conversion in datetime trigger parameters (#54593)
  • Fix audit log payload for DAG pause/unpause actions (#55091)
  • Fix pushing None as an XCom value (#55080)
  • Fix scheduler processing of cleared running tasks stuck in RESTARTING state (#55084)
  • Fix XCom deletion failure for mapped task instances (#54954)
  • Fix outgoing graph edges should exit opposite of incoming edges (#54789)
  • Fix external links in Navigation buttons (#52220)
  • Fix Error when viewing DAG details of a no longer configured bundle (#52086)
  • Fix compatibility with new numpy and pandas versions (#52071)
  • Fix connection recovery from URI when host has protocol (#51953)
  • Fix last DAG run not showing on DAG listing (#51115)
  • Fix task instance tries API returning duplicate entries (#50597)
  • Fix Graph view vanishing and loading issues (#53886, #54756)
  • Fix rendered template display formatting for better readability (#53657)
  • Fix Grid view expand/collapse button functionality (#54257)
  • Fix tooltip visibility and positioning issues (#53913)
  • Fix grid keyboard navigation focus management (#54271)
  • Fix plugin registration for invalid objects and middleware registration (#55264, #55399)
  • Fix external links for plugins with undefined URL routes (#55221)
  • Fix language display consistency and flag representation (#51560, #51177)
  • Fix RTL layout rendering for Arabic and Hebrew interfaces (#51853)
  • Fix graph export cropping when view is partial (#55012)
  • Fix log viewer "Toggle Source" to hide only source fields, not all structured log fields (#55474)
  • Output on stdout/stderr from within tasks is now filterable in the Sources list in the UI log view (#55508)
  • Redact JWT tokens in task logs (#55499)
  • Fix grid view to handle long task name (#55332)
  • Allow slash characters in Variable keys similar to Airflow 2.x (#55324)
  • Fix Grid cache invalidation for multi-run task operations (#55504)
  • Fix Gantt chart rendering issues (#55554)
  • Fix XCom access in DAG processor callbacks for notifiers (#55542)
  • Fix alignment of arrows in RTL mode for right-to-left languages (#55619)
  • Fix connection form extras not inferring correct type in UI (#55492)
  • Fix incorrect log timestamps in UI when default_timezone is not UTC (#54431)
  • Fix handling of priority_weight for DAG processor callbacks (#55436)
  • Fix pointless requests from Gantt view when there is no Run ID (#55668)
  • Ensure filename and lineno of logger calls are present in Task Logs (#55581)
  • Fix DAG disappearing after callback execution in stale detection (#55698)
  • Fix DB downgrade to Airflow 2 when fab tables exists (#55738)
  • Fix UI stats endpoint causing dashboard loading issues (#55733)
  • Fix unintended console output when DAG not found in serialized_dag table (#54972)
  • Fix scheduler handling of orphaned tasks from Airflow 2 during upgrade (#55848)
  • Fix logging format to respect existing configuration during upgrade to prevent unexpected log format changes (#55824)
  • Fix Grid view crashes when DAG version information is missing (#55771)
  • Fix compatibility for custom triggers migrating from Airflow 2.x that use synchronous connection calls (#55799)
  • Fix DAG runs triggered from UI incorrectly marked as REST API triggers instead of UI triggers (#54650)
  • Fix XCom API responses failing when encountering non-serializable objects by falling back to string representation (#55880)
  • Fix asset queue display in UI showing incorrect timestamps for deleted queue events (#54652)
  • Fix SQLite database migrations failing due to foreign key constraint handling (#55883)
  • Fix DAG deserialization failure when using non-default weight_rule values like 'absolute' (#55906)
  • Fix async connection retrieval in triggerer context preventing event loop blocking (#55812)
  • Fix Airflow downgrade compatibility by handling serialized DAG format conversion from v3 to v2 (#55975)
  • Fix 'All Log Levels' filter not working in task log viewer (#55851)
  • Fix Grid view scrollbar overlapping issues on Firefox browser (#55960)
  • Fix Gantt chart misalignment with Grid view layout (#55995)
  • Fix Grid view task names being extremely collapsed and unreadable when displaying many DAG runs (#55997)
  • Fix LocalExecutor race condition where tasks could start before database state was committed (#56010)

Miscellaneous

  • Move secrets masker to shared distribution for better modularity (#54449)
  • Move email notifications from scheduler to DAG processor for better architecture (#55238)
  • Add graph UI load optimization with latest run info endpoint (#53429)
  • Optimize UI bundle size by moving translations to dynamic loading (#51735)
  • Relocate Task SDK components for improved separation (#55174, #54795)
  • Refactor trigger rule utilities and weight rule consolidation (#54797, #53393)
  • Remove deprecated Airflow 2.x modules and legacy imports (#50482)
  • Clean up unused code and improve module organization (#52176, #52173, #53031)
  • Add SQLAlchemy 2.0 CI support for future compatibility (#52233)
  • Improve test fixtures and SDK communication testing (#54795, #50603)
  • Add translation completeness linting and validation tools (#51166)
  • Upgrade to latest versions of important dependencies (#55350)
  • Move webserver configuration options to API section (#50693, #50656)
  • Improve DAG bundle handling and versioning support (#47592)
  • Add database management CLI tools for external database operations (#50657)
  • Add comprehensive HITL operator documentation and examples (#54618)
  • Add guards for registering middlewares from plugins (#55399)
  • Optimize Gantt group expansion with de-bouncing and deferred rendering (#55334)
  • Differentiate between triggers and watchers currently running for better visibility (#55376)
  • Removed unused config: dag_stale_not_seen_duration (#55601, #55684)
  • Update UI's query client strategy for improved performance (#55528)
  • Unify datetime format across the UI for consistency (#55572)
  • Mark React Apps as Experimental for Airflow 3.1 release (#55478)
  • Improve OOM error messaging for clearer task failure diagnosis (#55602)
  • Display responder username for better audit trail in HITL workflows (#55509)
  • The constraint file do not contain developer dependencies anymore (#53631)
  • Add hyperlinks to dag_id column in DAG Runs and Task Instances pages for better navigation (#55648)
  • Add responsive web design (RWD) support to Grid view (#55745)

Doc Only Changes

  • Add comprehensive Human-in-the-Loop operator tutorial and examples (#54618)
  • Add deadline alerts configuration and usage documentation (#53727)
  • Make term Dag consistent in docs task-sdk (#55100)
  • Add migration guide for upgrading from legacy SLA functionality to deadline alerts (#55743)
  • Add DAG bundles triggerer limitation documentation (#55232)
  • Add deadline alerts usage guides and best practices (#53727)
  • Remove --preview flag from ruff check instructions for Airflow 3 upgrade path (#55516)
  • Add documentation for context parameter (#55377)

Don't miss a new airflow release

NewReleases is sending notifications on new releases.