DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
This is an early draft of the changes coming in Airflow 3 which can have backwards compatibility impact.
The data below is captured from the "newsfragments" incorporated into the Pull Requests and is intended to give a quick summary overview of the changes.
At this point, the attached GoogleSheets link is the source of truth (for easier and more broad editing) and the table below is a view of that sheet.
AIP/PR (Newsfragment) | Title | DAG changes | Config changes | API changes | CLI changes | Behaviour changes | Plugin changes | Notes | Doc link (if any) |
|---|---|---|---|---|---|---|---|---|---|
| 24842 | Default DAG schedule changed to None | N | N | N | N | Y | N | When a schedule parameter is not passed to the DAG constructor, Airflow now defaults to never automatically schedule the DAG at all. The created DAG can still be manually triggered, either by the user directly, or from another DAG with TriggerDagRunOperator. | |
| 40029 | Deprecated allow_raw_html_descriptions | N | N | N | N | N | Y | Remove deprecated allow_raw_html_descriptions from UI Trigger forms | |
| 40931 | Deprecated store_serialized_dags | N | N | N | N | ? | N | Removed dagbag deprecated store_serialized_dags parameter. Please use read_dags_from_db parameter. | |
| 40936 | on_success_callback no longer called if task skipped | N | N | N | N | Y | N | on_success_callback will no longer execute if a task is skipped. Previously, this callback was triggered even when the task was skipped, which could lead to unintended behavior or inconsistencies in downstream processes. This is a breaking change because workflows that rely on on_success_callback running for skipped tasks will need to be updated. Consider updating your DAGs to handle cases where the callback is not invoked due to task skipping. | |
| 41096 | Deprecated process_poll_interval | N | Y | N | N | N | N | Removed deprecated processor_poll_interval configuration parameter from scheduler section. Please use scheduler_idle_sleep_time configuration parameter. | |
| 41348 | AIP-74 (Rename Dataset to Asset) | ??? | ??? | Y? | ? | N? | N? | Big set of changes to rename Dataset to Asset. Touches many core Airflow packages. Unclear, if backward compatibility shims were added? | |
| 41366 | Deprecated airflow.contrib | N | N | N | N | N | N | airflow.contrib modules have been removed. All modules from airflow.contrib which were deprecated in Airflow 2, have been removed. | |
| 41367 | Deprecated ImportError | Y | N | N | N | N | N | Deprecated ImportError removed from airflow.models The deprecated ImportError class can no longer be imported from airflow.models. It has been moved to airflow.models.errors.ParseImportError. | |
| 41368 | Deprecated core imports | Y | N | N | N | N | N | Support for deprecated core imports removed Support for importing classes etc from the following locations was deprecated at various times during Airflow 2s lifecycle, and has been removed: airflow.executors airflow.hooks airflow.macros airflow.operators airflow.sensors Instead, import from the right provider or more specific module instead. For example, instead of from airflow.sensors import TimeDeltaSensor, use from airflow.sensors.time_delta import TimeDeltaSensor. | |
| 41390 | Deprecated SubDAGs | Y | N | Y | Y | N | N | Subdags have been removed from the following locations: CLI API SubDagOperator This removal marks the end of Subdag support across all interfaces. Users should transition to using TaskGroups as a more efficient and maintainable alternative. Please ensure your DAGs are updated to remove any usage of Subdags to maintain compatibility with future Airflow releases. | |
| 41391 | Deprecated airflow.sensors.external_task.ExternalTaskSensorLink | Y | N | N | N | N | N | The airflow.sensors.external_task.ExternalTaskSensorLink class has been removed. This class was deprecated and is no longer available. Users should now use the airflow.sensors.external_task.ExternalDagLink class directly. | |
| 41393 | Deprecated use_task_execution_day parameter in DayOfWeekSensor | Y | N | N | N | N | N | The use_task_execution_day parameter has been removed from the DayOfWeekSensor class. This parameter was previously deprecated in favor of use_task_logical_date. If your code still uses use_task_execution_day, you should update it to use use_task_logical_date instead to ensure compatibility with future Airflow versions. Example update: sensor = DayOfWeekSensor( task_id="example", week_day="Tuesday", use_task_logical_date=True, dag=dag, ) | |
| 41394 | Deprecated airflow.models.taskMixin.TaskMixin | Y | N | N | N | N | N | The airflow.models.taskMixin.TaskMixin class has been removed. It was previously deprecated in favor of the airflow.models.taskMixin.DependencyMixin class. If your code relies on TaskMixin, please update it to use DependencyMixin instead to ensure compatibility with Airflow 3.0 and beyond. | |
| 41395 | Deprecated airflow.utils functions, constants, classes | Y | N | N | N | N | N | The following deprecated functions, constants, and classes have been removed as part of Airflow 3.0: airflow.executors.executor_loader.UNPICKLEABLE_EXECUTORS: No direct replacement; this constant is no longer needed. airflow.utils.dag_cycle_tester.test_cycle function: Use airflow.utils.dag_cycle_tester.check_cycle instead. airflow.utils.file.TemporaryDirectory function: Use tempfile.TemporaryDirectory instead. airflow.utils.file.mkdirs function: Use pathlib.Path.mkdir instead. airflow.utils.state.SHUTDOWN state: No action needed; this state is no longer used. airflow.utils.state.terminating_states constant: No action needed; this constant is no longer used | |
| 41420 | Replaced Python's list with MutableSet for the property DAG.tags. | N? | N | N | N | N | N | Replaced Python's list with MutableSet for the property DAG.tags. At the constractur you still can use list, you actually can use any data structure that implements the Collection interface. The tags property of the DAG model would be of type MutableSet instead of list, as there are no actual duplicates at the tags. | |
| 41434 | Experimental API removed | N | N | Y | N | N | N | Deprecated Experimental API is no longer available in Airflow. Users should transition to using Rest API as an alternative. | |
| 41440 | Deprecated and unused methods / properties on DAG | Y | N | N | N | N | N | Removed unused methods / properties in models/dag.py Methods removed: date_range is_fixed_time_schedule next_dagrun_after_date get_run_dates normalize_schedule full_filepath concurrency filepath concurrency_reached normalized_schedule_interval latest_execution_date set_dag_runs_state bulk_sync_to_db | |
| 41453 | Legacy DAG Schedule args removed | Y? | N | Y | N | N | N | Removed legacy scheduling arguments on DAG The schedule_interval and timetable arguments are removed from DAG. The schedule_interval _attribute_ has also been removed. In the API, a new timetable_summary field has been added to replace schedule_interval for presentation purposes. Since the DAG object no longer has the schedule_interval attribute, OpenLineage facets that contain the dag key produced on Airflow 3.0 or later will also no longer contain the field. | |
| 41496 | Deprecated methods in date utils | Y | N | N | N | N | N | Removed deprecated methods in airflow/utils/dates.py Methods removed: date_range days_ago (Use pendulum.today('UTC').add(days=-N, ...)) | |
| 41520 | Deprecated methods in Helper utils | Y | N | N | N | N | N | Removed deprecated methods in airflow/utils/helpers.py Methods removed: chain (Use airflow.models.baseoperator.chain) cross_downstream (Use airflow.models.baseoperator.cross_downstream) | |
| 41533 | Deprecated load_connections param | Y | N | N | N | N | N | The load_connections parameter has been removed from the local_file_system. This parameter was previously deprecated in favor of load_connections_dict. If your code still uses load_connections, you should update it to use load_connections_dict instead to ensure compatibility with future Airflow versions. Example update: connection_by_conn_id = local_filesystem.load_connections_dict(file_path="a.json") The get_connections parameter has been removed from the LocalFilesystemBackend class. This parameter was previously deprecated in favor of get_connection. If your code still uses get_connections, you should update it to use get_connection instead to ensure compatibility with future Airflow versions. Example update: connection_by_conn_id = LocalFilesystemBackend().get_connection(conn_id="conn_id") | |
| 41539 | Deprecated smtp config params | N | Y | N | N | N | N | Removed deprecated smtp_user and smtp_password configuration parameters from smtp section. Please use smtp connection (smtp_default). | |
| 41550 | Deprecated session configs | N | Y | N | N | N | N | Removed deprecated session_lifetime_days and force_log_out_after configuration parameters from webserver section. Please use session_lifetime_minutes. Removed deprecated policy parameter from airflow_local_settings. Please use task_policy. | |
| 41552 | Deprecated log handler arg | Y | Y | N | N | N | N | Removed deprecated filename_template argument from airflow.utils.log.file_task_handler.FileTaskHandler. | |
| 41579 | Deprecated apply_defaults in decorator | N? | N | N | N | N | N | Removed deprecated apply_defaults function from airflow/utils/decorators.py. | |
| 41690 | Deprecated dependency_detector | N? | N | N | N | N | N | Removed deprecated dependency_detector parameter from scheduler | |
| 41635 | Deprecated opton ignore-depends-on-past | N | N | N | Y | N | N | Removed deprecated --ignore-depends-on-past cli option from task command. Please use --depends-on-past ignore. | |
| 41642 | Deprecated secrets backend methods | Y | N | N | N | N | N | Removed deprecated secrets backend methods get_conn_uri and get_connections. Please use get_conn_value and get_connection instead | |
| 41663 | Deprecated auth (basic_auth) | N | Y | N | N | N | N | Removed deprecated auth airflow.api.auth.backend.basic_auth from auth_backends. Please use airflow.providers.fab.auth_manager.api.auth.backend.basic_auth instead | |
| 41693 | Deprecated auth (kerberos) | N | Y | N | N | N | N | Removed deprecated auth airflow.api.auth.backend.kerberos_auth and airflow.auth.managers.fab.api.auth.backend.kerberos_auth from auth_backends. Please use airflow.providers.fab.auth_manager.api.auth.backend.kerberos_auth instead | |
| 41708 | Deprecated fab_auth_manager | N | Y | N | N | N | N | Removed deprecated auth manager airflow.auth.managers.fab.fab_auth_manager and airflow.auth.managers.fab.security_manager.override. Please use airflow.providers.fab.auth_manager.security_manager.override instead | |
| 41733 | Deprecated get_connections from BaseHook | Y | N | N | N | N | N | Removed deprecated function get_connections() function in airflow.hooks.base.BaseHook | |
| 41735 | Deprecated package airflow.kubernetes | N? | N | N | N | N | N | Removed deprecated module airflow.kubernetes | |
| 41736 | Deprecated parameters from core-operators | Y | N | N | N | N | N | Removed deprecated parameters from core-operators. Parameters removed: airflow.operators.datetime.BranchDateTimeOperator: use_task_execution_date airflow.operators.trigger_dagrun.TriggerDagRunOperator: execution_date airflow.operators.weekday.BranchDayOfWeekOperator: use_task_execution_day | |
| 41737 | Deprecated TaskStateTrigger from airflow.triggers.external | Y | N | N | N | N | N | Removed deprecated TaskStateTrigger from airflow.triggers.external_task module | |
| 41739 | Deprecated Backfill options | N | N | N | Y | N | N | Removed backfill job command cli option ignore-first-depends-on-past. Its value always set to True. No replcaement cli option. Removed backfill job command cli option treat-dag-as-regex. Please use treat-dag-id-as-regex instead | |
| 41748 | Deprecated module airflow.hooks.dbapi | Y | N | N | N | N | N | Deprecated module airflow.hooks.dbapi removed. Please use airflow.providers.common.sql.hooks.sql instead | |