You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by "hibiki1980 (via GitHub)" <gi...@apache.org> on 2025/09/29 10:19:39 UTC
[D] Airflow 3 UI breaks when mounted as a FastAPI sub-application due to static assets and root_path handling [airflow]
GitHub user hibiki1980 created a discussion: Airflow 3 UI breaks when mounted as a FastAPI sub-application due to static assets and root_path handling
I'm encountering an issue when trying to mount Airflow 3 as a sub-application inside a FastAPI app. The Airflow UI breaks and static assets are not loaded correctly, resulting in a broken interface.
In Airflow 2, this integration worked fine by setting the webserver_url environment variable to specify the base path. However, in Airflow 3, this variable seems ignored or ineffective.
After inspecting the Airflow 3 code, particularly airflow.api_fastapi.app, I noticed that the root_path is set based on the base_url configuration. When running the Airflow webserver standalone and setting the base_url to something like /airflow, everything works as expected.
However, mounting Airflow 3 as a subapp under FastAPI at a subpath (e.g., /airflow) breaks the UI. The problem appears related to React's routing and the handling of static files under a subpath. React does not seem to respect the root_path set via base_url when the app is embedded inside another FastAPI app.
Minimal example of the FastAPI mounting:
```
from fastapi import FastAPI
from airflow.api_fastapi.app import create_app as create_airflow_app
app = FastAPI()
# Create the Airflow app instance
airflow_app = create_airflow_app()
# Mount Airflow under /airflow
app.mount("/airflow", airflow_app)
```
Any guidance or suggestions to address this would be greatly appreciated.
GitHub link: https://github.com/apache/airflow/discussions/56201
----
This is an automatically sent email for commits@airflow.apache.org.
To unsubscribe, please send an email to: commits-unsubscribe@airflow.apache.org