This is an automated email from the ASF dual-hosted git repository.

ephraimanierobi pushed a commit to branch v3-1-test
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit 503611e4fbc9330570a40ee4dc8b7c595c80452a
Author: Pierre Jeambrun <[email protected]>
AuthorDate: Wed Jan 14 09:50:40 2026 +0100

    Upgrade react-dom-router in Airflow UI (#60316) (#60456)
---
 airflow-core/src/airflow/ui/package.json           |  10 +-
 airflow-core/src/airflow/ui/pnpm-lock.yaml         | 133 +++++++++++++--------
 .../src/components/DagActions/DeleteDagButton.tsx  |   2 +-
 .../airflow/ui/src/components/DurationChart.tsx    |   4 +-
 .../ui/src/components/SearchDags/SearchDags.tsx    |   2 +-
 .../ui/src/hooks/navigation/useNavigation.ts       |   2 +-
 .../airflow/ui/src/hooks/useRequiredActionTabs.ts  |   2 +-
 .../ui/src/layouts/Details/DagRunSelect.tsx        |   8 +-
 .../airflow/ui/src/layouts/Details/Gantt/utils.ts  |  14 ++-
 airflow-core/src/airflow/ui/src/pages/Error.tsx    |  17 ++-
 airflow-core/src/airflow/ui/src/pages/Security.tsx |   2 +-
 .../src/airflow/ui/src/queries/useTrigger.ts       |   2 +-
 12 files changed, 124 insertions(+), 74 deletions(-)

diff --git a/airflow-core/src/airflow/ui/package.json 
b/airflow-core/src/airflow/ui/package.json
index b364a4fae02..e955b6f4afa 100644
--- a/airflow-core/src/airflow/ui/package.json
+++ b/airflow-core/src/airflow/ui/package.json
@@ -57,7 +57,7 @@
     "react-markdown": "^9.1.0",
     "react-resizable": "^3.0.5",
     "react-resizable-panels": "^2.1.7",
-    "react-router-dom": "^6.30.0",
+    "react-router-dom": "^7.12.0",
     "react-syntax-highlighter": "^15.6.1",
     "remark-gfm": "^4.0.1",
     "use-debounce": "^10.0.4",
@@ -78,6 +78,9 @@
     "@types/react": "^18.3.19",
     "@types/react-dom": "^18.3.5",
     "@types/react-syntax-highlighter": "^15.5.13",
+    "@typescript-eslint/eslint-plugin": "^8.50.0",
+    "@typescript-eslint/parser": "^8.50.0",
+    "@typescript-eslint/utils": "^8.50.0",
     "@vitejs/plugin-react-swc": "^3.9.0",
     "@vitest/coverage-v8": "^2.1.9",
     "eslint": "^9.25.1",
@@ -102,10 +105,7 @@
     "vite": "^5.4.19",
     "vite-plugin-css-injected-by-js": "^3.5.2",
     "vitest": "^2.1.9",
-    "web-worker": "^1.5.0",
-    "@typescript-eslint/eslint-plugin": "^8.50.0",
-    "@typescript-eslint/utils": "^8.50.0",
-    "@typescript-eslint/parser": "^8.50.0"
+    "web-worker": "^1.5.0"
   },
   "pnpm": {
     "onlyBuiltDependencies": [
diff --git a/airflow-core/src/airflow/ui/pnpm-lock.yaml 
b/airflow-core/src/airflow/ui/pnpm-lock.yaml
index ad5f3c2d9f9..661968e3da7 100644
--- a/airflow-core/src/airflow/ui/pnpm-lock.yaml
+++ b/airflow-core/src/airflow/ui/pnpm-lock.yaml
@@ -40,7 +40,7 @@ importers:
         version: 
4.23.12(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])
       '@uiw/react-codemirror':
         specifier: ^4.23.12
-        version: 
4.23.12(@babel/[email protected])(@codemirror/[email protected](@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@lezer/[email protected]))(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])([email protected](@lezer/[email protected]))([email protected]([email protected]))([email protected])
+        version: 
4.23.12(@babel/[email protected])(@codemirror/[email protected](@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@lezer/[email protected]))(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])([email protected](@lezer/[email protected]))([email protected]([email protected]))([email protected])
       '@visx/group':
         specifier: ^3.12.0
         version: 3.12.0([email protected])
@@ -132,8 +132,8 @@ importers:
         specifier: ^2.1.7
         version: 2.1.7([email protected]([email protected]))([email protected])
       react-router-dom:
-        specifier: ^6.30.0
-        version: 6.30.0([email protected]([email protected]))([email protected])
+        specifier: ^7.12.0
+        version: 7.12.0([email protected]([email protected]))([email protected])
       react-syntax-highlighter:
         specifier: ^15.6.1
         version: 15.6.1([email protected])
@@ -307,8 +307,8 @@ packages:
     resolution: {integrity: 
sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
     engines: {node: '>=6.9.0'}
 
-  '@babel/[email protected]':
-    resolution: {integrity: 
sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
+  '@babel/[email protected]':
+    resolution: {integrity: 
sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==}
     engines: {node: '>=6.9.0'}
 
   '@babel/[email protected]':
@@ -347,8 +347,8 @@ packages:
     resolution: {integrity: 
sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
     engines: {node: '>=6.9.0'}
 
-  '@babel/[email protected]':
-    resolution: {integrity: 
sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
+  '@babel/[email protected]':
+    resolution: {integrity: 
sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
     engines: {node: '>=6.9.0'}
 
   '@babel/[email protected]':
@@ -414,6 +414,9 @@ packages:
       '@codemirror/view': ^6.0.0
       '@lezer/common': ^1.0.0
 
+  '@codemirror/[email protected]':
+    resolution: {integrity: 
sha512-uWDWFypNdQmz2y1LaNJzK7fL7TYKLeUAU0npEC685OKTF3KcQ2Vu3klIM78D7I6wGhktme0lh3CuQLv0ZCrD9Q==}
+
   '@codemirror/[email protected]':
     resolution: {integrity: 
sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==}
 
@@ -795,9 +798,15 @@ packages:
   '@lezer/[email protected]':
     resolution: {integrity: 
sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==}
 
+  '@lezer/[email protected]':
+    resolution: {integrity: 
sha512-PNGcolp9hr4PJdXR4ix7XtixDrClScvtSCYW3rQG106oVMOOI+jFb+0+J3mbeL/53g1Zd6s0kJzaw6Ri68GmAA==}
+
   '@lezer/[email protected]':
     resolution: {integrity: 
sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==}
 
+  '@lezer/[email protected]':
+    resolution: {integrity: 
sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==}
+
   '@lezer/[email protected]':
     resolution: {integrity: 
sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==}
 
@@ -847,10 +856,6 @@ packages:
     resolution: {integrity: 
sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==}
     engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
 
-  '@remix-run/[email protected]':
-    resolution: {integrity: 
sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==}
-    engines: {node: '>=14.0.0'}
-
   '@rollup/[email protected]':
     resolution: {integrity: 
sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==}
     cpu: [arm]
@@ -2142,6 +2147,10 @@ packages:
     resolution: {integrity: 
sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
     engines: {node: '>= 0.6'}
 
+  [email protected]:
+    resolution: {integrity: 
sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==}
+    engines: {node: '>=18'}
+
   [email protected]:
     resolution: {integrity: 
sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==}
 
@@ -3218,8 +3227,8 @@ packages:
   [email protected]:
     resolution: {integrity: 
sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
 
-  [email protected]:
-    resolution: {integrity: 
sha512-r8LA6i4LP4EeWOhqBaZZjDWwehd1xUJPCJd9Sv300H0ZmcUER4+JPh7bqqZeqs1o5pgtgvXm+d9UGrB5zZGDiQ==}
+  [email protected]:
+    resolution: {integrity: 
sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==}
     engines: {node: 20 || >=22}
 
   [email protected]:
@@ -3642,8 +3651,8 @@ packages:
     resolution: {integrity: 
sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
     engines: {node: '>=16 || 14 >=14.18'}
 
-  [email protected]:
-    resolution: {integrity: 
sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==}
+  [email protected]:
+    resolution: {integrity: 
sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==}
     engines: {node: 20 || >=22}
 
   [email protected]:
@@ -3879,18 +3888,22 @@ packages:
     peerDependencies:
       react: '>= 16.3'
 
-  [email protected]:
-    resolution: {integrity: 
sha512-x30B78HV5tFk8ex0ITwzC9TTZMua4jGyA9IUlH1JLQYQTFyxr/ZxwOJq7evg1JX1qGVUcvhsmQSKdPncQrjTgA==}
-    engines: {node: '>=14.0.0'}
+  [email protected]:
+    resolution: {integrity: 
sha512-pfO9fiBcpEfX4Tx+iTYKDtPbrSLLCbwJ5EqP+SPYQu1VYCXdy79GSj0wttR0U4cikVdlImZuEZ/9ZNCgoaxwBA==}
+    engines: {node: '>=20.0.0'}
     peerDependencies:
-      react: '>=16.8'
-      react-dom: '>=16.8'
+      react: '>=18'
+      react-dom: '>=18'
 
-  [email protected]:
-    resolution: {integrity: 
sha512-D3X8FyH9nBcTSHGdEKurK7r8OYE1kKFn3d/CF+CoxbSHkxU7o37+Uh7eAHRXr6k2tSExXYO++07PeXJtA/dEhQ==}
-    engines: {node: '>=14.0.0'}
+  [email protected]:
+    resolution: {integrity: 
sha512-kTPDYPFzDVGIIGNLS5VJykK0HfHLY5MF3b+xj0/tTyNYL1gF1qs7u67Z9jEhQk2sQ98SUaHxlG31g1JtF7IfVw==}
+    engines: {node: '>=20.0.0'}
     peerDependencies:
-      react: '>=16.8'
+      react: '>=18'
+      react-dom: '>=18'
+    peerDependenciesMeta:
+      react-dom:
+        optional: true
 
   [email protected]:
     resolution: {integrity: 
sha512-roPEZUL4aRZDx6DcsD+ZNreVl+fM8VsKn0Wtex1v4IazH60ILp5xhdlp464IsEAlJdXeD+BhDAFsBVMfvLQueA==}
@@ -4054,6 +4067,9 @@ packages:
     resolution: {integrity: 
sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==}
     engines: {node: '>= 18'}
 
+  [email protected]:
+    resolution: {integrity: 
sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==}
+
   [email protected]:
     resolution: {integrity: 
sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
     engines: {node: '>= 0.4'}
@@ -4793,9 +4809,9 @@ snapshots:
       js-tokens: 4.0.0
       picocolors: 1.1.1
 
-  '@babel/[email protected]':
+  '@babel/[email protected]':
     dependencies:
-      '@babel/helper-validator-identifier': 7.27.1
+      '@babel/helper-validator-identifier': 7.28.5
       js-tokens: 4.0.0
       picocolors: 1.1.1
 
@@ -4841,7 +4857,7 @@ snapshots:
 
   '@babel/[email protected]': {}
 
-  '@babel/[email protected]': {}
+  '@babel/[email protected]': {}
 
   '@babel/[email protected]':
     dependencies:
@@ -4927,12 +4943,19 @@ snapshots:
       react: 19.1.1
       react-dom: 19.1.1([email protected])
 
-  
'@codemirror/[email protected](@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@lezer/[email protected])':
+  
'@codemirror/[email protected](@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@lezer/[email protected])':
     dependencies:
       '@codemirror/language': 6.11.0
       '@codemirror/state': 6.5.2
       '@codemirror/view': 6.36.4
-      '@lezer/common': 1.2.3
+      '@lezer/common': 1.5.0
+
+  '@codemirror/[email protected]':
+    dependencies:
+      '@codemirror/language': 6.11.0
+      '@codemirror/state': 6.5.2
+      '@codemirror/view': 6.36.4
+      '@lezer/common': 1.5.0
 
   '@codemirror/[email protected]':
     dependencies:
@@ -4976,7 +4999,7 @@ snapshots:
       '@codemirror/language': 6.11.0
       '@codemirror/state': 6.5.2
       '@codemirror/view': 6.36.4
-      '@lezer/highlight': 1.2.1
+      '@lezer/highlight': 1.2.3
 
   '@codemirror/[email protected]':
     dependencies:
@@ -5292,10 +5315,16 @@ snapshots:
 
   '@lezer/[email protected]': {}
 
+  '@lezer/[email protected]': {}
+
   '@lezer/[email protected]':
     dependencies:
       '@lezer/common': 1.2.3
 
+  '@lezer/[email protected]':
+    dependencies:
+      '@lezer/common': 1.5.0
+
   '@lezer/[email protected]':
     dependencies:
       '@lezer/common': 1.2.3
@@ -5360,8 +5389,6 @@ snapshots:
 
   '@pkgr/[email protected]': {}
 
-  '@remix-run/[email protected]': {}
-
   '@rollup/[email protected]':
     optional: true
 
@@ -5523,7 +5550,7 @@ snapshots:
 
   '@testing-library/[email protected]':
     dependencies:
-      '@babel/code-frame': 7.27.1
+      '@babel/code-frame': 7.28.6
       '@babel/runtime': 7.28.4
       '@types/aria-query': 5.0.4
       aria-query: 5.3.0
@@ -5869,9 +5896,9 @@ snapshots:
       '@typescript-eslint/types': 8.50.0
       eslint-visitor-keys: 4.2.1
 
-  
'@uiw/[email protected](@codemirror/[email protected](@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@lezer/[email protected]))(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])':
+  
'@uiw/[email protected](@codemirror/[email protected](@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@lezer/[email protected]))(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])':
     dependencies:
-      '@codemirror/autocomplete': 
6.18.2(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@lezer/[email protected])
+      '@codemirror/autocomplete': 
6.18.2(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@lezer/[email protected])
       '@codemirror/commands': 6.8.1
       '@codemirror/language': 6.11.0
       '@codemirror/lint': 6.8.2
@@ -6208,15 +6235,15 @@ snapshots:
       '@codemirror/state': 6.5.2
       '@codemirror/view': 6.36.4
 
-  
'@uiw/[email protected](@babel/[email protected])(@codemirror/[email protected](@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@lezer/[email protected]))(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])([email protected](@lezer/[email protected]))([email protected]([email protected]))([email protected])':
+  
'@uiw/[email protected](@babel/[email protected])(@codemirror/[email protected](@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@lezer/[email protected]))(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])([email protected](@lezer/[email protected]))([email protected]([email protected]))([email protected])':
     dependencies:
       '@babel/runtime': 7.28.4
       '@codemirror/commands': 6.8.1
       '@codemirror/state': 6.5.2
       '@codemirror/theme-one-dark': 6.1.2
       '@codemirror/view': 6.36.4
-      '@uiw/codemirror-extensions-basic-setup': 
4.23.12(@codemirror/[email protected](@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@lezer/[email protected]))(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])
-      codemirror: 6.0.1(@lezer/[email protected])
+      '@uiw/codemirror-extensions-basic-setup': 
4.23.12(@codemirror/[email protected](@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@lezer/[email protected]))(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])
+      codemirror: 6.0.1(@lezer/[email protected])
       react: 19.1.1
       react-dom: 19.1.1([email protected])
     transitivePeerDependencies:
@@ -7204,10 +7231,10 @@ snapshots:
 
   [email protected]: {}
 
-  [email protected](@lezer/[email protected]):
+  [email protected](@lezer/[email protected]):
     dependencies:
-      '@codemirror/autocomplete': 
6.18.2(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@lezer/[email protected])
-      '@codemirror/commands': 6.8.1
+      '@codemirror/autocomplete': 
6.18.2(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])(@lezer/[email protected])
+      '@codemirror/commands': 6.10.1
       '@codemirror/language': 6.11.0
       '@codemirror/lint': 6.8.2
       '@codemirror/search': 6.5.6
@@ -7252,6 +7279,8 @@ snapshots:
 
   [email protected]: {}
 
+  [email protected]: {}
+
   [email protected]:
     dependencies:
       browserslist: 4.24.4
@@ -8066,7 +8095,7 @@ snapshots:
       minimatch: 10.1.1
       minipass: 7.1.2
       package-json-from-dist: 1.0.1
-      path-scurry: 2.0.0
+      path-scurry: 2.0.1
 
   [email protected]: {}
 
@@ -8523,7 +8552,7 @@ snapshots:
 
   [email protected]: {}
 
-  [email protected]: {}
+  [email protected]: {}
 
   [email protected]: {}
 
@@ -9174,9 +9203,9 @@ snapshots:
       lru-cache: 10.4.3
       minipass: 7.1.2
 
-  [email protected]:
+  [email protected]:
     dependencies:
-      lru-cache: 11.2.1
+      lru-cache: 11.2.4
       minipass: 7.1.2
 
   [email protected]: {}
@@ -9399,17 +9428,19 @@ snapshots:
     transitivePeerDependencies:
       - react-dom
 
-  [email protected]([email protected]([email protected]))([email protected]):
+  [email protected]([email protected]([email protected]))([email protected]):
     dependencies:
-      '@remix-run/router': 1.23.0
       react: 19.1.1
       react-dom: 19.1.1([email protected])
-      react-router: 6.30.0([email protected])
+      react-router: 7.12.0([email protected]([email protected]))([email protected])
 
-  [email protected]([email protected]):
+  [email protected]([email protected]([email protected]))([email protected]):
     dependencies:
-      '@remix-run/router': 1.23.0
+      cookie: 1.1.1
       react: 19.1.1
+      set-cookie-parser: 2.7.2
+    optionalDependencies:
+      react-dom: 19.1.1([email protected])
 
   
[email protected](@types/[email protected])([email protected]([email protected]))([email protected]):
     dependencies:
@@ -9668,6 +9699,8 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
+  [email protected]: {}
+
   [email protected]:
     dependencies:
       define-data-property: 1.1.4
diff --git 
a/airflow-core/src/airflow/ui/src/components/DagActions/DeleteDagButton.tsx 
b/airflow-core/src/airflow/ui/src/components/DagActions/DeleteDagButton.tsx
index c3a73ccd096..c895baebc6b 100644
--- a/airflow-core/src/airflow/ui/src/components/DagActions/DeleteDagButton.tsx
+++ b/airflow-core/src/airflow/ui/src/components/DagActions/DeleteDagButton.tsx
@@ -44,7 +44,7 @@ const DeleteDagButton = ({ dagDisplayName, dagId, width, 
withText = true }: Dele
     onSuccessConfirm: () => {
       onClose();
       if (isOnDagDetailPage) {
-        navigate("/dags");
+        void Promise.resolve(navigate("/dags"));
       }
     },
   });
diff --git a/airflow-core/src/airflow/ui/src/components/DurationChart.tsx 
b/airflow-core/src/airflow/ui/src/components/DurationChart.tsx
index 4c440288eef..186ebb5f6f1 100644
--- a/airflow-core/src/airflow/ui/src/components/DurationChart.tsx
+++ b/airflow-core/src/airflow/ui/src/components/DurationChart.tsx
@@ -187,7 +187,7 @@ export const DurationChart = ({
                 const entry = entries[element.index] as GridRunsResponse | 
undefined;
                 const baseUrl = `/dags/${entry?.dag_id}/runs/${entry?.run_id}`;
 
-                navigate(baseUrl);
+                void Promise.resolve(navigate(baseUrl));
                 break;
               }
               case "Task Instance": {
@@ -206,7 +206,7 @@ export const DurationChart = ({
                   taskId: entry.task_id,
                 });
 
-                navigate(baseUrl);
+                void Promise.resolve(navigate(baseUrl));
                 break;
               }
               default:
diff --git 
a/airflow-core/src/airflow/ui/src/components/SearchDags/SearchDags.tsx 
b/airflow-core/src/airflow/ui/src/components/SearchDags/SearchDags.tsx
index bb0e0f37659..35f95f6415c 100644
--- a/airflow-core/src/airflow/ui/src/components/SearchDags/SearchDags.tsx
+++ b/airflow-core/src/airflow/ui/src/components/SearchDags/SearchDags.tsx
@@ -45,7 +45,7 @@ export const SearchDags = ({
   const onSelect = (selected: SingleValue<Option>) => {
     if (selected) {
       setIsOpen(false);
-      navigate(`/dags/${selected.value}`);
+      void Promise.resolve(navigate(`/dags/${selected.value}`));
     }
   };
 
diff --git a/airflow-core/src/airflow/ui/src/hooks/navigation/useNavigation.ts 
b/airflow-core/src/airflow/ui/src/hooks/navigation/useNavigation.ts
index cab377b313d..bb2f435dbc6 100644
--- a/airflow-core/src/airflow/ui/src/hooks/navigation/useNavigation.ts
+++ b/airflow-core/src/airflow/ui/src/hooks/navigation/useNavigation.ts
@@ -173,7 +173,7 @@ export const useNavigation = ({ onToggleGroup, runs, tasks 
}: UseNavigationProps
       if (run && task) {
         const path = buildPath({ dagId, mapIndex, mode, pathname: 
location.pathname, run, task });
 
-        navigate(path, { replace: true });
+        void Promise.resolve(navigate(path, { replace: true }));
 
         const grid = 
document.querySelector(`[id='grid-${run.run_id}-${task.id}']`);
 
diff --git a/airflow-core/src/airflow/ui/src/hooks/useRequiredActionTabs.ts 
b/airflow-core/src/airflow/ui/src/hooks/useRequiredActionTabs.ts
index c187f7b2415..ce8dd8bb2a9 100644
--- a/airflow-core/src/airflow/ui/src/hooks/useRequiredActionTabs.ts
+++ b/airflow-core/src/airflow/ui/src/hooks/useRequiredActionTabs.ts
@@ -113,7 +113,7 @@ export const useRequiredActionTabs = (
 
   useEffect(() => {
     if (autoRedirect && !hasHitlData && !isLoadingHitl && 
location.pathname.includes("required_actions")) {
-      navigate(redirectPath);
+      void Promise.resolve(navigate(redirectPath));
     }
   }, [autoRedirect, hasHitlData, isLoadingHitl, location.pathname, navigate, 
redirectPath]);
 
diff --git a/airflow-core/src/airflow/ui/src/layouts/Details/DagRunSelect.tsx 
b/airflow-core/src/airflow/ui/src/layouts/Details/DagRunSelect.tsx
index 459a281ae70..f2c395b0dc5 100644
--- a/airflow-core/src/airflow/ui/src/layouts/Details/DagRunSelect.tsx
+++ b/airflow-core/src/airflow/ui/src/layouts/Details/DagRunSelect.tsx
@@ -55,9 +55,11 @@ export const DagRunSelect = forwardRef<HTMLDivElement, 
DagRunSelectProps>(({ lim
   const selectDagRun = ({ items }: SelectValueChangeDetails<DagRunSelected>) 
=> {
     const runPartialPath = items.length > 0 ? `/runs/${items[0]?.run.run_id}` 
: "";
 
-    navigate({
-      pathname: `/dags/${dagId}${runPartialPath}/${taskId === undefined ? "" : 
`tasks/${taskId}`}`,
-    });
+    void Promise.resolve(
+      navigate({
+        pathname: `/dags/${dagId}${runPartialPath}/${taskId === undefined ? "" 
: `tasks/${taskId}`}`,
+      }),
+    );
   };
 
   const selectedRun = (gridRuns ?? []).find((dr) => dr.run_id === runId);
diff --git a/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/utils.ts 
b/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/utils.ts
index 5cb5c25c660..87757a7fcf9 100644
--- a/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/utils.ts
+++ b/airflow-core/src/airflow/ui/src/layouts/Details/Gantt/utils.ts
@@ -75,12 +75,14 @@ export const createHandleBarClick =
           taskId,
         });
 
-        navigate(
-          {
-            pathname: taskUrl,
-            search: location.search,
-          },
-          { replace: true },
+        void Promise.resolve(
+          navigate(
+            {
+              pathname: taskUrl,
+              search: location.search,
+            },
+            { replace: true },
+          ),
         );
       }
     }
diff --git a/airflow-core/src/airflow/ui/src/pages/Error.tsx 
b/airflow-core/src/airflow/ui/src/pages/Error.tsx
index 28fa9ec84af..fb10bdb212a 100644
--- a/airflow-core/src/airflow/ui/src/pages/Error.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/Error.tsx
@@ -64,10 +64,23 @@ export const ErrorPage = () => {
           </VStack>
 
           <HStack gap={4}>
-            <Button colorPalette="brand" onClick={() => navigate(-1)} 
size="lg">
+            <Button
+              colorPalette="brand"
+              onClick={() => {
+                void Promise.resolve(navigate(-1));
+              }}
+              size="lg"
+            >
               {translate("error.back")}
             </Button>
-            <Button colorPalette="brand" onClick={() => navigate("/")} 
size="lg" variant="outline">
+            <Button
+              colorPalette="brand"
+              onClick={() => {
+                void Promise.resolve(navigate("/"));
+              }}
+              size="lg"
+              variant="outline"
+            >
               {translate("error.home")}
             </Button>
           </HStack>
diff --git a/airflow-core/src/airflow/ui/src/pages/Security.tsx 
b/airflow-core/src/airflow/ui/src/pages/Security.tsx
index 67aefc1dd7a..011c1018686 100644
--- a/airflow-core/src/airflow/ui/src/pages/Security.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/Security.tsx
@@ -44,7 +44,7 @@ export const Security = () => {
     const iframe: HTMLIFrameElement | null = 
document.querySelector("#security-iframe");
 
     if (iframe?.contentWindow && 
!iframe.contentWindow.location.pathname.startsWith("/auth/")) {
-      navigate("/");
+      void Promise.resolve(navigate("/"));
     }
   };
 
diff --git a/airflow-core/src/airflow/ui/src/queries/useTrigger.ts 
b/airflow-core/src/airflow/ui/src/queries/useTrigger.ts
index 933f59ad32e..ee6fae94909 100644
--- a/airflow-core/src/airflow/ui/src/queries/useTrigger.ts
+++ b/airflow-core/src/airflow/ui/src/queries/useTrigger.ts
@@ -58,7 +58,7 @@ export const useTrigger = ({ dagId, onSuccessConfirm }: { 
dagId: string; onSucce
 
     // Only redirect if we're already on the dag page
     if (selectedDagId === dagRun.dag_id) {
-      navigate(`/dags/${dagRun.dag_id}/runs/${dagRun.dag_run_id}`);
+      void 
Promise.resolve(navigate(`/dags/${dagRun.dag_id}/runs/${dagRun.dag_run_id}`));
     }
   };
 

Reply via email to