Add virtualization to grid view - #60241

Merged
bbovenzi merged 6 commits into
apache:mainfrom
astronomer:virtualize-grid
Jan 8, 2026
Merged

Add virtualization to grid view#60241
bbovenzi merged 6 commits into
apache:mainfrom
astronomer:virtualize-grid

Conversation

@bbovenzi

@bbovenzibbovenzi commented Jan 7, 2026

Copy link
Copy Markdown
Contributor

Virtualize the grid view to improve rendering performance on very large dags.

Before (10 dag runs with 1000 tasks):
Screenshot 2026-01-07 at 4 32 40 PM

After (10 dag runs with 1000 tasks):
Screenshot 2026-01-07 at 4 55 05 PM

Results go from unusable to slow. I'll look for other improvements in follow up PRs. Notably some of the API calls still take 1-3 seconds.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@boring-cyborgboring-cyborgBot added the area:UI Related to UI/UX. For Frontend Developers. label Jan 7, 2026
Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/Bar.tsx Outdated
Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/Grid.tsx Outdated
@dheerajturaga

Copy link
Copy Markdown
Member

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Grid View misaligned

here's my dag

"""DAG for testing Grid View performance with 5000 tasks.This DAG creates a complex structure with:- 50 top-level task groups- Each group contains 100 tasks organized in 10 sub-groups- Mix of sequential and parallel dependencies- Total: 5000 EmptyOperator tasks"""fromairflow.sdkimportDAGfromairflow.sdk.definitions.taskgroupimportTaskGroupfromairflow.operators.emptyimportEmptyOperatorfromdatetimeimportdatetimewithDAG(
dag_id="grid_view_performance_test_5000_tasks",
start_date=datetime(2025, 1, 1),
schedule=None,
catchup=False,
tags=["performance", "test", "grid_view"],
description="Complex DAG with 5000 tasks to test grid view performance",
) asdag:
# Entry point taskstart=EmptyOperator(task_id="start")
# Exit point taskend=EmptyOperator(task_id="end")
previous_group_final_tasks= [start]
# Create 50 main task groupsformain_group_idxinrange(50):
withTaskGroup(group_id=f"main_group_{main_group_idx}") asmain_group:
# Entry task for this main groupgroup_start=EmptyOperator(task_id="group_start")
# Exit task for this main groupgroup_end=EmptyOperator(task_id="group_end")
sub_group_final_tasks= []
# Create 10 sub-groups within each main groupforsub_group_idxinrange(10):
withTaskGroup(group_id=f"sub_group_{sub_group_idx}") assub_group:
# Create 10 tasks per sub-group (10 sub-groups * 10 tasks = 100 tasks per main group)sub_tasks= []
fortask_idxinrange(10):
task=EmptyOperator(task_id=f"task_{task_idx}")
sub_tasks.append(task)
# Create dependencies within sub-group# First 5 tasks run in parallel, then next 5 tasks depend on themforiinrange(5, 10):
sub_tasks[i-5] >>sub_tasks[i]
# Last task of sub-groupsub_group_final=sub_tasks[-1]
# Connect group_start to each sub-group's first tasksgroup_start>>sub_tasks[0]
group_start>>sub_tasks[1]
# Collect final tasks from each sub-groupsub_group_final_tasks.append(sub_group_final)
# Connect all sub-group final tasks to group_endsub_group_final_tasks>>group_end# Connect previous groups to current group# Create some inter-group dependencies for complexityifmain_group_idx%5==0:
# Every 5th group depends on all previous group tasksprevious_group_final_tasks>>group_startelse:
# Other groups depend on the immediately previous groupprevious_group_final_tasks[-1] >>group_start# Track this group's final taskprevious_group_final_tasks.append(group_end)
# Connect all final group tasks to the end taskprevious_group_final_tasks>>end

@bbovenzi

Copy link
Copy Markdown
ContributorAuthor

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Thanks. What OS+browser are you on?

@pierrejeambrunpierrejeambrun left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Super cool! Tested locally and working as expected for me.

Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx Outdated
….tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@dheerajturaga

Copy link
Copy Markdown
Member

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Thanks. What OS+browser are you on?

chrome with airflow running on ubuntu (wsl) via breeze

@bbovenzi

bbovenzi commented Jan 8, 2026

Copy link
Copy Markdown
ContributorAuthor

@dheerajturaga Fixed

Screenshot 2026-01-08 at 1 14 38 PM

@bbovenzibbovenzi mentioned this pull request Jan 8, 2026
@dheerajturaga

Copy link
Copy Markdown
Member

