Home/Performance/Sizing & Height
Performance

Sizing & Height

How the grid is sized, and what each size costs you. Three height modes — fixed px, auto-expand to fit rows, or fill a parent container — and the one that puts every row in the DOM.

Fixed height (recommended)

A number is px, or pass any CSS length. The grid scrolls internally and only the rows in the viewport are in the DOM.

#
Name
Department
Role
Salary ($)
Status
1
Alice Johnson
Engineering
Frontend Dev
92000
Active
2
Bob Martinez
Design
UX Designer
84000
Active
3
Carol Williams
Product
Product Manager
110000
Active
4
David Chen
Engineering
Backend Dev
98000
Active
5
Eva Petrov
Marketing
Growth Lead
88000
Inactive
6
Frank Kim
Engineering
DevOps
95000
Active
7
Grace Okonkwo
Finance
Analyst
78000
Active
8
Henry Park
Engineering
Mobile Dev
91000
Active
9
Isla Thompson
HR
HR Manager
82000
Active
10
James Rivera
Security
Sec Engineer
105000
Active
11
Karen Wu
Design
Visual Designer
80000
Inactive
12
Leo Santos
Engineering
Full-stack Dev
96000
Active
All records loaded
12 / 12 records

Pass a number (interpreted as px) or any CSS string ('460px', '50vh'). The grid renders a scroll container internally and uses virtual scrolling — only the rows visible in the viewport are in the DOM.

Required for: sticky group headers, inner-scroll grouping, virtual-paging.

Auto height

The grid expands to show every loaded row and the page scrolls instead — at the cost of virtual scrolling.

#
Name
Department
Role
Salary ($)
Status
1
Alice Johnson
Engineering
Frontend Dev
92000
Active
2
Bob Martinez
Design
UX Designer
84000
Active
3
Carol Williams
Product
Product Manager
110000
Active
4
David Chen
Engineering
Backend Dev
98000
Active
5
Eva Petrov
Marketing
Growth Lead
88000
Inactive
6
Frank Kim
Engineering
DevOps
95000
Active
7
Grace Okonkwo
Finance
Analyst
78000
Active
8
Henry Park
Engineering
Mobile Dev
91000
Active
9
Isla Thompson
HR
HR Manager
82000
Active
10
James Rivera
Security
Sec Engineer
105000
Active
11
Karen Wu
Design
Visual Designer
80000
Inactive
12
Leo Santos
Engineering
Full-stack Dev
96000
Active
All records loaded
12 / 12 records

height: 'auto' — the grid expands vertically to show every loaded row. Scrolling happens on the outer page or container, not inside the grid.

⚠ Virtual scroll is disabled — all rows are rendered in the DOM at once. Avoid with large datasets.
⚠ Sticky group header overlay and inner-scroll grouping do not work in auto-height mode.

Fill container

The grid takes 100% of its parent's height — which means the parent needs a concrete height of its own.

#
Name
Department
Role
Salary ($)
Status
1
Alice Johnson
Engineering
Frontend Dev
92000
Active
2
Bob Martinez
Design
UX Designer
84000
Active
3
Carol Williams
Product
Product Manager
110000
Active
4
David Chen
Engineering
Backend Dev
98000
Active
5
Eva Petrov
Marketing
Growth Lead
88000
Inactive
6
Frank Kim
Engineering
DevOps
95000
Active
7
Grace Okonkwo
Finance
Analyst
78000
Active
8
Henry Park
Engineering
Mobile Dev
91000
Active
9
Isla Thompson
HR
HR Manager
82000
Active
10
James Rivera
Security
Sec Engineer
105000
Active
11
Karen Wu
Design
Visual Designer
80000
Inactive
12
Leo Santos
Engineering
Full-stack Dev
96000
Active
All records loaded
12 / 12 records

height: '100%' fills whatever height the parent element provides. The parent must have a concrete height set via CSS.

What happens if it does not is the part worth knowing. A percentage height has nothing to resolve against, so the grid falls back to sizing itself to its content — every loaded row in the DOM, exactly like height: 'auto'. You do not get an error and nothing looks broken; you quietly lose virtual scrolling. The last example on this page shows both side by side.

.my-wrapper { height: 460px; }  // ← required

Useful when you want the grid to fill a flex/grid cell or a full-screen panel.

What auto costs

The same 500 rows twice. Only the height differs — and the row counts underneath are what that difference means.

height: 460 — a window

0 of 500 rows in the DOM

#
Name
Department
Role
Salary ($)
Status
1
Alice Johnson 1
Engineering
Frontend Dev
92000
Active
2
Bob Martinez 2
Design
UX Designer
84000
Active
3
Carol Williams 3
Product
Product Manager
110000
Active
4
David Chen 4
Engineering
Backend Dev
98000
Active
5
Eva Petrov 5
Marketing
Growth Lead
88000
Inactive
6
Frank Kim 6
Engineering
DevOps
95000
Active
7
Grace Okonkwo 7
Finance
Analyst
78000
Active
8
Henry Park 8
Engineering
Mobile Dev
91000
Active
9
Isla Thompson 9
HR
HR Manager
82000
Active
10
James Rivera 10
Security
Sec Engineer
105000
Active
11
Karen Wu 11
Design
Visual Designer
80000
Inactive
12
Leo Santos 12
Engineering
Full-stack Dev
96000
Active
13
Alice Johnson 13
Engineering
Frontend Dev
92000
Active
14
Bob Martinez 14
Design
UX Designer
84000
Active
15
Carol Williams 15
Product
Product Manager
110000
Active
16
David Chen 16
Engineering
Backend Dev
98000
Active
17
Eva Petrov 17
Marketing
Growth Lead
88000
Inactive
18
Frank Kim 18
Engineering
DevOps
95000
Active
19
Grace Okonkwo 19
Finance
Analyst
78000
Active
20
Henry Park 20
Engineering
Mobile Dev
91000
Active
21
Isla Thompson 21
HR
HR Manager
82000
Active
22
James Rivera 22
Security
Sec Engineer
105000
Active
23
Karen Wu 23
Design
Visual Designer
80000
Inactive
24
Leo Santos 24
Engineering
Full-stack Dev
96000
Active
25
Alice Johnson 25
Engineering
Frontend Dev
92000
Active
26
Bob Martinez 26
Design
UX Designer
84000
Active
100 / 500 records

