Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Releases: apache/airflow

Airflow 3.1.1

27 Oct 13:51
3.1.1

Choose a tag to compare

πŸ“¦ PyPI: https://pypi.org/project/apache-airflow/3.1.1/
πŸ“š Docs: https://airflow.apache.org/docs/apache-airflow/3.1.1/
πŸ› οΈ Release Notes: https://airflow.apache.org/docs/apache-airflow/3.1.1/release_notes.html
πŸͺΆ Sources: https://airflow.apache.org/docs/apache-airflow/3.1.1/installation/installing-from-sources.html
🐳 Docker Image: "docker pull apache/airflow:3.1.1"
🚏 Constraints: https://github.com/apache/airflow/tree/constraints-3.1.1

Bug Fixes

  • Fix execution failures with NULL dag_run.conf during upgrades from earlier versions (#56729)
  • Fix memory leak in remote logging connection cache (#56695)
  • Fix DAG processor crash with pre-import module optimization enabled (#56779)
  • Fix scheduler crash with email notifications (#56431)
  • Fix scheduler crash during 3.0 to 3.1 migration when retry_delay is None (#56236)
  • Fix task retries executing wrong method after deferred state (#56737)
  • Fix retry callbacks not executing for externally killed tasks (#56607)
  • Fix custom timetable generate_run_id not called for manual triggers (#56699)
  • Fix KeyError when accessing retry_delay on MappedOperator without explicit value (#56605)
  • Fix task-sdk connection error handling to match airflow-core behavior (#56653)
  • Fix topological sort for Grid View (#56963)
  • Fix get_ti_count and get_task_states access in callback requests (#56860)
  • Fix Connection or Variable access in Server context (#56602)
  • Fix .airflowignore order precedence (#56832)
  • Fix migration errors for Pydantic 2.12.0 compatibility (#56581)
  • Fix: Correctly parse JSON for --dag_run_conf in airflow dags backfill CLI (#56599)
  • UI: Fix note modal does not change markdown text after change (#56092)
  • UI: Fix Grid for cleared runs when tasks were removed (#56297)
  • UI: Fix log text selection contrast in light mode (#56893)
  • UI: Fix Advanced Search button overlap in DAG List View (#56777)
  • UI: Fix view for many DAG tags (#55604)
  • UI: Fix asset name text overflow in DAGs list view (#55914)
  • UI: Fix auto refresh when only 1 dag run is running (#56649)
  • UI: Fix UI keeps poking pools API when no permission (#56626)
  • UI: Fix multi-line drag selection in task log view (#56300)
  • UI: Fix task named 'root' causes blue screen on hover (#56926)
  • UI: Fix cron expression display for Day-of-Month and Day-of-Week conflicts (#56255)
  • UI: Fix Grid view performance issues with SerializedDagModel query optimization (#56938)
  • Fix: Gracefully handle FastAPI plugins with empty url_prefix (#55262)
  • Fix: Allow mapped tasks to accept zero-length inputs on rerun (#56162)
  • Fix: Enable API to clear task instances by specifying map indexes (#56945)
  • Fix: Add max_retry_delay to MappedOperator model (#56951)
  • Fix: Use name passed to @asset decorator when fetching the asset (#56611)
  • UI: Add English as a fallback locale (#56934)

Miscellaneous

  • Add Greek UI translation (#56724)
  • Add Thai UI translation (#56946)
  • Add Polish translations (#56825)
  • Close German translation gaps for full UI translation (#56981)
  • Fix Hebrew typo in translations (#56168)
  • Improve DAG and task missing error handling in callbacks (#56725)
  • Improve UI retry strategy on client errors (#56638)
  • Improve get dag grid structure endpoint speed (#56937)
  • Optimize grid structure query with DISTINCT for dag_version_id lookup (#56565)
  • Add configurable timeout for Execution API requests (#56969)
  • Prevent unnecessary kubernetes client imports in workers (#56692)
  • Lazy import PodGenerator for deserialization (#56733)
  • Serialize pydantic models in json mode for JSON serialization compatibility (#56939)
  • Update authentication to handle JWT token in backend (#56677)
  • Update bulk API permission check to handle action_on_existence (#56672)
  • Migrate CreateAssetEventsBody to Pydantic v2 ConfigDict (#56772)
  • Restore timetable active_runs_limit check (#56922)
  • Add is_favorite to UI dags list (#56341)
  • Add executor, hostname, and queue columns to TaskInstances page (#55922)
  • Add resize function for DAG Documentation (#56344)
  • Add optional pending dag runs check to auto refresh (#56648)
  • Add auto refresh to backfill banner (#56774)
  • UI: Add Expand/Collapse all to XComs page (#56285)
  • UI: Update recent runs bar chart and improve responsiveness (#56314)
  • UI: Update duration format to show milliseconds (#56961)
  • UI: Modify min width for task names in grid view (#56952)
  • UI: Use Task Display Name in Graph if existing (#56511)
  • UI: Use Task Display Name in Grid if existing (#56410)
  • UI: Use TI duration from database instead of UI calculated (#56329)
  • UI: Make DAG Run ID visible in DAG Header Card (#56409)
  • UI: Modify calendar cell colors (#56161)
  • UI: Modify log highlight color (#56894)
  • UI: Fix show appropriate time units in grid view (#56414)
  • UI: Reduce default columns of DAG Run and Task Instance lists (#55968)
  • UI: Add expand and collapse functionality for task groups (#56334)
  • UI: Avoid using rem for icons for Safari compatibility (#56304)
  • UI: Add ANSI support to log viewer (#56721)
  • UI: Support Dynamic UI Alerts (#56259)
  • UI: Disable Gantt view by default (#56242)
  • UI: Use welcome on dashboard instead of airflow (#56074)
  • UI: Improve clipboard button visibility with hover effect (#56484)
  • UI: Allow sub-pages in React UI plugins (#56485)
  • Include task instance id in log printed by supervisor (#56383)
  • Emit log stream stopped warning as ndjson (#56480)
  • Detect interactive terminal to set colored logging with override env variable support (#56157)
  • Add back deprecation warning for sla_miss_callback (#56127)
  • Move natsort dependency to airflow-core (#56582)
  • Added missing babel dependency in Task SDK (#56592)
  • Remove unused dagReports API endpoint (#56621)

Doc Only Changes

  • Improve API sort documentation (#56617)
  • Improve API doc for ordering query param (#55988)
  • Add Audit Logs detailed documentation (#56719)
  • Update serializer document to reflect latest changes in codebase (#56857)
  • Update ASF logos in documentation to the new Oak logo (#56601)
  • Enhance triggering_asset_event retrieval documentation in DAGs (#56957)
  • Remove self-reference in best practices documentation (#56111)
  • Fix supported Python versions in README (#56734)

Full Changelog: 3.1.0...3.1.1

Airflow 3.1.0

25 Sep 20:47
3.1.0

Choose a tag to compare

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 ...
Read more

Airflow 3.0.6

29 Aug 20:07
3.0.6

Choose a tag to compare

πŸ“¦ PyPI: https://pypi.org/project/apache-airflow/3.0.6/
πŸ“š Docs: https://airflow.apache.org/docs/apache-airflow/3.0.6/
πŸ› οΈ Release Notes: https://airflow.apache.org/docs/apache-airflow/3.0.6/release_notes.html
πŸͺΆ Sources: https://airflow.apache.org/docs/apache-airflow/3.0.6/installation/installing-from-sources.html
🐳 Docker Image: "docker pull apache/airflow:3.0.6"
🚏 Constraints: https://github.com/apache/airflow/tree/constraints-3.0.6

Bug Fixes

  • Fix Connection extra field masking errors when connections use masked values (#54780)
  • UI: Fix TriggerDagRunLink broken page when clicking "Triggered DAG" button (#54760)
  • Fix remote logging connection availability in Task SDK supervisor when connections are created via UI (#54720)
  • Fix task_queued_timeout not working after first DAG run by properly resetting queued_by_job_id (#54604)
  • Fix DAG version determination to use bundle path and relative fileloc instead of absolute fileloc (#54483)
  • Remove Kerberos replay cache (KRB5CCNAME env) when running tasks with user impersonation (#54672)
  • Skip additional span-related database queries when tracing is disabled (#54626)
  • Fix max_active_tasks persisting after removal from DAG code (#54639)
  • UI: Automatically switch to the triggered DAG run in Graph/Grid view when manually triggering a DAG run (#54336)
  • UI: Fix "Maximum update depth exceeded" errors in Task Log Preview by filtering out empty log entries (#54628)
  • Fix custom logging configuration failures preventing triggerer and scheduler startup with simple module paths (#54686)
  • Fix MySQL UUID generation in task_instance migration (#54814)
  • Only redirect on the dag detail page (#54921)
  • Fix local executor task execution (#54922)

Miscellaneous

  • Add logging when triggerer reaches maximum trigger capacity for better observability (#54549)
  • Point deprecation warning in Variable methods to specific alternatives (#54871)
  • Point deprecation warning in Connection method to specific alternatives (#54872)
  • Bump axios UI dependency from 1.8.0 to 1.11.0 (#54733)
  • Bump pluggy to 1.6.0 (#54728, #54730)

Doc Only Changes

  • Fix broken link for Listener spec (#54535)
  • Remove experimental status from get_parsing_context function (#54802)
  • Correct Trigger-Form UI documentation for current Airflow 3 features (#54806)
  • Add backfill through UI to docs (#54910)

Full Changelog: 3.0.5...3.0.6

Airflow 3.0.5

20 Aug 20:22
3.0.5

Choose a tag to compare

What's Changed

πŸ“¦ PyPI: https://pypi.org/project/apache-airflow/3.0.5/
πŸ“š Docs: https://airflow.apache.org/docs/apache-airflow/3.0.5/
πŸ› οΈ Release Notes: https://airflow.apache.org/docs/apache-airflow/3.0.5/release_notes.html
πŸͺΆ Sources: https://airflow.apache.org/docs/apache-airflow/3.0.5/installation/installing-from-sources.html
🐳 Docker Image: "docker pull apache/airflow:3.0.5"
🚏 Constraints: https://github.com/apache/airflow/tree/constraints-3.0.5

Bug Fixes

  • UI: Fix JSON field display in dark mode when using system OS theme detection (#54260)
  • Restore proper DAG callback execution context (#53684)
  • Restore get_previous_dagrun functionality for task context (#53655)
  • Fix scheduler crashes with DetachedInstanceError when processing executor events (#54334)
  • Fix DetachedInstanceError when accessing DagRun.created_dag_version (#54362)
  • Fix Task SDK to respect custom default queue configuration from config settings (#52786)
  • Fix: Cannot edit or delete pools with "/" in the name in the UI (#54268)
  • Fix: Validate and handle invalid extra field in connections UI and API (#53963, #54034, #54235)
  • Fix: Apply DAG permission filter to dashboard (#54215)
  • Fix API validation error when DAG runs have bundle_version but no created_dag_version (#54010)
  • Fix task configuration defaults not being read from configuration settings (#52871)
  • Fix duplicate task group prefixes in task IDs when unmapping MappedOperators within TaskGroups (#53532)
  • Fix custom XCom backends not being used when BaseXCom.get_all() is called (#53814)
  • Fix xcom_pull ignoring include_prior_dates parameter when map_indexes is not specified (#53809)
  • Allow setting and deleting Variables and XComs from triggers (#53514)
  • Fix AttributeError when reading logs for previous task attempts with TaskInstanceHistory (#54114)
  • Skip database queries for spans and metrics when tracing/metrics are disabled (#54404)
  • UI: Fix Graph view edge rendering issues for nested task groups with excessive bends and misalignment (#54412)
  • Allow database downgrade from Airflow 3.x to 2.11 (#54399, #54508)
  • Reduce excessive warning logs when multiple deferred tasks are queued in triggerer (#54441)
  • Fix log retrieval failures for in-progress tasks by properly configuring JWT authentication (#54444)
  • Fix DAG import errors for invalid access control roles to persist consistently in UI (#54432)
  • Fix task failure callbacks missing end_date and duration by populating TaskInstance data before invoking callbacks (#54458)
  • Fix task retry overflow errors when calculating next retry datetime by capping delay to maximum configured value (#54460)
  • Add missing ordering to AssetEvent queries in scheduler to maintain consistent event processing order (#52231)
  • Fix XCom lookup failures in nested mapped task groups by correctly resolving map_index for upstream tasks (#54249)
  • UI: Fix task name indentation in Graph view for deeply nested task groups beyond 5 levels (#54419)
  • Run failure callbacks for task instances that get stuck in queued state and fail after requeue attempts (#54401)
  • Make secrets masking work when connections are loaded from secrets backends (#54574, #54612)

Miscellaneous

  • Set minimum version for common.messaging to 1.0.3 (#54176)
  • Add IP validation to example_dag_decorator DAG (#54208)

Doc Only Changes

  • Fix doc redirects for operators moved to the standard provider (#54251)
  • Add FAQ entry about testing connections and "Canary" Dag (#54151)
  • Add note about ruff rules and preview flag (#53331)
  • Fix broken link in advanced logging config docs (#53460)
  • Update dag bundles docs; add s3, fix git classpath (#53473)
  • Fix example to use proper task context and logging instead of dag.log (#54463)
  • Improve documentation navigation by hiding Public Interface subsections from sidebar while preserving page links (#54465)

Full Changelog: 3.0.4...3.0.5

Airflow 3.0.4

08 Aug 22:20
3.0.4

Choose a tag to compare

What's Changed

πŸ“¦ PyPI: https://pypi.org/project/apache-airflow/3.0.4/
πŸ“š Docs: https://airflow.apache.org/docs/apache-airflow/3.0.4/
πŸ› οΈ Release Notes: https://airflow.apache.org/docs/apache-airflow/3.0.4/release_notes.html
πŸͺΆ Sources: https://airflow.apache.org/docs/apache-airflow/3.0.4/installation/installing-from-sources.html
🐳 Docker Image: "docker pull apache/airflow:3.0.4"
🚏 Constraints: https://github.com/apache/airflow/tree/constraints-3.0.4

Bug Fixes

  • Fix scheduler heartbeat timeout failures with intermittent DetachedInstanceError crashes (#53838) (#53858)
  • Fix connection editing where sensitive fields like passwords and extras were lost when updating connections (#53943) (#53973)
  • Fix BaseOperator on_kill functionality not working when tasks are killed externally in TaskSDK (#53718) (#53832)
  • Fix TaskInstance notes not refreshing automatically without manual page refresh (#53307) (#54025)
  • Fix invalid execution API URLs causing failures in task supervisor (#53082) (#53518)
  • Fix task failure callbacks not running on DAG Processor when tasks are externally killed (#53058) (#53143)
  • Fix task_success_overtime configuration option not being configurable (#53342) (#53351)
  • Fix CSS warning for nth-child selector (#53982) (#54000)
  • Fix DAG filtering where "all" option did not show all DAGs as expected (#53656) (#53672)
  • Fix accordion child contents not being visible when content overflows (#53595) (#53602)
  • Fix navbar positioning for anchor calculations (#52016) (#53581)
  • Fix DagBag safe mode configuration resolution in DAG processor (#52694) (#53507)
  • Fix large log reading causing out-of-memory issues in API server (#49470) (#53167)
  • Fix connection exceptions consistency between Airflow 2.x and 3.x (#52968) (#53093)
  • Remove unnecessary group_by clause in event logs query for performance (#53733) (#53807)
  • Allow remote logging providers to load connections from API Server (#53719) (#53761)
  • Add certificate support for API server client communication with self-signed certificates (#53574) (#53793)
  • Respect apps flags for API server command configuration (#52929) (#53775)
  • Skip empty DAG run configuration rows and set statement timeout (#50788) (#53619)
  • Remove incorrect warning for BaseOperator.executor attribute (#53496) (#53519)
  • Add back DAG parsing pre-import optimization for improved performance (#50371) (#52698)
  • Flexible form use ReactMarkdown instead of default Markdown component (#54032) (#54040)
  • Unconditionally disable start_from_trigger functionality (#53744) (#53750)
  • Serialize NaN and infinity values to string (#53835) (#53844)
  • Make log redaction safer in edge case when redaction has an error (#54046) (#54048)
  • Flexible form use ReactMarkdown instead of default Markdown component (#54032) (#54040)
  • Fix inconsistent casing in UI of decorated tasks (#54056) (#54092)

Miscellaneous

  • Fix AIRFLOW_API_APPS constant in API server command (#54007) (#54012)
  • Add deprecation notice for using Connection from models in favor of SDK approach (#53594) (#53621)
  • Remove remnants of ~= used in requires-python configuration (#52985) (#52987)
  • Remove upper-binding for "python-requires" specification (#52980) (#52984)
  • Update GitPython from 3.1.44 to 3.1.45 (#53725) (#53731)(#53724) (#53732)

Doc Only Changes

  • Update DAG author documentation to use "DAG author" terminology (#53857) (#53950)
  • Update architecture diagrams labels from "Webserver(s)" to "API Server(s)" (#53917) (#54020)
  • Remove bold formatting for Public Interface documentation in Airflow 3.0+ (#53955) (#53964)
  • Add user-facing documentation for running separate Task Execution API server (#53789) (#53794)
  • Add documentation for self-signed certificate configuration (#53788) (#53792)
  • Update systemd unit files and documentation for Airflow 3.0 compatibility (#52294) (#53609)
  • Update public interface documentation to reflect airflow.sdk and AIP-72 changes (#52197) (#53117)
  • Update BaseOperator documentation string for clarity (#53403) (#53404)
  • Remove extra slash from endpoint URL formatting (#53755) (#53764)
  • Clarify our security model for sensitive connection information (#54088) (#54100)

Full Changelog: 3.0.3...3.0.4

Airflow 3.0.3

14 Jul 19:05
3.0.3

Choose a tag to compare

What's Changed

πŸ“¦ PyPI: https://pypi.org/project/apache-airflow/3.0.3/
πŸ“š Docs: https://airflow.apache.org/docs/apache-airflow/3.0.3/
πŸ› οΈ Release Notes: https://airflow.apache.org/docs/apache-airflow/3.0.3/release_notes.html
πŸͺΆ Sources: https://airflow.apache.org/docs/apache-airflow/3.0.3/installation/installing-from-sources.html
🐳 Docker Image: "docker pull apache/airflow:3.0.3"
🚏 Constraints: https://github.com/apache/airflow/tree/constraints-3.0.3

Bug Fixes

  • Fix task execution failures with large data by improving internal communication protocol (#51924, #53194)
  • Fix reschedule sensors failing after multiple re-queue attempts over long periods (#52706)
  • Improve xcom_pull to cover different scenarios for mapped tasks (#51568)
  • Fix connection retrieval failures in triggerer when schema field is used (#52691)
  • Add back user impersonation (run_as_user) support for task execution (#51780)
  • Fix DAG version not updating when bundle name changes without DAG structure changes (#51939)
  • Add back exception to context for task callbacks (#52066)
  • Fix task log retrieval for retry attempts showing incorrect logs (#51592)
  • Fix data interval handling for DAGs created before AIP-39 during serialization (#51913)
  • Fix lingering task supervisors when EOF is missed (#51180) (#51970)
  • Persist EventsTimetable's description during serialization (#51926)
  • Delete import error when a dag bundle becomes inactive (#51921)
  • Cleanup import errors during DB migration (#51919)
  • Fix EOF detection of subprocesses in Dag Processor (#51895)
  • Stop streaming task logs if end of log mark is missing (#51482)
  • Allow more empty loops before stopping log streaming (#52624)
  • Fix Jinja2 Template deep copy error with dag.test (#51673)
  • Explicitly close log file descriptor in the supervise function (#51654)
  • Improve structured logging format and layout (#51567) (#51626)
  • Use Connection Hook Names for Dropdown instead of connection IDs (#51613)
  • Add back config setting to control exposing stacktrace (#51617)
  • Fix task level alias resolution in structure endpoint (#51579)
  • Fix backfill creation to include DAG run configuration from form (#51584)
  • Fix structure edges in API responses (#51489)
  • Make dag.test consistent with airflow dags test CLI command (#51476)
  • Fix downstream asset attachment at task level in structure endpoint (#51425)
  • Fix Task Instance No Status Filter (#52154)
  • UI: Fix backfill creation to respect run backwards setting from form (#52168)
  • UI: Set downstream option to default on task instance clear (#52246)
  • UI: Enable iframe script execution (#52568)
  • UI: Fix DAG tags filter not showing all tags in UI when tags are greater than 50 (#52714)
  • UI: Add real-time clock updates to timezone selector (#52414)
  • Improve Grid view performance and responsiveness with optimized data loading (#52718,#52822,#52919)
  • Fix editing connection with sensitive extra field (#52445)
  • Fix archival for cascading deletes by archiving dependent tables first (#51952)
  • Fix whitespace handling in DAG owners parsing for multiple owners (#52221)
  • Fix SQLite migration from 2.7.0 to 3.0.0 (#51431)
  • Fix http exception when ti not found for extra links API (#51465)
  • Fix Starting from Trigger when using MappedOperator (#52681)
  • Add ti information to re-queue logs (#49995)
  • Task SDK: Fix AssetEventOperations.get to use alias_name when specified (#52324)
  • Ensure trigger kwargs are properly deserialized during trigger execution (#52721)
  • Fixing bad cadwyn migration for upstream map indexes (#52797)
  • Run trigger expansion logic only when start_from_trigger is True (#52873)
  • Fix example dag example_external_task_parent_deferrable.py imports (#52957)
  • Fixes pagination in DAG run lists (#52989)
  • Fix db downgrade check condition (#53005)
  • Fix log viewing for skipped task (#53028,#53101)
  • Fixes Grid view refresh after user actions (#53086)
  • Fix no_status and duration for grid summaries (#53092)
  • Fix ti.log_url not in Task Context (#50376)
  • Fix XCom data deserialization when using XCom.get_all() method (#53102)

Miscellaneous

  • Update connections_test CLI to use Connection instead of BaseHook (#51834) (#51917)
  • Fix table pagination when DAG filtering changes (#51795)
  • UI: Move asset events to its own tab (#51655)
  • Exclude libcst 1.8.1 for Python 3.9 (#51609)
  • UI: Implement navigation on bar click (#50416)
  • Reduce unnecessary logging when retrieving connections and variables (#51826)

Doc Only Changes

  • Add note about payload size considerations in API docs (#51768)
  • Enhance ENV vars and conns visibility docs (#52026)
  • Add http-only warning when running behind proxy in documentation (#52699)
  • Publish separate docs for Task SDK (#52682)
  • Streamline Taskflow examples and link to core tutorial (#52709)
  • Refresh Public Interface & align how-to guides for Airflow 3.0+ (#53011)

Full Changelog: 3.0.2...3.0.3

Apache Airflow Helm Chart 1.18.0

13 Jul 15:20
helm-chart/1.18.0
48ae6af

Choose a tag to compare

Significant Changes

No significant changes.

Improvements

  • Allow ConfigMap and Secret references in apiServer.env (#51191)
  • Add custom annotations to JWT Secret (#52166)
  • Allow valuesFrom in gitSync.env (#50228)

Bug Fixes

  • Fix JWT secret name (#52268)
  • Use api-server instead of webserver in NOTES.txt for Airflow 3.0+ (#52194)
  • Change default executor in pod template to support executor parameter in task (#49433)
  • Use merged to render airflow.cfg and include computed defaults (#51828)
  • Use [api] secret_key for Airflow 3.0+ instead of [webserver] secret_key (#52269)
  • Fix for fernetkey and add test of its value (#52977)

Doc only changes

  • Update supported executors in docs (#52132)
  • Update service name for port-forward of Airflow UI (#51945)

Apache Airflow Helm Chart 1.17.0

23 Jun 21:57
helm-chart/1.17.0
b5c8716

Choose a tag to compare

Significant Changes

Default Airflow image is updated to 3.0.2 (#51594)

The default Airflow image that is used with the Chart is now 3.0.2, previously it was 2.10.5.

New Features

  • Add extra secret annotations to most secrets (#48890)
  • Add support for EdgeExecutor (#50897)

Improvements

  • Unify k8s labels & add some missing k8s labels (#49522)

Bug Fixes

  • Fix missing api server ingress (#49727)
  • Replace break function in pod-launcher-rolebinding template (#49219)
  • Add webserver_config.py file to api-server (#50108)
  • Declare missing API server properties (#51012)
  • Add missing api server replicas parameter (#50814)
  • Fix FAB enable_proxy_fix default for Airflow 3 (#50056)
  • Add the dag processor ServiceAccount to SecurityContextConstraints role binding (#51080)
  • Generate JWT secret during HELM install (#49923)
  • Always deploy JWT secret (#51799)
  • Add missing workers.kerberosInitContainer configuration in values (#51405)
  • Truncate the executor label length (#51817)
  • Fix execution_api_server_url when base_url has a subpath (#51454)

Doc only changes

  • Bump minimum helm version in docs (#48700)
  • Clarify which worker fields apply to Celery and Kubernetes worker pods (#50458)
  • Capitalize the term airflow (#49450)
  • Add EdgeExecutor to readme (#51017)
  • Add 3.X/2.X clarification for CeleryKubernetesExecutor (#49916)

Misc

  • Default Airflow image is updated to 3.0.2 (#51594)
  • Bump minimal Kubernetes version to 1.30 (#51515)
  • Delete unneeded and operator (#51114)

Airflow 3.0.2

10 Jun 14:45
3.0.2

Choose a tag to compare

What's Changed

πŸ“¦ PyPI: https://pypi.org/project/apache-airflow/3.0.2/
πŸ“š Docs: https://airflow.apache.org/docs/apache-airflow/3.0.2/
πŸ› οΈ Release Notes: https://airflow.apache.org/docs/apache-airflow/3.0.2/release_notes.html
πŸͺΆ Sources: https://airflow.apache.org/docs/apache-airflow/3.0.2/installation/installing-from-sources.html

Bug Fixes

  • Fix memory leak in dag-processor (#50558)
  • Add back invalid inlet and outlet check before running tasks (#50773)
  • Implement slice on LazyXComSequence to allow filtering items from a mapped task(#50117)
  • Fix execution API server URL handling for relative paths in KE (#51183)
  • Add log lookup exception for Empty operator subtypes (#50325)
  • Increase the max zoom on the graph view to make it easier to see small dags on big monitor screens (#50772)
  • Fix timezone selection and dashboard layout (#50463)
  • Creating backfill for a dag is affecting other dags (#50577)
  • Fix next asset schedule and dag card UX (#50271)
  • Add bundle path to sys.path in task runner (#51318)
  • Add bundle path to sys.path in dag processor (#50385)
  • Prevent CPU spike in task supervisor when heartbeat timeout exceeded (#51023)
  • Fix Airflow Connection Form widget error (#51168)
  • Add backwards compatibility shim and deprecation warning for EmailOperator (#51004)
  • Handle SIGSEGV signals during DAG file imports (#51171)
  • Fix deferred task resumption in dag.test() (#51182)
  • Fix get dags query to not have join explosion (#50984)
  • Ensure Logical date is populated correctly in Context vars (#50898)
  • Mask variable values in task logs only if the variable key is sensitive (#50775)
  • Mask secrets when retrieving variables from secrets backend (#50895)
  • Deserialize should work while retrieving variables with secrets backend (#50889)
  • Fix XCom deserialization for mapped tasks with custom backend (#50687)
  • Support macros defined via plugins in Airflow 3 (#50642)
  • Fix Pydantic ForwardRef error by reordering discriminated union definitions (#50688)
  • Adding backwards compatibility shim for BaseNotifier (#50340)
  • Use latest bundle version when clearing / re-running dag (#50040)
  • Handle upstream_mapped_index when xcom access is needed (#50641)
  • Remove unnecessary breaking flag in config command (#50781)
  • Do not flood worker logs with secrets backend loading logs (#50581)
  • Persist table sorting preferences across sessions using local storage (#50720)
  • Fixed patch_task_instance API endpoint to support task instance summaries and task groups (#50550)
  • Fixed bulk API schemas to improve OpenAPI compatibility and client generation (#50852)
  • Fixed variable API endpoints to support keys containing slashes (#50841)
  • Restored backward compatibility for the /run API endpoint for older Task SDK clients
  • Fixed dropdown overflow and error text styling in FlexibleForm component (#50845)
  • Corrected DAG tag rendering to display +1 more when tags exceed the display limit by one (#50669)
  • Fix permission check on the ui config endpoint (#50608)
  • Fix default_args handling in operator .partial() to prevent TypeError when unused keys are present (#50525)
  • DAG Processor: Fix index to sort by last parsing duration (#50388)
  • UI: Fix border overlap issue in the Events page (#50453)
  • Fix airflow tasks clear command (#49631)
  • Restored support for --local flag in dag list and dag list-import-errors CLI commands (#49380)
  • CLI: Exclude example dags when a bundle is passed (#50401)
  • Fix CLI export to handle stdout without file descriptors (#50328)
  • Fix DagProcessor stats log to show the correct parse duration (#50316)
  • Fix OpenAPI schema for get_log API (#50547)
  • Remove logical_date check when validating inlets and outlets (#51464)
  • Guard ti update state and set task to fail if exception encountered (#51295)

Miscellaneous

  • UI: Implement navigation on bar click (#50416)
  • UI: Always Show Trends count in Dag Overview (#50183)
  • UI: Add basic json check to variable value
  • Remove filtering by last dag run state in patch dags endpoint (#51347)
  • Ensure that both public and ui dags endpoints map to DagService (#51226)
  • Refresh Dag details page on new run (#51173)
  • Log fallback to None when no XCom value is found (#51285)
  • Move example_dags in standard provider to example_dags in sources (#51275)
  • Bring back "standard" example dags to the airflow-core package (#51192)
  • Faster note on grid endpoint (#51247)
  • Port task.test to Task SDK (#50827)
  • Port dag.test to Task SDK (#50300,#50419)
  • Port ti.run to Task SDK execution path (#50141)
  • Support running airflow dags test from local files (#50420)
  • Move macros to task SDK execution_time module (#50940)
  • Add a link to the Airflow logo in Nav (#50304)
  • UI: Bump minor and patch package json dependencies (#50298)
  • Added a direct link to the latest DAG run in the DAG header (#51119,#51148)
  • Fetch only the most recent dagrun value for list display (#50834)
  • Move secret_key config to api section (#50839)
  • Move various webserver configs to fab provider (#50774,#50269,#50208,#50896)
  • Make dag_run nullable in Details page (#50719)
  • Rename Operation IDs for task instance endpoints to include map indexes (#49608)
  • Update default sort for connections and dags (#50600)
  • Raise exception if downgrade can't proceed due to no ab_user table (#50343)
  • Enable JSON serialization for variables created via the bulk API (#51057)
  • Always display the backfill option in the UI; enable it only for DAGs with a defined schedule (#50969)
  • Optimized DAG header to fetch only the most recent DAG run for improved performance (#50767)
  • Add owner_links field to DAGDetailsResponse for enhanced owner metadata in the API (#50557)
  • UI: Move map index column to be in line with other columns when viewing a summary mapped tasks (#50302)
  • Separate configurations for colorized and json logs in Task SDK / Celery Executor (#51082)
  • Enhanced task log viewer with virtualized rendering for improved performance on large logs (#50746)

Doc Only Changes

  • Add dates for Limited Maintenance & EOL for Airflow 2.x (#50794)
  • Add Apache Airflow setup instructions for Apple Silicon (#50179)
  • Update recommendation for upgrade path to airflow 3 (#50318)
  • Add "disappearing DAGs" section on FAQ doc (#49987)
  • Update Airflow 3 migration guide with step about custom operators (#50871) (#50948)
  • Use AssetAlias for alias in Asset Metadata example (#50768)
  • Do not use outdated schedule_interval in tutorial dags (#50947)
  • Add Airflow Version in Page Title (#50358)
  • Fix callbacks docs (#50377)
  • Updating operator extra links doc (#50197)
  • Prune old Airflow versions from release notes (#50860)
  • Fix types in config templates reference (#50792)
  • Fix wrong import for PythonOperator in tutorial dag (#50962)
  • Better structure of extras documentation (#50495)

Full Changelog: 3.0.1...3.0.2

Airflow 2.11.0

20 May 08:35

Choose a tag to compare

Significant Changes

DeltaTriggerTimetable for trigger-based scheduling (#47074)

This change introduces DeltaTriggerTimetable, a new built-in timetable that complements the existing suite of
Airflow timetables by supporting delta-based trigger schedules without relying on data intervals.

Airflow currently has two major types of timetables:

  • Data interval-based (e.g., CronDataIntervalTimetable, DeltaDataIntervalTimetable)
  • Trigger-based (e.g., CronTriggerTimetable)

However, there was no equivalent trigger-based option for delta intervals like timedelta(days=1).
As a result, even simple schedules like schedule=timedelta(days=1) were interpreted through a data interval
lensβ€”adding unnecessary complexity for users who don't care about upstream/downstream data dependencies.

This feature is backported to Airflow 2.11.0 to help users begin transitioning before upgrading to Airflow 3.0.

  • In Airflow 2.11, schedule=timedelta(...) still defaults to DeltaDataIntervalTimetable.
  • A new config option [scheduler] create_delta_data_intervals (default: True) allows opting in to DeltaTriggerTimetable.
  • In Airflow 3.0, this config defaults to False, meaning DeltaTriggerTimetable becomes the default for timedelta schedules.

By flipping this config in 2.11, users can preview and adopt the new scheduling behavior in advance β€” minimizing surprises during upgrade.

Consistent timing metrics across all backends (#39908, #43966)

Previously, Airflow reported timing metrics in milliseconds for StatsD but in seconds for other backends
such as OpenTelemetry and Datadog. This inconsistency made it difficult to interpret or compare
timing metrics across systems.

Airflow 2.11 introduces a new config option:

  • [metrics] timer_unit_consistency (default: False in 2.11, True and dropped in Airflow 3.0).

When enabled, all timing metrics are consistently reported in milliseconds, regardless of the backend.

This setting has become mandatory and always True in Airflow 3.0 (the config will be removed), so
enabling it in 2.11 allows users to migrate early and avoid surprises during upgrade.

Ease migration to Airflow 3

This release introduces several changes to help users prepare for upgrading to Airflow 3:

  • All models using execution_date now also include a logical_date field. Airflow 3 drops execution_date entirely in favor of logical_date (#44283)
  • Added airflow config lint and airflow config update commands in 2.11 to help audit and migrate configs for Airflow 3.0. (#45736, #50353, #46757)

Python 3.8 support removed

Support for Python 3.8 has been removed, as it has reached end-of-life.
Airflow 2.11 requires Python 3.9, 3.10, 3.11, or 3.12.

New Features

  • Introduce DeltaTriggerTimetable (#47074)
  • Backport airflow config update and airflow config lint changes to ease migration to Airflow 3 (#45736, #50353)
  • Add link to show task in a DAG in DAG Dependencies view (#47721)
  • Align timers and timing metrics (ms) across all metrics loggers (#39908, #43966)

Bug Fixes

  • Don't resolve path for DAGs folder (#46877)
  • Fix ti.log_url timestamp format from "%Y-%m-%dT%H:%M:%S%z" to "%Y-%m-%dT%H:%M:%S.%f%z" (#50306)
  • Ensure that the generated airflow.cfg contains a random fernet_key and secret_key (#47755)
  • Fixed setting rendered_map_index via internal api (#49057)
  • Store rendered_map_index from TaskInstancePydantic into TaskInstance (#48571)
  • Allow using log_url property on TaskInstancePydantic (Internal API) (#50560)
  • Fix Trigger Form with Empty Object Default (#46872)
  • Fix TypeError when deserializing task with execution_timeout set to None (#46822)
  • Always populate mapped tasks (#46790)
  • Ensure check_query_exists returns a bool (#46707)
  • UI: /xcom/list got exception when applying filter on the value column (#46053)
  • Allow to set note field via the experimental internal api (#47769)

Miscellaneous

  • Add logical_date to models using execution_date (#44283)
  • Drop support for Python 3.8 (#49980, #50015)
  • Emit warning for deprecated BaseOperatorLink.get_link signature (#46448)

Doc Only Changes

  • Unquote executor airflow.cfg variable (#48084)
  • Update XCom docs to show examples of pushing multiple XComs (#46284, #47068)