Thanks @bbovenzi , for implementing this! Very Cool! this is definitely a very big improvement (I'm seeing 4x improvement 8s -> 2s)

Old:
Bad performance times - 1

new:
good performance times - 1

@bbovenzi
bbovenzi merged commit 7a64304 into apache:mainJan 8, 2026
128 checks passed
@bbovenzi
bbovenzi deleted the virtualize-grid branch January 8, 2026 19:59
github-actionsBot pushed a commit that referenced this pull request Jan 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@github-actions

Copy link
Copy Markdown
Contributor

Backport successfully created: v3-1-test

StatusBranchResult
v3-1-testPR Link

@kaxil

kaxil commented Jan 8, 2026

Copy link
Copy Markdown
Member

#protm

bbovenzi added a commit that referenced this pull request Jan 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>

@jscheffljscheffl left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wow. Impressive!

@choo121600

Copy link
Copy Markdown
Member

Wow Coool!😲

stegololz pushed a commit to stegololz/airflow that referenced this pull request Jan 9, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 13, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 14, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 16, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@pierrejeambrunpierrejeambrun mentioned this pull request Feb 16, 2026
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:UIRelated to UI/UX. For Frontend Developers.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@bbovenzi@dheerajturaga@kaxil@choo121600@pierrejeambrun@jscheffl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Add virtualization to grid view - #60241

Merged
bbovenzi merged 6 commits into
apache:mainfrom
astronomer:virtualize-grid
Jan 8, 2026
Merged

Add virtualization to grid view#60241
bbovenzi merged 6 commits into
apache:mainfrom
astronomer:virtualize-grid

Conversation

@bbovenzi

@bbovenzibbovenzi commented Jan 7, 2026

Copy link
Copy Markdown
Contributor

Virtualize the grid view to improve rendering performance on very large dags.

Before (10 dag runs with 1000 tasks):
Screenshot 2026-01-07 at 4 32 40 PM

After (10 dag runs with 1000 tasks):
Screenshot 2026-01-07 at 4 55 05 PM

Results go from unusable to slow. I'll look for other improvements in follow up PRs. Notably some of the API calls still take 1-3 seconds.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@boring-cyborgboring-cyborgBot added the area:UI Related to UI/UX. For Frontend Developers. label Jan 7, 2026
Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/Bar.tsx Outdated
Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/Grid.tsx Outdated
@dheerajturaga

Copy link
Copy Markdown
Member

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Grid View misaligned

here's my dag

"""DAG for testing Grid View performance with 5000 tasks.This DAG creates a complex structure with:- 50 top-level task groups- Each group contains 100 tasks organized in 10 sub-groups- Mix of sequential and parallel dependencies- Total: 5000 EmptyOperator tasks"""fromairflow.sdkimportDAGfromairflow.sdk.definitions.taskgroupimportTaskGroupfromairflow.operators.emptyimportEmptyOperatorfromdatetimeimportdatetimewithDAG(
dag_id="grid_view_performance_test_5000_tasks",
start_date=datetime(2025, 1, 1),
schedule=None,
catchup=False,
tags=["performance", "test", "grid_view"],
description="Complex DAG with 5000 tasks to test grid view performance",
) asdag:
# Entry point taskstart=EmptyOperator(task_id="start")
# Exit point taskend=EmptyOperator(task_id="end")
previous_group_final_tasks= [start]
# Create 50 main task groupsformain_group_idxinrange(50):
withTaskGroup(group_id=f"main_group_{main_group_idx}") asmain_group:
# Entry task for this main groupgroup_start=EmptyOperator(task_id="group_start")
# Exit task for this main groupgroup_end=EmptyOperator(task_id="group_end")
sub_group_final_tasks= []
# Create 10 sub-groups within each main groupforsub_group_idxinrange(10):
withTaskGroup(group_id=f"sub_group_{sub_group_idx}") assub_group:
# Create 10 tasks per sub-group (10 sub-groups * 10 tasks = 100 tasks per main group)sub_tasks= []
fortask_idxinrange(10):
task=EmptyOperator(task_id=f"task_{task_idx}")
sub_tasks.append(task)
# Create dependencies within sub-group# First 5 tasks run in parallel, then next 5 tasks depend on themforiinrange(5, 10):
sub_tasks[i-5] >>sub_tasks[i]
# Last task of sub-groupsub_group_final=sub_tasks[-1]
# Connect group_start to each sub-group's first tasksgroup_start>>sub_tasks[0]
group_start>>sub_tasks[1]
# Collect final tasks from each sub-groupsub_group_final_tasks.append(sub_group_final)
# Connect all sub-group final tasks to group_endsub_group_final_tasks>>group_end# Connect previous groups to current group# Create some inter-group dependencies for complexityifmain_group_idx%5==0:
# Every 5th group depends on all previous group tasksprevious_group_final_tasks>>group_startelse:
# Other groups depend on the immediately previous groupprevious_group_final_tasks[-1] >>group_start# Track this group's final taskprevious_group_final_tasks.append(group_end)
# Connect all final group tasks to the end taskprevious_group_final_tasks>>end

@bbovenzi

Copy link
Copy Markdown
ContributorAuthor

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Thanks. What OS+browser are you on?

@pierrejeambrunpierrejeambrun left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Super cool! Tested locally and working as expected for me.

Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx Outdated
….tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@dheerajturaga

Copy link
Copy Markdown
Member

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Thanks. What OS+browser are you on?

chrome with airflow running on ubuntu (wsl) via breeze

@bbovenzi

bbovenzi commented Jan 8, 2026

Copy link
Copy Markdown
ContributorAuthor

@dheerajturaga Fixed

Screenshot 2026-01-08 at 1 14 38 PM

@bbovenzibbovenzi mentioned this pull request Jan 8, 2026
@dheerajturaga

Copy link
Copy Markdown
Member

Thanks @bbovenzi , for implementing this! Very Cool! this is definitely a very big improvement (I'm seeing 4x improvement 8s -> 2s)

Old:
Bad performance times - 1

new:
good performance times - 1

@bbovenzi
bbovenzi merged commit 7a64304 into apache:mainJan 8, 2026
128 checks passed
@bbovenzi
bbovenzi deleted the virtualize-grid branch January 8, 2026 19:59
github-actionsBot pushed a commit that referenced this pull request Jan 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@github-actions

Copy link
Copy Markdown
Contributor

Backport successfully created: v3-1-test

StatusBranchResult
v3-1-testPR Link

@kaxil

kaxil commented Jan 8, 2026

Copy link
Copy Markdown
Member

#protm

bbovenzi added a commit that referenced this pull request Jan 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>

@jscheffljscheffl left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wow. Impressive!

@choo121600

Copy link
Copy Markdown
Member

Wow Coool!😲

stegololz pushed a commit to stegololz/airflow that referenced this pull request Jan 9, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 13, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 14, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 16, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@pierrejeambrunpierrejeambrun mentioned this pull request Feb 16, 2026
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:UIRelated to UI/UX. For Frontend Developers.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@bbovenzi@dheerajturaga@kaxil@choo121600@pierrejeambrun@jscheffl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add virtualization to grid view - #60241

Merged
bbovenzi merged 6 commits into
apache:mainfrom
astronomer:virtualize-grid
Jan 8, 2026
Merged

Add virtualization to grid view#60241
bbovenzi merged 6 commits into
apache:mainfrom
astronomer:virtualize-grid

Conversation

@bbovenzi

@bbovenzibbovenzi commented Jan 7, 2026

Copy link
Copy Markdown
Contributor

Virtualize the grid view to improve rendering performance on very large dags.

Before (10 dag runs with 1000 tasks):
Screenshot 2026-01-07 at 4 32 40 PM

After (10 dag runs with 1000 tasks):
Screenshot 2026-01-07 at 4 55 05 PM

Results go from unusable to slow. I'll look for other improvements in follow up PRs. Notably some of the API calls still take 1-3 seconds.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@boring-cyborgboring-cyborgBot added the area:UI Related to UI/UX. For Frontend Developers. label Jan 7, 2026
Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/Bar.tsx Outdated
Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/Grid.tsx Outdated
@dheerajturaga

Copy link
Copy Markdown
Member

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Grid View misaligned

here's my dag

"""DAG for testing Grid View performance with 5000 tasks.This DAG creates a complex structure with:- 50 top-level task groups- Each group contains 100 tasks organized in 10 sub-groups- Mix of sequential and parallel dependencies- Total: 5000 EmptyOperator tasks"""fromairflow.sdkimportDAGfromairflow.sdk.definitions.taskgroupimportTaskGroupfromairflow.operators.emptyimportEmptyOperatorfromdatetimeimportdatetimewithDAG(
dag_id="grid_view_performance_test_5000_tasks",
start_date=datetime(2025, 1, 1),
schedule=None,
catchup=False,
tags=["performance", "test", "grid_view"],
description="Complex DAG with 5000 tasks to test grid view performance",
) asdag:
# Entry point taskstart=EmptyOperator(task_id="start")
# Exit point taskend=EmptyOperator(task_id="end")
previous_group_final_tasks= [start]
# Create 50 main task groupsformain_group_idxinrange(50):
withTaskGroup(group_id=f"main_group_{main_group_idx}") asmain_group:
# Entry task for this main groupgroup_start=EmptyOperator(task_id="group_start")
# Exit task for this main groupgroup_end=EmptyOperator(task_id="group_end")
sub_group_final_tasks= []
# Create 10 sub-groups within each main groupforsub_group_idxinrange(10):
withTaskGroup(group_id=f"sub_group_{sub_group_idx}") assub_group:
# Create 10 tasks per sub-group (10 sub-groups * 10 tasks = 100 tasks per main group)sub_tasks= []
fortask_idxinrange(10):
task=EmptyOperator(task_id=f"task_{task_idx}")
sub_tasks.append(task)
# Create dependencies within sub-group# First 5 tasks run in parallel, then next 5 tasks depend on themforiinrange(5, 10):
sub_tasks[i-5] >>sub_tasks[i]
# Last task of sub-groupsub_group_final=sub_tasks[-1]
# Connect group_start to each sub-group's first tasksgroup_start>>sub_tasks[0]
group_start>>sub_tasks[1]
# Collect final tasks from each sub-groupsub_group_final_tasks.append(sub_group_final)
# Connect all sub-group final tasks to group_endsub_group_final_tasks>>group_end# Connect previous groups to current group# Create some inter-group dependencies for complexityifmain_group_idx%5==0:
# Every 5th group depends on all previous group tasksprevious_group_final_tasks>>group_startelse:
# Other groups depend on the immediately previous groupprevious_group_final_tasks[-1] >>group_start# Track this group's final taskprevious_group_final_tasks.append(group_end)
# Connect all final group tasks to the end taskprevious_group_final_tasks>>end

@bbovenzi

Copy link
Copy Markdown
ContributorAuthor

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Thanks. What OS+browser are you on?

@pierrejeambrunpierrejeambrun left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Super cool! Tested locally and working as expected for me.

Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx Outdated
….tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@dheerajturaga

Copy link
Copy Markdown
Member

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Thanks. What OS+browser are you on?

chrome with airflow running on ubuntu (wsl) via breeze

@bbovenzi

bbovenzi commented Jan 8, 2026

Copy link
Copy Markdown
ContributorAuthor

@dheerajturaga Fixed

Screenshot 2026-01-08 at 1 14 38 PM

@bbovenzibbovenzi mentioned this pull request Jan 8, 2026
@dheerajturaga

Copy link
Copy Markdown
Member

Thanks @bbovenzi , for implementing this! Very Cool! this is definitely a very big improvement (I'm seeing 4x improvement 8s -> 2s)

Old:
Bad performance times - 1

new:
good performance times - 1

@bbovenzi
bbovenzi merged commit 7a64304 into apache:mainJan 8, 2026
128 checks passed
@bbovenzi
bbovenzi deleted the virtualize-grid branch January 8, 2026 19:59
github-actionsBot pushed a commit that referenced this pull request Jan 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@github-actions

Copy link
Copy Markdown
Contributor

Backport successfully created: v3-1-test

StatusBranchResult
v3-1-testPR Link

@kaxil

kaxil commented Jan 8, 2026

Copy link
Copy Markdown
Member

#protm

bbovenzi added a commit that referenced this pull request Jan 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>

@jscheffljscheffl left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wow. Impressive!

@choo121600

Copy link
Copy Markdown
Member

Wow Coool!😲

stegololz pushed a commit to stegololz/airflow that referenced this pull request Jan 9, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 13, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 14, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 16, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@pierrejeambrunpierrejeambrun mentioned this pull request Feb 16, 2026
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:UIRelated to UI/UX. For Frontend Developers.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@bbovenzi@dheerajturaga@kaxil@choo121600@pierrejeambrun@jscheffl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add virtualization to grid view - #60241

Merged
bbovenzi merged 6 commits into
apache:mainfrom
astronomer:virtualize-grid
Jan 8, 2026
Merged

Add virtualization to grid view#60241
bbovenzi merged 6 commits into
apache:mainfrom
astronomer:virtualize-grid

Conversation

@bbovenzi

@bbovenzibbovenzi commented Jan 7, 2026

Copy link
Copy Markdown
Contributor

Virtualize the grid view to improve rendering performance on very large dags.

Before (10 dag runs with 1000 tasks):
Screenshot 2026-01-07 at 4 32 40 PM

After (10 dag runs with 1000 tasks):
Screenshot 2026-01-07 at 4 55 05 PM

Results go from unusable to slow. I'll look for other improvements in follow up PRs. Notably some of the API calls still take 1-3 seconds.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@boring-cyborgboring-cyborgBot added the area:UI Related to UI/UX. For Frontend Developers. label Jan 7, 2026
Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/Bar.tsx Outdated
Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/Grid.tsx Outdated
@dheerajturaga

Copy link
Copy Markdown
Member

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Grid View misaligned

here's my dag

"""DAG for testing Grid View performance with 5000 tasks.This DAG creates a complex structure with:- 50 top-level task groups- Each group contains 100 tasks organized in 10 sub-groups- Mix of sequential and parallel dependencies- Total: 5000 EmptyOperator tasks"""fromairflow.sdkimportDAGfromairflow.sdk.definitions.taskgroupimportTaskGroupfromairflow.operators.emptyimportEmptyOperatorfromdatetimeimportdatetimewithDAG(
dag_id="grid_view_performance_test_5000_tasks",
start_date=datetime(2025, 1, 1),
schedule=None,
catchup=False,
tags=["performance", "test", "grid_view"],
description="Complex DAG with 5000 tasks to test grid view performance",
) asdag:
# Entry point taskstart=EmptyOperator(task_id="start")
# Exit point taskend=EmptyOperator(task_id="end")
previous_group_final_tasks= [start]
# Create 50 main task groupsformain_group_idxinrange(50):
withTaskGroup(group_id=f"main_group_{main_group_idx}") asmain_group:
# Entry task for this main groupgroup_start=EmptyOperator(task_id="group_start")
# Exit task for this main groupgroup_end=EmptyOperator(task_id="group_end")
sub_group_final_tasks= []
# Create 10 sub-groups within each main groupforsub_group_idxinrange(10):
withTaskGroup(group_id=f"sub_group_{sub_group_idx}") assub_group:
# Create 10 tasks per sub-group (10 sub-groups * 10 tasks = 100 tasks per main group)sub_tasks= []
fortask_idxinrange(10):
task=EmptyOperator(task_id=f"task_{task_idx}")
sub_tasks.append(task)
# Create dependencies within sub-group# First 5 tasks run in parallel, then next 5 tasks depend on themforiinrange(5, 10):
sub_tasks[i-5] >>sub_tasks[i]
# Last task of sub-groupsub_group_final=sub_tasks[-1]
# Connect group_start to each sub-group's first tasksgroup_start>>sub_tasks[0]
group_start>>sub_tasks[1]
# Collect final tasks from each sub-groupsub_group_final_tasks.append(sub_group_final)
# Connect all sub-group final tasks to group_endsub_group_final_tasks>>group_end# Connect previous groups to current group# Create some inter-group dependencies for complexityifmain_group_idx%5==0:
# Every 5th group depends on all previous group tasksprevious_group_final_tasks>>group_startelse:
# Other groups depend on the immediately previous groupprevious_group_final_tasks[-1] >>group_start# Track this group's final taskprevious_group_final_tasks.append(group_end)
# Connect all final group tasks to the end taskprevious_group_final_tasks>>end

@bbovenzi

Copy link
Copy Markdown
ContributorAuthor

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Thanks. What OS+browser are you on?

@pierrejeambrunpierrejeambrun left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Super cool! Tested locally and working as expected for me.

Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx Outdated
….tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@dheerajturaga

Copy link
Copy Markdown
Member

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Thanks. What OS+browser are you on?

chrome with airflow running on ubuntu (wsl) via breeze

@bbovenzi

bbovenzi commented Jan 8, 2026

Copy link
Copy Markdown
ContributorAuthor

@dheerajturaga Fixed

Screenshot 2026-01-08 at 1 14 38 PM

@bbovenzibbovenzi mentioned this pull request Jan 8, 2026
@dheerajturaga

Copy link
Copy Markdown
Member

Thanks @bbovenzi , for implementing this! Very Cool! this is definitely a very big improvement (I'm seeing 4x improvement 8s -> 2s)

Old:
Bad performance times - 1

new:
good performance times - 1

@bbovenzi
bbovenzi merged commit 7a64304 into apache:mainJan 8, 2026
128 checks passed
@bbovenzi
bbovenzi deleted the virtualize-grid branch January 8, 2026 19:59
github-actionsBot pushed a commit that referenced this pull request Jan 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@github-actions

Copy link
Copy Markdown
Contributor

Backport successfully created: v3-1-test

StatusBranchResult
v3-1-testPR Link

@kaxil

kaxil commented Jan 8, 2026

Copy link
Copy Markdown
Member

#protm

bbovenzi added a commit that referenced this pull request Jan 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>

@jscheffljscheffl left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wow. Impressive!

@choo121600

Copy link
Copy Markdown
Member

Wow Coool!😲

stegololz pushed a commit to stegololz/airflow that referenced this pull request Jan 9, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 13, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 14, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 16, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@pierrejeambrunpierrejeambrun mentioned this pull request Feb 16, 2026
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:UIRelated to UI/UX. For Frontend Developers.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@bbovenzi@dheerajturaga@kaxil@choo121600@pierrejeambrun@jscheffl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Add virtualization to grid view - #60241

Merged
bbovenzi merged 6 commits into
apache:mainfrom
astronomer:virtualize-grid
Jan 8, 2026
Merged

Add virtualization to grid view#60241
bbovenzi merged 6 commits into
apache:mainfrom
astronomer:virtualize-grid

Conversation

@bbovenzi

@bbovenzibbovenzi commented Jan 7, 2026

Copy link
Copy Markdown
Contributor

Virtualize the grid view to improve rendering performance on very large dags.

Before (10 dag runs with 1000 tasks):
Screenshot 2026-01-07 at 4 32 40 PM

After (10 dag runs with 1000 tasks):
Screenshot 2026-01-07 at 4 55 05 PM

Results go from unusable to slow. I'll look for other improvements in follow up PRs. Notably some of the API calls still take 1-3 seconds.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@boring-cyborgboring-cyborgBot added the area:UI Related to UI/UX. For Frontend Developers. label Jan 7, 2026
Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/Bar.tsx Outdated
Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/Grid.tsx Outdated
@dheerajturaga

Copy link
Copy Markdown
Member

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Grid View misaligned

here's my dag

"""DAG for testing Grid View performance with 5000 tasks.This DAG creates a complex structure with:- 50 top-level task groups- Each group contains 100 tasks organized in 10 sub-groups- Mix of sequential and parallel dependencies- Total: 5000 EmptyOperator tasks"""fromairflow.sdkimportDAGfromairflow.sdk.definitions.taskgroupimportTaskGroupfromairflow.operators.emptyimportEmptyOperatorfromdatetimeimportdatetimewithDAG(
dag_id="grid_view_performance_test_5000_tasks",
start_date=datetime(2025, 1, 1),
schedule=None,
catchup=False,
tags=["performance", "test", "grid_view"],
description="Complex DAG with 5000 tasks to test grid view performance",
) asdag:
# Entry point taskstart=EmptyOperator(task_id="start")
# Exit point taskend=EmptyOperator(task_id="end")
previous_group_final_tasks= [start]
# Create 50 main task groupsformain_group_idxinrange(50):
withTaskGroup(group_id=f"main_group_{main_group_idx}") asmain_group:
# Entry task for this main groupgroup_start=EmptyOperator(task_id="group_start")
# Exit task for this main groupgroup_end=EmptyOperator(task_id="group_end")
sub_group_final_tasks= []
# Create 10 sub-groups within each main groupforsub_group_idxinrange(10):
withTaskGroup(group_id=f"sub_group_{sub_group_idx}") assub_group:
# Create 10 tasks per sub-group (10 sub-groups * 10 tasks = 100 tasks per main group)sub_tasks= []
fortask_idxinrange(10):
task=EmptyOperator(task_id=f"task_{task_idx}")
sub_tasks.append(task)
# Create dependencies within sub-group# First 5 tasks run in parallel, then next 5 tasks depend on themforiinrange(5, 10):
sub_tasks[i-5] >>sub_tasks[i]
# Last task of sub-groupsub_group_final=sub_tasks[-1]
# Connect group_start to each sub-group's first tasksgroup_start>>sub_tasks[0]
group_start>>sub_tasks[1]
# Collect final tasks from each sub-groupsub_group_final_tasks.append(sub_group_final)
# Connect all sub-group final tasks to group_endsub_group_final_tasks>>group_end# Connect previous groups to current group# Create some inter-group dependencies for complexityifmain_group_idx%5==0:
# Every 5th group depends on all previous group tasksprevious_group_final_tasks>>group_startelse:
# Other groups depend on the immediately previous groupprevious_group_final_tasks[-1] >>group_start# Track this group's final taskprevious_group_final_tasks.append(group_end)
# Connect all final group tasks to the end taskprevious_group_final_tasks>>end

@bbovenzi

Copy link
Copy Markdown
ContributorAuthor

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Thanks. What OS+browser are you on?

@pierrejeambrunpierrejeambrun left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Super cool! Tested locally and working as expected for me.

Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx Outdated
….tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@dheerajturaga

Copy link
Copy Markdown
Member

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Thanks. What OS+browser are you on?

chrome with airflow running on ubuntu (wsl) via breeze

@bbovenzi

bbovenzi commented Jan 8, 2026

Copy link
Copy Markdown
ContributorAuthor

@dheerajturaga Fixed

Screenshot 2026-01-08 at 1 14 38 PM

@bbovenzibbovenzi mentioned this pull request Jan 8, 2026
@dheerajturaga

Copy link
Copy Markdown
Member

Thanks @bbovenzi , for implementing this! Very Cool! this is definitely a very big improvement (I'm seeing 4x improvement 8s -> 2s)

Old:
Bad performance times - 1

new:
good performance times - 1

@bbovenzi
bbovenzi merged commit 7a64304 into apache:mainJan 8, 2026
128 checks passed
@bbovenzi
bbovenzi deleted the virtualize-grid branch January 8, 2026 19:59
github-actionsBot pushed a commit that referenced this pull request Jan 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@github-actions

Copy link
Copy Markdown
Contributor

Backport successfully created: v3-1-test

StatusBranchResult
v3-1-testPR Link

@kaxil

kaxil commented Jan 8, 2026

Copy link
Copy Markdown
Member

#protm

bbovenzi added a commit that referenced this pull request Jan 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>

@jscheffljscheffl left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wow. Impressive!

@choo121600

Copy link
Copy Markdown
Member

Wow Coool!😲

stegololz pushed a commit to stegololz/airflow that referenced this pull request Jan 9, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 13, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 14, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 16, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@pierrejeambrunpierrejeambrun mentioned this pull request Feb 16, 2026
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:UIRelated to UI/UX. For Frontend Developers.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@bbovenzi@dheerajturaga@kaxil@choo121600@pierrejeambrun@jscheffl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add virtualization to grid view - #60241

Merged
bbovenzi merged 6 commits into
apache:mainfrom
astronomer:virtualize-grid
Jan 8, 2026
Merged

Add virtualization to grid view#60241
bbovenzi merged 6 commits into
apache:mainfrom
astronomer:virtualize-grid

Conversation

@bbovenzi

@bbovenzibbovenzi commented Jan 7, 2026

Copy link
Copy Markdown
Contributor

Virtualize the grid view to improve rendering performance on very large dags.

Before (10 dag runs with 1000 tasks):
Screenshot 2026-01-07 at 4 32 40 PM

After (10 dag runs with 1000 tasks):
Screenshot 2026-01-07 at 4 55 05 PM

Results go from unusable to slow. I'll look for other improvements in follow up PRs. Notably some of the API calls still take 1-3 seconds.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@boring-cyborgboring-cyborgBot added the area:UI Related to UI/UX. For Frontend Developers. label Jan 7, 2026
Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/Bar.tsx Outdated
Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/Grid.tsx Outdated
@dheerajturaga

Copy link
Copy Markdown
Member

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Grid View misaligned

here's my dag

"""DAG for testing Grid View performance with 5000 tasks.This DAG creates a complex structure with:- 50 top-level task groups- Each group contains 100 tasks organized in 10 sub-groups- Mix of sequential and parallel dependencies- Total: 5000 EmptyOperator tasks"""fromairflow.sdkimportDAGfromairflow.sdk.definitions.taskgroupimportTaskGroupfromairflow.operators.emptyimportEmptyOperatorfromdatetimeimportdatetimewithDAG(
dag_id="grid_view_performance_test_5000_tasks",
start_date=datetime(2025, 1, 1),
schedule=None,
catchup=False,
tags=["performance", "test", "grid_view"],
description="Complex DAG with 5000 tasks to test grid view performance",
) asdag:
# Entry point taskstart=EmptyOperator(task_id="start")
# Exit point taskend=EmptyOperator(task_id="end")
previous_group_final_tasks= [start]
# Create 50 main task groupsformain_group_idxinrange(50):
withTaskGroup(group_id=f"main_group_{main_group_idx}") asmain_group:
# Entry task for this main groupgroup_start=EmptyOperator(task_id="group_start")
# Exit task for this main groupgroup_end=EmptyOperator(task_id="group_end")
sub_group_final_tasks= []
# Create 10 sub-groups within each main groupforsub_group_idxinrange(10):
withTaskGroup(group_id=f"sub_group_{sub_group_idx}") assub_group:
# Create 10 tasks per sub-group (10 sub-groups * 10 tasks = 100 tasks per main group)sub_tasks= []
fortask_idxinrange(10):
task=EmptyOperator(task_id=f"task_{task_idx}")
sub_tasks.append(task)
# Create dependencies within sub-group# First 5 tasks run in parallel, then next 5 tasks depend on themforiinrange(5, 10):
sub_tasks[i-5] >>sub_tasks[i]
# Last task of sub-groupsub_group_final=sub_tasks[-1]
# Connect group_start to each sub-group's first tasksgroup_start>>sub_tasks[0]
group_start>>sub_tasks[1]
# Collect final tasks from each sub-groupsub_group_final_tasks.append(sub_group_final)
# Connect all sub-group final tasks to group_endsub_group_final_tasks>>group_end# Connect previous groups to current group# Create some inter-group dependencies for complexityifmain_group_idx%5==0:
# Every 5th group depends on all previous group tasksprevious_group_final_tasks>>group_startelse:
# Other groups depend on the immediately previous groupprevious_group_final_tasks[-1] >>group_start# Track this group's final taskprevious_group_final_tasks.append(group_end)
# Connect all final group tasks to the end taskprevious_group_final_tasks>>end

@bbovenzi

Copy link
Copy Markdown
ContributorAuthor

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Thanks. What OS+browser are you on?

@pierrejeambrunpierrejeambrun left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Super cool! Tested locally and working as expected for me.

Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx Outdated
….tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@dheerajturaga

Copy link
Copy Markdown
Member

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Thanks. What OS+browser are you on?

chrome with airflow running on ubuntu (wsl) via breeze

@bbovenzi

bbovenzi commented Jan 8, 2026

Copy link
Copy Markdown
ContributorAuthor

@dheerajturaga Fixed

Screenshot 2026-01-08 at 1 14 38 PM

@bbovenzibbovenzi mentioned this pull request Jan 8, 2026
@dheerajturaga

Copy link
Copy Markdown
Member

Thanks @bbovenzi , for implementing this! Very Cool! this is definitely a very big improvement (I'm seeing 4x improvement 8s -> 2s)

Old:
Bad performance times - 1

new:
good performance times - 1

@bbovenzi
bbovenzi merged commit 7a64304 into apache:mainJan 8, 2026
128 checks passed
@bbovenzi
bbovenzi deleted the virtualize-grid branch January 8, 2026 19:59
github-actionsBot pushed a commit that referenced this pull request Jan 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@github-actions

Copy link
Copy Markdown
Contributor

Backport successfully created: v3-1-test

StatusBranchResult
v3-1-testPR Link

@kaxil

kaxil commented Jan 8, 2026

Copy link
Copy Markdown
Member

#protm

bbovenzi added a commit that referenced this pull request Jan 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>

@jscheffljscheffl left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wow. Impressive!

@choo121600

Copy link
Copy Markdown
Member

Wow Coool!😲

stegololz pushed a commit to stegololz/airflow that referenced this pull request Jan 9, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 13, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 14, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 16, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@pierrejeambrunpierrejeambrun mentioned this pull request Feb 16, 2026
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:UIRelated to UI/UX. For Frontend Developers.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@bbovenzi@dheerajturaga@kaxil@choo121600@pierrejeambrun@jscheffl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add virtualization to grid view - #60241

Merged
bbovenzi merged 6 commits into
apache:mainfrom
astronomer:virtualize-grid
Jan 8, 2026
Merged

Add virtualization to grid view#60241
bbovenzi merged 6 commits into
apache:mainfrom
astronomer:virtualize-grid

Conversation

@bbovenzi

@bbovenzibbovenzi commented Jan 7, 2026

Copy link
Copy Markdown
Contributor

Virtualize the grid view to improve rendering performance on very large dags.

Before (10 dag runs with 1000 tasks):
Screenshot 2026-01-07 at 4 32 40 PM

After (10 dag runs with 1000 tasks):
Screenshot 2026-01-07 at 4 55 05 PM

Results go from unusable to slow. I'll look for other improvements in follow up PRs. Notably some of the API calls still take 1-3 seconds.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@boring-cyborgboring-cyborgBot added the area:UI Related to UI/UX. For Frontend Developers. label Jan 7, 2026
Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/Bar.tsx Outdated
Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/Grid.tsx Outdated
@dheerajturaga

Copy link
Copy Markdown
Member

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Grid View misaligned

here's my dag

"""DAG for testing Grid View performance with 5000 tasks.This DAG creates a complex structure with:- 50 top-level task groups- Each group contains 100 tasks organized in 10 sub-groups- Mix of sequential and parallel dependencies- Total: 5000 EmptyOperator tasks"""fromairflow.sdkimportDAGfromairflow.sdk.definitions.taskgroupimportTaskGroupfromairflow.operators.emptyimportEmptyOperatorfromdatetimeimportdatetimewithDAG(
dag_id="grid_view_performance_test_5000_tasks",
start_date=datetime(2025, 1, 1),
schedule=None,
catchup=False,
tags=["performance", "test", "grid_view"],
description="Complex DAG with 5000 tasks to test grid view performance",
) asdag:
# Entry point taskstart=EmptyOperator(task_id="start")
# Exit point taskend=EmptyOperator(task_id="end")
previous_group_final_tasks= [start]
# Create 50 main task groupsformain_group_idxinrange(50):
withTaskGroup(group_id=f"main_group_{main_group_idx}") asmain_group:
# Entry task for this main groupgroup_start=EmptyOperator(task_id="group_start")
# Exit task for this main groupgroup_end=EmptyOperator(task_id="group_end")
sub_group_final_tasks= []
# Create 10 sub-groups within each main groupforsub_group_idxinrange(10):
withTaskGroup(group_id=f"sub_group_{sub_group_idx}") assub_group:
# Create 10 tasks per sub-group (10 sub-groups * 10 tasks = 100 tasks per main group)sub_tasks= []
fortask_idxinrange(10):
task=EmptyOperator(task_id=f"task_{task_idx}")
sub_tasks.append(task)
# Create dependencies within sub-group# First 5 tasks run in parallel, then next 5 tasks depend on themforiinrange(5, 10):
sub_tasks[i-5] >>sub_tasks[i]
# Last task of sub-groupsub_group_final=sub_tasks[-1]
# Connect group_start to each sub-group's first tasksgroup_start>>sub_tasks[0]
group_start>>sub_tasks[1]
# Collect final tasks from each sub-groupsub_group_final_tasks.append(sub_group_final)
# Connect all sub-group final tasks to group_endsub_group_final_tasks>>group_end# Connect previous groups to current group# Create some inter-group dependencies for complexityifmain_group_idx%5==0:
# Every 5th group depends on all previous group tasksprevious_group_final_tasks>>group_startelse:
# Other groups depend on the immediately previous groupprevious_group_final_tasks[-1] >>group_start# Track this group's final taskprevious_group_final_tasks.append(group_end)
# Connect all final group tasks to the end taskprevious_group_final_tasks>>end

@bbovenzi

Copy link
Copy Markdown
ContributorAuthor

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Thanks. What OS+browser are you on?

@pierrejeambrunpierrejeambrun left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Super cool! Tested locally and working as expected for me.

Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx Outdated
….tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@dheerajturaga

Copy link
Copy Markdown
Member

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Thanks. What OS+browser are you on?

chrome with airflow running on ubuntu (wsl) via breeze

@bbovenzi

bbovenzi commented Jan 8, 2026

Copy link
Copy Markdown
ContributorAuthor

@dheerajturaga Fixed

Screenshot 2026-01-08 at 1 14 38 PM

@bbovenzibbovenzi mentioned this pull request Jan 8, 2026
@dheerajturaga

Copy link
Copy Markdown
Member

Thanks @bbovenzi , for implementing this! Very Cool! this is definitely a very big improvement (I'm seeing 4x improvement 8s -> 2s)

Old:
Bad performance times - 1

new:
good performance times - 1

@bbovenzi
bbovenzi merged commit 7a64304 into apache:mainJan 8, 2026
128 checks passed
@bbovenzi
bbovenzi deleted the virtualize-grid branch January 8, 2026 19:59
github-actionsBot pushed a commit that referenced this pull request Jan 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@github-actions

Copy link
Copy Markdown
Contributor

Backport successfully created: v3-1-test

StatusBranchResult
v3-1-testPR Link

@kaxil

kaxil commented Jan 8, 2026

Copy link
Copy Markdown
Member

#protm

bbovenzi added a commit that referenced this pull request Jan 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>

@jscheffljscheffl left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wow. Impressive!

@choo121600

Copy link
Copy Markdown
Member

Wow Coool!😲

stegololz pushed a commit to stegololz/airflow that referenced this pull request Jan 9, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 13, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 14, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 16, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@pierrejeambrunpierrejeambrun mentioned this pull request Feb 16, 2026
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:UIRelated to UI/UX. For Frontend Developers.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@bbovenzi@dheerajturaga@kaxil@choo121600@pierrejeambrun@jscheffl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Add virtualization to grid view - #60241

Merged
bbovenzi merged 6 commits into
apache:mainfrom
astronomer:virtualize-grid
Jan 8, 2026
Merged

Add virtualization to grid view#60241
bbovenzi merged 6 commits into
apache:mainfrom
astronomer:virtualize-grid

Conversation

@bbovenzi

@bbovenzibbovenzi commented Jan 7, 2026

Copy link
Copy Markdown
Contributor

Virtualize the grid view to improve rendering performance on very large dags.

Before (10 dag runs with 1000 tasks):
Screenshot 2026-01-07 at 4 32 40 PM

After (10 dag runs with 1000 tasks):
Screenshot 2026-01-07 at 4 55 05 PM

Results go from unusable to slow. I'll look for other improvements in follow up PRs. Notably some of the API calls still take 1-3 seconds.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@boring-cyborgboring-cyborgBot added the area:UI Related to UI/UX. For Frontend Developers. label Jan 7, 2026
Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/Bar.tsx Outdated
Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/Grid.tsx Outdated
@dheerajturaga

Copy link
Copy Markdown
Member

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Grid View misaligned

here's my dag

"""DAG for testing Grid View performance with 5000 tasks.This DAG creates a complex structure with:- 50 top-level task groups- Each group contains 100 tasks organized in 10 sub-groups- Mix of sequential and parallel dependencies- Total: 5000 EmptyOperator tasks"""fromairflow.sdkimportDAGfromairflow.sdk.definitions.taskgroupimportTaskGroupfromairflow.operators.emptyimportEmptyOperatorfromdatetimeimportdatetimewithDAG(
dag_id="grid_view_performance_test_5000_tasks",
start_date=datetime(2025, 1, 1),
schedule=None,
catchup=False,
tags=["performance", "test", "grid_view"],
description="Complex DAG with 5000 tasks to test grid view performance",
) asdag:
# Entry point taskstart=EmptyOperator(task_id="start")
# Exit point taskend=EmptyOperator(task_id="end")
previous_group_final_tasks= [start]
# Create 50 main task groupsformain_group_idxinrange(50):
withTaskGroup(group_id=f"main_group_{main_group_idx}") asmain_group:
# Entry task for this main groupgroup_start=EmptyOperator(task_id="group_start")
# Exit task for this main groupgroup_end=EmptyOperator(task_id="group_end")
sub_group_final_tasks= []
# Create 10 sub-groups within each main groupforsub_group_idxinrange(10):
withTaskGroup(group_id=f"sub_group_{sub_group_idx}") assub_group:
# Create 10 tasks per sub-group (10 sub-groups * 10 tasks = 100 tasks per main group)sub_tasks= []
fortask_idxinrange(10):
task=EmptyOperator(task_id=f"task_{task_idx}")
sub_tasks.append(task)
# Create dependencies within sub-group# First 5 tasks run in parallel, then next 5 tasks depend on themforiinrange(5, 10):
sub_tasks[i-5] >>sub_tasks[i]
# Last task of sub-groupsub_group_final=sub_tasks[-1]
# Connect group_start to each sub-group's first tasksgroup_start>>sub_tasks[0]
group_start>>sub_tasks[1]
# Collect final tasks from each sub-groupsub_group_final_tasks.append(sub_group_final)
# Connect all sub-group final tasks to group_endsub_group_final_tasks>>group_end# Connect previous groups to current group# Create some inter-group dependencies for complexityifmain_group_idx%5==0:
# Every 5th group depends on all previous group tasksprevious_group_final_tasks>>group_startelse:
# Other groups depend on the immediately previous groupprevious_group_final_tasks[-1] >>group_start# Track this group's final taskprevious_group_final_tasks.append(group_end)
# Connect all final group tasks to the end taskprevious_group_final_tasks>>end

@bbovenzi

Copy link
Copy Markdown
ContributorAuthor

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Thanks. What OS+browser are you on?

@pierrejeambrunpierrejeambrun left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Super cool! Tested locally and working as expected for me.

Comment threadairflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx Outdated
….tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@dheerajturaga

Copy link
Copy Markdown
Member

@bbovenzi, Im seeing for large dags the grid view task alignment is broken in this PR

Thanks. What OS+browser are you on?

chrome with airflow running on ubuntu (wsl) via breeze

@bbovenzi

bbovenzi commented Jan 8, 2026

Copy link
Copy Markdown
ContributorAuthor

@dheerajturaga Fixed

Screenshot 2026-01-08 at 1 14 38 PM

@bbovenzibbovenzi mentioned this pull request Jan 8, 2026
@dheerajturaga

Copy link
Copy Markdown
Member

Thanks @bbovenzi , for implementing this! Very Cool! this is definitely a very big improvement (I'm seeing 4x improvement 8s -> 2s)

Old:
Bad performance times - 1

new:
good performance times - 1

@bbovenzi
bbovenzi merged commit 7a64304 into apache:mainJan 8, 2026
128 checks passed
@bbovenzi
bbovenzi deleted the virtualize-grid branch January 8, 2026 19:59
github-actionsBot pushed a commit that referenced this pull request Jan 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@github-actions

Copy link
Copy Markdown
Contributor

Backport successfully created: v3-1-test

StatusBranchResult
v3-1-testPR Link

@kaxil

kaxil commented Jan 8, 2026

Copy link
Copy Markdown
Member

#protm

bbovenzi added a commit that referenced this pull request Jan 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>

@jscheffljscheffl left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wow. Impressive!

@choo121600

Copy link
Copy Markdown
Member

Wow Coool!😲

stegololz pushed a commit to stegololz/airflow that referenced this pull request Jan 9, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 13, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 14, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
ephraimbuddy pushed a commit that referenced this pull request Jan 16, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
* Fix scrollbars and horizontal scrolling
---------
(cherry picked from commit 7a64304)
Co-authored-by: Brent Bovenzi <brent@astronomer.io>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
jhgoebbert pushed a commit to jhgoebbert/airflow_Owen-CH-Leung that referenced this pull request Feb 8, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
@pierrejeambrunpierrejeambrun mentioned this pull request Feb 16, 2026
Subham-KRLX pushed a commit to Subham-KRLX/airflow that referenced this pull request Mar 4, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Ankurdeewan pushed a commit to Ankurdeewan/airflow that referenced this pull request Mar 15, 2026
* Add virtualization to grid view
* Remove all jsx inline function declarations
* Remove awkward Bar code reuse, add nav mode const
* Remove extraneous code
* Update airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
* Fix scrollbars and horizontal scrolling
---------
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:UIRelated to UI/UX. For Frontend Developers.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@bbovenzi@dheerajturaga@kaxil@choo121600@pierrejeambrun@jscheffl