height: 'auto' — all of them

0 of 500 rows in the DOM

#
Name
Department
Role
Salary ($)
Status
1
Alice Johnson 1
Engineering
Frontend Dev
92000
Active
2
Bob Martinez 2
Design
UX Designer
84000
Active
3
Carol Williams 3
Product
Product Manager
110000
Active
4
David Chen 4
Engineering
Backend Dev
98000
Active
5
Eva Petrov 5
Marketing
Growth Lead
88000
Inactive
6
Frank Kim 6
Engineering
DevOps
95000
Active
7
Grace Okonkwo 7
Finance
Analyst
78000
Active
8
Henry Park 8
Engineering
Mobile Dev
91000
Active
9
Isla Thompson 9
HR
HR Manager
82000
Active
10
James Rivera 10
Security
Sec Engineer
105000
Active
11
Karen Wu 11
Design
Visual Designer
80000
Inactive
12
Leo Santos 12
Engineering
Full-stack Dev
96000
Active
13
Alice Johnson 13
Engineering
Frontend Dev
92000
Active
14
Bob Martinez 14
Design
UX Designer
84000
Active
15
Carol Williams 15
Product
Product Manager
110000
Active
16
David Chen 16
Engineering
Backend Dev
98000
Active
17
Eva Petrov 17
Marketing
Growth Lead
88000
Inactive
18
Frank Kim 18
Engineering
DevOps
95000
Active
19
Grace Okonkwo 19
Finance
Analyst
78000
Active
20
Henry Park 20
Engineering
Mobile Dev
91000
Active
21
Isla Thompson 21
HR
HR Manager
82000
Active
22
James Rivera 22
Security
Sec Engineer
105000
Active
23
Karen Wu 23
Design
Visual Designer
80000
Inactive
24
Leo Santos 24
Engineering
Full-stack Dev
96000
Active
25
Alice Johnson 25
Engineering
Frontend Dev
92000
Active
26
Bob Martinez 26
Design
UX Designer
84000
Active
100 / 500 records

100% needs a parent with a height

The same config in two parents. One has a concrete height; the other does not — and the grid without one quietly sizes to its content instead, putting every row in the DOM.

Parent has height: 380px

#
Name
Department
Role
Salary ($)
Status
1
Alice Johnson
Engineering
Frontend Dev
92000
Active
2
Bob Martinez
Design
UX Designer
84000
Active
3
Carol Williams
Product
Product Manager
110000
Active
4
David Chen
Engineering
Backend Dev
98000
Active
5
Eva Petrov
Marketing
Growth Lead
88000
Inactive
6
Frank Kim
Engineering
DevOps
95000
Active
7
Grace Okonkwo
Finance
Analyst
78000
Active
8
Henry Park
Engineering
Mobile Dev
91000
Active
9
Isla Thompson
HR
HR Manager
82000
Active
10
James Rivera
Security
Sec Engineer
105000
Active
11
Karen Wu
Design
Visual Designer
80000
Inactive
12
Leo Santos
Engineering
Full-stack Dev
96000
Active
All records loaded
12 / 12 records

Parent has no height — the grid sizes to its content

#
Name
Department
Role
Salary ($)
Status
1
Alice Johnson
Engineering
Frontend Dev
92000
Active
2
Bob Martinez
Design
UX Designer
84000
Active
3
Carol Williams
Product
Product Manager
110000
Active
4
David Chen
Engineering
Backend Dev
98000
Active
5
Eva Petrov
Marketing
Growth Lead
88000
Inactive
6
Frank Kim
Engineering
DevOps
95000
Active
7
Grace Okonkwo
Finance
Analyst
78000
Active
8
Henry Park
Engineering
Mobile Dev
91000
Active
9
Isla Thompson
HR
HR Manager
82000
Active
10
James Rivera
Security
Sec Engineer
105000
Active
11
Karen Wu
Design
Visual Designer
80000
Inactive
12
Leo Santos
Engineering
Full-stack Dev
96000
Active
All records loaded
12 / 12 records

Row height and header height

rowHeight and headerHeight decide how much of your box a row costs. A 460px grid holds about nine 48px rows, or fourteen 32px ones — the same height setting, a different amount of data on screen.

With a fixed height these are also what the grid uses to work out which rows to render, so keeping rowHeight accurate matters more than it looks. If your rows are not all the same height, use autoRowHeight and let the grid measure them — see Row Virtualisation.

Summary

ModeVirtual scrollGrouping overlayScroll area
Fixed px✅✅Grid
Auto❌❌Page / outer
Fill (100%)✅✅Grid

height: 'auto' disables virtual scrolling — every loaded row is rendered in the DOM at once, and the sticky group-header overlay is unavailable. For large datasets prefer a fixed height or '100%' inside a sized parent.

Height options

PropertyTypeDefaultDescription
config.heightnumber | string—Fixed px as a number or CSS length string ('460px', '50vh'), 'auto' to expand with rows, '100%' to fill the parent.
config.rowHeightnumber—Fixed row height in px — the virtual-scroll window is computed from it.
column.sizing'flex'—The column takes a share of the leftover width instead of a fixed px width.
column.minWidthnumber—Lower bound in px for flex-sized columns.