OGE logoOGE

Virtual Scroll

100,000 rows in one scrollable list — only the visible window is rendered into the DOM. Open DevTools and watch the element count while scrolling.

virtualScroll rowHeight overscan
100.000 rows
Id
First Name
Last Name
Department
City
Salary
1
Can
Kaya
HR
Ankara
86000
2
Mert
Kılıç
Sales
İstanbul
75000
3
Emre
Aydın
Engineering
İzmir
32000
4
Deniz
Arslan
Engineering
İstanbul
105000
5
Emre
Yılmaz
Engineering
İzmir
83000
6
Zeynep
Kılıç
Support
İzmir
48000
7
Can
Doğan
Finance
Antalya
37000
8
Ayşe
Kaya
Engineering
Ankara
73000
9
Deniz
Öztürk
Sales
Bursa
46000
10
Selin
Arslan
Support
İzmir
82000
11
Deniz
Demir
HR
Antalya
92000
12
Elif
Demir
Engineering
Bursa
58000
13
Emre
Aydın
Engineering
Antalya
46000
14
Emre
Kaya
Finance
Ankara
48000
15
Deniz
Şahin
Engineering
Antalya
63000
16
Mert
Öztürk
Sales
Bursa
74000
17
Deniz
Demir
Sales
Ankara
32000
18
Selin
Kaya
Engineering
İzmir
56000

How it works

  • Row offsets live in a Fenwick (binary-indexed) tree: finding the row at any scroll position and the total height are both O(log n) — scrolling cost does not grow with list size.
  • Only the visible rows plus an overscan buffer (default 6) exist in the DOM; a spacer element keeps the scrollbar honest.
  • Group and master-detail rows participate with their own heights (detailRowHeight).
  • Keyboard navigation scrolls the focused row into view automatically, even across 100k rows.

Column virtualization

Wide grids get the same treatment horizontally: columnRenderingMode: 'virtual' renders only the columns near the horizontal viewport and stands spacer tracks in for the rest. Scroll sideways below — the DOM holds a couple dozen of the 200 columns at any time.

200 columns 1.000 rows
C0
C1
C2
C3
C4
C5
C6
C7
C8
C9
C10
C11
R1 · C0
R1 · C1
R1 · C2
R1 · C3
R1 · C4
R1 · C5
R1 · C6
R1 · C7
R1 · C8
R1 · C9
R1 · C10
R1 · C11
R2 · C0
R2 · C1
R2 · C2
R2 · C3
R2 · C4
R2 · C5
R2 · C6
R2 · C7
R2 · C8
R2 · C9
R2 · C10
R2 · C11
R3 · C0
R3 · C1
R3 · C2
R3 · C3
R3 · C4
R3 · C5
R3 · C6
R3 · C7
R3 · C8
R3 · C9
R3 · C10
R3 · C11
R4 · C0
R4 · C1
R4 · C2
R4 · C3
R4 · C4
R4 · C5
R4 · C6
R4 · C7
R4 · C8
R4 · C9
R4 · C10
R4 · C11
R5 · C0
R5 · C1
R5 · C2
R5 · C3
R5 · C4
R5 · C5
R5 · C6
R5 · C7
R5 · C8
R5 · C9
R5 · C10
R5 · C11
R6 · C0
R6 · C1
R6 · C2
R6 · C3
R6 · C4
R6 · C5
R6 · C6
R6 · C7
R6 · C8
R6 · C9
R6 · C10
R6 · C11
R7 · C0
R7 · C1
R7 · C2
R7 · C3
R7 · C4
R7 · C5
R7 · C6
R7 · C7
R7 · C8
R7 · C9
R7 · C10
R7 · C11
R8 · C0
R8 · C1
R8 · C2
R8 · C3
R8 · C4
R8 · C5
R8 · C6
R8 · C7
R8 · C8
R8 · C9
R8 · C10
R8 · C11
R9 · C0
R9 · C1
R9 · C2
R9 · C3
R9 · C4
R9 · C5
R9 · C6
R9 · C7
R9 · C8
R9 · C9
R9 · C10
R9 · C11
R10 · C0
R10 · C1
R10 · C2
R10 · C3
R10 · C4
R10 · C5
R10 · C6
R10 · C7
R10 · C8
R10 · C9
R10 · C10
R10 · C11
R11 · C0
R11 · C1
R11 · C2
R11 · C3
R11 · C4
R11 · C5
R11 · C6
R11 · C7
R11 · C8
R11 · C9
R11 · C10
R11 · C11
R12 · C0
R12 · C1
R12 · C2
R12 · C3
R12 · C4
R12 · C5
R12 · C6
R12 · C7
R12 · C8
R12 · C9
R12 · C10
R12 · C11
R13 · C0
R13 · C1
R13 · C2
R13 · C3
R13 · C4
R13 · C5
R13 · C6
R13 · C7
R13 · C8
R13 · C9
R13 · C10
R13 · C11
R14 · C0
R14 · C1
R14 · C2
R14 · C3
R14 · C4
R14 · C5
R14 · C6
R14 · C7
R14 · C8
R14 · C9
R14 · C10
R14 · C11
R15 · C0
R15 · C1
R15 · C2
R15 · C3
R15 · C4
R15 · C5
R15 · C6
R15 · C7
R15 · C8
R15 · C9
R15 · C10
R15 · C11
R16 · C0
R16 · C1
R16 · C2
R16 · C3
R16 · C4
R16 · C5
R16 · C6
R16 · C7
R16 · C8
R16 · C9
R16 · C10
R16 · C11
R17 · C0
R17 · C1
R17 · C2
R17 · C3
R17 · C4
R17 · C5
R17 · C6
R17 · C7
R17 · C8
R17 · C9
R17 · C10
R17 · C11
R18 · C0
R18 · C1
R18 · C2
R18 · C3
R18 · C4
R18 · C5
R18 · C6
R18 · C7
R18 · C8
R18 · C9
R18 · C10
R18 · C11

Variable row heights

With autoRowHeight the virtualizer stops assuming a fixed row height: rendered rows are measured, measurements feed the offset tree, and corrections above the viewport are compensated on scrollTop in the same frame — no visible jump while scrolling through wrapped content.

5.000 rows autoRowHeight wordWrap
Id
Title
Body
1
Note 1
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
2
Note 2
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
3
Note 3
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
4
Note 4
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
5
Note 5
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
6
Note 6
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
7
Note 7
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
8
Note 8
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
9
Note 9
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
10
Note 10
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
11
Note 11
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
12
Note 12
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
13
Note 13
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
14
Note 14
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
15
Note 15
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
16
Note 16
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
17
Note 17
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
18
Note 18
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit.