@mui/x-virtualizer 0.3.3 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,494 @@
5
5
  All notable changes to this project will be documented in this file.
6
6
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
7
7
 
8
+ ## 8.28.1
9
+
10
+ <!-- generated comparing v8.28.0..v8.x -->
11
+
12
+ _Mar 26, 2026_
13
+
14
+ We'd like to extend a big thank you to the 2 contributors who made this release possible.
15
+
16
+ The following team members contributed to this release:
17
+ @arminmeh, @cherniavskii
18
+
19
+ ### Data Grid
20
+
21
+ #### `@mui/x-data-grid@8.28.1`
22
+
23
+ - [DataGrid] Prevent repeated `hasScrollbar` state updates (#21847) @arminmeh
24
+
25
+ #### `@mui/x-data-grid-pro@8.28.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
26
+
27
+ Same changes as in `@mui/x-data-grid@8.28.1`, plus:
28
+
29
+ - [DataGridPro] `fetchRows()` API's default `start` and `end` params based on scroll position with lazy loading (#21811) @arminmeh
30
+
31
+ #### `@mui/x-data-grid-premium@8.28.1` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
32
+
33
+ Same changes as in `@mui/x-data-grid-pro@8.28.1`.
34
+
35
+ ### Core
36
+
37
+ - [internal] Remove headless data grid packages (#21848) @cherniavskii
38
+
39
+ ## 8.28.0
40
+
41
+ _Mar 19, 2026_
42
+
43
+ We'd like to extend a big thank you to the 5 contributors who made this release possible. Here are some highlights ✨:
44
+
45
+ TODO INSERT HIGHLIGHTS
46
+
47
+ The following team members contributed to this release:
48
+ @alexfauquette, @brijeshb42, @Janpot, @JCQuintas, @sai6855
49
+
50
+ ### Data Grid
51
+
52
+ #### `@mui/x-data-grid@8.28.0`
53
+
54
+ - [DataGrid] Move `elementOverrides` to constants and remove duplicates (@sai6855) (#21752) @github-actions[bot]
55
+
56
+ #### `@mui/x-data-grid-pro@8.28.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
57
+
58
+ Same changes as in `@mui/x-data-grid@8.28.0`.
59
+
60
+ #### `@mui/x-data-grid-premium@8.28.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
61
+
62
+ Same changes as in `@mui/x-data-grid-pro@8.28.0`.
63
+
64
+ ### Date and Time Pickers
65
+
66
+ #### `@mui/x-date-pickers@8.27.2`
67
+
68
+ Internal changes.
69
+
70
+ #### `@mui/x-date-pickers-pro@8.27.2` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
71
+
72
+ Same changes as in `@mui/x-date-pickers@8.27.2`.
73
+
74
+ ### Charts
75
+
76
+ #### `@mui/x-charts@8.28.0`
77
+
78
+ - [charts] Improve deprecation warnings (#21760) (#21767) @alexfauquette
79
+ - [charts] Refactor `FunnelChart` classes structure (@JCQuintas) (#21763) @github-actions[bot]
80
+ - [charts] Refactor `Heatmap` classes structure (#21653) (#21745) @JCQuintas
81
+ - [charts] Refactor `PieChart` classes structure (@JCQuintas) (#21715) @github-actions[bot]
82
+ - [charts] Refactor `RadarChart` classes structure (@JCQuintas) (#21730) @github-actions[bot]
83
+ - [charts] Refactor `SankeyChart` classes structure (#21654) (#21726) @JCQuintas
84
+ - [charts] Rename `data-series-id` by `data-series` (#21761) (#21772) @alexfauquette
85
+
86
+ #### `@mui/x-charts-pro@8.28.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
87
+
88
+ Same changes as in `@mui/x-charts@8.28.0`, plus:
89
+
90
+ - [charts-pro] Allow `brush` interaction to accept `requiredKeys/pointerMode` (#21723) @JCQuintas
91
+
92
+ #### `@mui/x-charts-premium@8.28.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
93
+
94
+ Same changes as in `@mui/x-charts-pro@8.28.0`.
95
+
96
+ ### Tree View
97
+
98
+ #### `@mui/x-tree-view@8.27.2`
99
+
100
+ Internal changes.
101
+
102
+ #### `@mui/x-tree-view-pro@8.27.2` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
103
+
104
+ Same changes as in `@mui/x-tree-view@8.27.2`.
105
+
106
+ ### Codemod
107
+
108
+ #### `@mui/x-codemod@8.27.0`
109
+
110
+ Internal changes.
111
+
112
+ ### Core
113
+
114
+ - [code-infra] Fix contributor generation in changelog (#21712) @brijeshb42
115
+ - [code-infra] Install pkg-pr-new (#21778) @Janpot
116
+
117
+ ## 8.27.5
118
+
119
+ _Mar 11, 2026_
120
+
121
+ We'd like to extend a big thank you to the 7 contributors who made this release possible. Here are some highlights ✨:
122
+
123
+ - 🐞 Bugfixes
124
+
125
+ The following team members contributed to this release:
126
+ @bernardobelchior, @JCQuintas, @MBilalShafi, @michelengelen, @mj12albert, @sai6855, @siriwatknp
127
+
128
+ ### Data Grid
129
+
130
+ #### `@mui/x-data-grid@8.27.5`
131
+
132
+ - [DataGrid] Fix crash when `rows` and `rowModesModel` are updated simultaneously (#21684) @michelengelen
133
+ - [DataGrid] Forward rest props in `GridFilterInputMultipleValue` (#21444) @siriwatknp
134
+ - [DataGrid] Remove double rtl inversion logic for columns pinning (#21443) @siriwatknp
135
+ - [DataGrid] Add missing `resizablePanelHandle` classes to `gridClasses` object (#21632) @sai6855
136
+ - [DataGrid] Refactor `headerAlign` style calls (#21633) @sai6855
137
+ - [DataGrid] Fix keyboard navigation with single-row checkbox selection (#21529) @mj12albert
138
+
139
+ #### `@mui/x-data-grid-pro@8.27.5` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
140
+
141
+ Same changes as in `@mui/x-data-grid@8.27.5`, plus:
142
+
143
+ - [DataGridPro] Add `role="presentation"` to detail panel toggle header content (#21691) @michelengelen
144
+ - [DataGridPro] Fix sorting not reflected in nested server-side data (#21641) @MBilalShafi
145
+
146
+ #### `@mui/x-data-grid-premium@8.27.5` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
147
+
148
+ Same changes as in `@mui/x-data-grid-pro@8.27.5`.
149
+
150
+ ### Charts
151
+
152
+ #### `@mui/x-charts@8.27.5`
153
+
154
+ - [charts] Refactor `BarChart` classes structure (#21601) (#21644) @JCQuintas
155
+ - [charts] Refactor `LineChart` classes structure (#21672) @JCQuintas
156
+ - [charts] Refactor `ScatterChart` classes structure (#21706) @JCQuintas
157
+
158
+ #### `@mui/x-charts-pro@8.27.5` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
159
+
160
+ Same changes as in `@mui/x-charts@8.27.5`, plus:
161
+
162
+ - [charts-pro] Fix image export truncated when page is zoomed out (#21696) @bernardobelchior
163
+
164
+ #### `@mui/x-charts-premium@8.27.5` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
165
+
166
+ Same changes as in `@mui/x-charts-pro@8.27.5`.
167
+
168
+ ### Docs
169
+
170
+ - [docs] Fix `AssistantWithDataSource` demo crashing (#21631) @sai6855
171
+ - [docs] Move Range Bar Chart to existing charts (#21122) @bernardobelchior
172
+
173
+ ### Core
174
+
175
+ - [code-infra] Fix datagrid test flakyness (#21657) @JCQuintas
176
+ - [code-infra] Removed `getTeamMembers` function and usage from the release script (#21608) @michelengelen
177
+
178
+ ### Miscellaneous
179
+
180
+ - [test] Add missing tests for forwarding props to filter operators in DataGrid (#21700) @siriwatknp
181
+
182
+ ## 8.27.4
183
+
184
+ _Mar 5, 2026_
185
+
186
+ We'd like to extend a big thank you to the 6 contributors who made this release possible. Here are some highlights ✨:
187
+
188
+ - 🐞 Bugfixes
189
+ - 🌎 Improve Ukrainian (uk-UA) locale
190
+
191
+ Special thanks go out to this community member for their valuable contribution:
192
+ @lion1963
193
+
194
+ The following team members contributed to this release:
195
+ @arminmeh, @brijeshb42, @dav-is, @JCQuintas, @sai6855
196
+
197
+ ### Data Grid
198
+
199
+ #### `@mui/x-data-grid@8.27.4`
200
+
201
+ - [DataGrid] Prevent unnecessary row selection checkbox rerendering (#21571) @arminmeh
202
+ - [DataGrid] Make `GridScrollArea` overrides resolver dynamic (#21612) @sai6855
203
+ - [l10n] Improve Ukrainian (uk-UA) locale (#21381) @lion1963
204
+
205
+ #### `@mui/x-data-grid-pro@8.27.4` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
206
+
207
+ Same changes as in `@mui/x-data-grid@8.27.4`, plus:
208
+
209
+ - [DataGridPro] Use `getRowId` prop to calculate the tree data row update (#21544) @arminmeh
210
+
211
+ #### `@mui/x-data-grid-premium@8.27.4` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
212
+
213
+ Same changes as in `@mui/x-data-grid-pro@8.27.4`.
214
+
215
+ ### Charts
216
+
217
+ #### `@mui/x-charts@8.27.4`
218
+
219
+ - [charts] Deprecate `ChartDataProvider` in favour of `ChartsDataProvider` (#21549) @JCQuintas
220
+ - [charts] Rename `ChartContainer` to `ChartsContainer` (#21186) @JCQuintas
221
+ - [charts] Rename `ChartZoomSlider` to `ChartsZoomSlider` (#21572) @JCQuintas
222
+
223
+ #### `@mui/x-charts-pro@8.27.4` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
224
+
225
+ Same changes as in `@mui/x-charts@8.27.4`.
226
+
227
+ #### `@mui/x-charts-premium@8.27.4` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
228
+
229
+ Same changes as in `@mui/x-charts-pro@8.27.4`.
230
+
231
+ ### Core
232
+
233
+ - [code-infra] Add eslint rule to prevent `Math.random` in docs (#21505) (#21563) @JCQuintas
234
+ - [code-infra] V8 Dedupe (#21561) @JCQuintas
235
+ - [docs-infra] Apply Cookie Banner to v8.x Branch (#21448) @dav-is
236
+ - [code-infra] Setup checkout to do full clone for non master branches (#21624) @brijeshb42
237
+
238
+ ## 8.27.3
239
+
240
+ _Feb 25, 2026_
241
+
242
+ We'd like to extend a big thank you to the 4 contributors who made this release possible. Here are some highlights ✨:
243
+
244
+ - 🐞 Bugfixes
245
+ - ⚡️ Improved dynamic data support and cache invalidation in lazy loading for Data Grid Pro
246
+
247
+ The following team members contributed to this release:
248
+ @cherniavskii, @michelengelen, @MBilalShafi, @arminmeh
249
+
250
+ ### Data Grid
251
+
252
+ #### `@mui/x-data-grid@8.27.3`
253
+
254
+ - [DataGrid] Preserve key input during row edit when using `rowModesModel` (#21457) @michelengelen
255
+
256
+ #### `@mui/x-data-grid-pro@8.27.3` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
257
+
258
+ Same changes as in `@mui/x-data-grid@8.27.3`, plus:
259
+
260
+ - [DataGridPro] Improve dynamic data support and cache invalidation in lazy loading (#21465) @MBilalShafi
261
+
262
+ #### `@mui/x-data-grid-premium@8.27.3` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
263
+
264
+ Same changes as in `@mui/x-data-grid-pro@8.27.3`.
265
+
266
+ ### Core
267
+
268
+ - [code-infra] Do not append `x` to the last version for the compare API (#21422) @arminmeh
269
+ - [docs-infra] Fix current version detection logic (#21415) @cherniavskii
270
+
271
+ ## 8.27.2
272
+
273
+ _Feb 20, 2026_
274
+
275
+ We'd like to extend a big thank you to the 3 contributors who made this release possible. Here are some highlights ✨:
276
+
277
+ - 🐞 Bugfixes
278
+
279
+ ### Data Grid
280
+
281
+ #### `@mui/x-data-grid@8.27.2`
282
+
283
+ Internal changes.
284
+
285
+ #### `@mui/x-data-grid-pro@8.27.2` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
286
+
287
+ Same changes as in `@mui/x-data-grid@8.27.2`, plus:
288
+
289
+ - [DataGridPro] Fix number input visibility in header filters (#21345) @michelengelen
290
+
291
+ #### `@mui/x-data-grid-premium@8.27.2` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
292
+
293
+ Same changes as in `@mui/x-data-grid-pro@8.27.2`.
294
+
295
+ ### Date and Time Pickers
296
+
297
+ #### `@mui/x-date-pickers@8.27.2`
298
+
299
+ - [DatePicker] Add keyboard support for selecting day, month, and year (#21399) @michelengelen
300
+
301
+ #### `@mui/x-date-pickers-pro@8.27.2` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
302
+
303
+ Same changes as in `@mui/x-date-pickers@8.27.2`, plus:
304
+
305
+ - [DateRangePicker] Fix timezone update issue leading to `invalidRange` error (#21382) @michelengelen
306
+
307
+ ### Charts
308
+
309
+ #### `@mui/x-charts@8.27.2`
310
+
311
+ Internal changes.
312
+
313
+ #### `@mui/x-charts-pro@8.27.2` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
314
+
315
+ Same changes as in `@mui/x-charts@8.27.2`, plus:
316
+
317
+ - [charts-pro] Handle edge case in export image (#21206) @bernardobelchior
318
+
319
+ #### `@mui/x-charts-premium@8.27.2` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
320
+
321
+ Same changes as in `@mui/x-charts-pro@8.27.2`.
322
+
323
+ ### Tree View
324
+
325
+ #### `@mui/x-tree-view@8.27.2`
326
+
327
+ - [tree view] Focus item sibling on unmount instead of the 1st item (#21386) @flaviendelangle
328
+
329
+ #### `@mui/x-tree-view-pro@8.27.2` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
330
+
331
+ Same changes as in `@mui/x-tree-view@8.27.2`.
332
+
333
+ ### Codemod
334
+
335
+ #### `@mui/x-codemod@8.27.2`
336
+
337
+ Internal changes.
338
+
339
+ ### Core
340
+
341
+ - [code-infra] Only ignore `renovate[bot]` in changelog generation script (#21188) @bernardobelchior
342
+
343
+ ## v8.27.1
344
+
345
+ <!-- generated comparing v8.27.0..v8.x -->
346
+
347
+ _Feb 13, 2026_
348
+
349
+ We'd like to extend a big thank you to the 6 contributors who made this release possible. Here are some highlights ✨:
350
+
351
+ - 📝 CSS bundler support is no longer needed for the Data Grid
352
+ - 🐞 Bugfixes
353
+
354
+ Special thanks go out to these community members for their valuable contributions:
355
+ @sai6855
356
+
357
+ The following team members contributed to this release:
358
+ @arminmeh, @cherniavskii, @flaviendelangle, @mj12albert, @MBilalShafi
359
+
360
+ ### Data Grid
361
+
362
+ #### `@mui/x-data-grid@8.27.1`
363
+
364
+ - [DataGrid] Hide column menu icon when there are no items (#21303) @MBilalShafi
365
+ - [DataGrid] Migrate styled imports and remove `index.css` (#21176) @MBilalShafi
366
+ - [DataGrid] Optimize `GridRootStyles` overrides resolver (#21251) @sai6855
367
+
368
+ #### `@mui/x-data-grid-pro@8.27.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
369
+
370
+ Same changes as in `@mui/x-data-grid@8.27.1`, plus:
371
+
372
+ - [DataGridPro] Fix column pinning issue with `restoreState` (#21305) @MBilalShafi
373
+ - [DataGridPro] Fix lazy loading params for page with one row (#21238) @MBilalShafi
374
+ - [DataGridPro] Properly extract parent path (#21301) @arminmeh
375
+
376
+ #### `@mui/x-data-grid-premium@8.27.1` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
377
+
378
+ Same changes as in `@mui/x-data-grid-pro@8.27.1`, plus:
379
+
380
+ - [DataGridPremium] Fix aggregation display when `initialState` has both `sortModel` and `pinnedColumns` (#21152) @mj12albert
381
+
382
+ ### Tree View
383
+
384
+ #### `@mui/x-tree-view@8.27.1`
385
+
386
+ - [tree view] Fix `apiRef.current.setItemExpansion()` (#21095) @flaviendelangle
387
+
388
+ #### `@mui/x-tree-view-pro@8.27.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
389
+
390
+ Same changes as in `@mui/x-tree-view@8.27.1`.
391
+
392
+ ### Core
393
+
394
+ - [internal] Add CLI for translation using LLM (#21299) @cherniavskii
395
+
396
+ ## v8.27.0
397
+
398
+ _Feb 2, 2026_
399
+
400
+ We'd like to extend a big thank you to the 8 contributors who made this release possible. Here are some highlights ✨:
401
+
402
+ - 📝 Data Grid supports new `longText` [column type](https://mui.com/x/react-data-grid/column-definition/#column-types)
403
+
404
+ The following team members contributed to this release:
405
+ @alexfauquette, @arminmeh, @bernardobelchior, @cherniavskii, @flaviendelangle, @JCQuintas, @MBilalShafi, @siriwatknp
406
+
407
+ ### Data Grid
408
+
409
+ #### `@mui/x-data-grid@8.27.0`
410
+
411
+ - [DataGrid] Fix virtualization crash by preventing out-of-bounds `focusedVirtualCell` indices (#21123) @cherniavskii
412
+ - [DataGrid] Fix focus steal issue with `<Dialog />` (#21106) @MBilalShafi
413
+ - [DataGrid] Add new `longText` column type (#21103) @siriwatknp
414
+
415
+ #### `@mui/x-data-grid-pro@8.27.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
416
+
417
+ Same changes as in `@mui/x-data-grid@8.27.0`.
418
+
419
+ #### `@mui/x-data-grid-premium@8.27.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
420
+
421
+ Same changes as in `@mui/x-data-grid-pro@8.27.0`, plus:
422
+
423
+ - [DataGridPremium] Fix focus retention when undo/redo operations are done on the same cell (#21110) @arminmeh
424
+
425
+ ### Date and Time Pickers
426
+
427
+ #### `@mui/x-date-pickers@8.27.0`
428
+
429
+ Internal changes.
430
+
431
+ #### `@mui/x-date-pickers-pro@8.27.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
432
+
433
+ Same changes as in `@mui/x-date-pickers@8.27.0`.
434
+
435
+ ### Charts
436
+
437
+ #### `@mui/x-charts@8.27.0`
438
+
439
+ - [charts] Deprecate `AxisId` class in favour of to `data-axis-id` attribute (#21048) @JCQuintas
440
+
441
+ #### `@mui/x-charts-pro@8.27.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
442
+
443
+ Same changes as in `@mui/x-charts@8.27.0`, plus:
444
+
445
+ - [charts-pro] Add `onItemClick` to the heatmap (#20817) (#21030) @alexfauquette
446
+
447
+ #### `@mui/x-charts-premium@8.27.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
448
+
449
+ Same changes as in `@mui/x-charts-pro@8.27.0`, plus:
450
+
451
+ - [charts-premium] Fix wrong `defaultSlots` in premium charts (#21052) @bernardobelchior
452
+
453
+ ### Tree View
454
+
455
+ #### `@mui/x-tree-view@8.27.0`
456
+
457
+ Internal changes.
458
+
459
+ #### `@mui/x-tree-view-pro@8.27.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
460
+
461
+ Same changes as in `@mui/x-tree-view@8.27.0`, plus:
462
+
463
+ - [RichTreeViewPro] Do not export `useSimpleTreeViewApiRef()` and `useRichTreeViewApiRef()` from pro package (#21145) @flaviendelangle
464
+
465
+ ### Codemod
466
+
467
+ #### `@mui/x-codemod@8.27.0`
468
+
469
+ Internal changes.
470
+
471
+ ### Docs
472
+
473
+ - [docs] Fix DataGrid's cell edit renderers (@arminmeh) (#21041) @github-actions[bot]
474
+
475
+ ### Core
476
+
477
+ - [code-infra] Add `consistent-type-imports` rule to the grid packages (#21119) @arminmeh
478
+ - [code-infra] Allow user to select target branch if it exists for current major (#21005) @JCQuintas
479
+ - [code-infra] Fix the target branch condition in the release script (#21051) @arminmeh
480
+ - [code-infra] Update docs deploy script to fetch from `v8.x` (#21013) @arminmeh
481
+
482
+ ## 8.26.1
483
+
484
+ _Jan 23, 2026_
485
+
486
+ Release highlight ✨:
487
+
488
+ - 🐞 Hotfix for Data Grid Premium type imports
489
+
490
+ ### Data Grid
491
+
492
+ #### `@mui/x-data-grid-premium@8.26.1` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
493
+
494
+ - [DataGridPremium] Fix type import (#21033) @arminmeh
495
+
8
496
  ## 8.26.0
9
497
 
10
498
  _Jan 22, 2026_
@@ -90,6 +90,21 @@ function initializeState(params) {
90
90
  }
91
91
  function useDimensions(store, params, _api) {
92
92
  const isFirstSizing = React.useRef(true);
93
+
94
+ // Vertical scrollbar oscillation detector.
95
+ // Counts consecutive hasScrollY flips that happen with no row-height change.
96
+ // After 2 flips it is certainly a layout feedback loop, so every further flip
97
+ // is forced to false (no scrollbar). The counter resets when row heights change.
98
+ // Only vertical scrollbar can oscillate because column widths are never 'auto'.
99
+ // https://github.com/mui/mui-x/issues/20539
100
+ const scrollYOscillation = React.useRef({
101
+ counter: 0,
102
+ heights: {
103
+ content: 0,
104
+ pinnedTop: 0,
105
+ pinnedBottom: 0
106
+ }
107
+ });
93
108
  const {
94
109
  layout,
95
110
  dimensions: {
@@ -123,6 +138,7 @@ function useDimensions(store, params, _api) {
123
138
  width: columnsTotalWidth,
124
139
  height: roundToDecimalPlaces(rowsMeta.currentPageTotalHeight, 1)
125
140
  };
141
+ const prevDimensions = store.state.dimensions;
126
142
  let viewportOuterSize;
127
143
  let viewportInnerSize;
128
144
  let hasScrollX = false;
@@ -160,6 +176,36 @@ function useDimensions(store, params, _api) {
160
176
  hasScrollY = content.height + scrollbarSize > container.height;
161
177
  }
162
178
  }
179
+
180
+ // Detect vertical scrollbar oscillation.
181
+ // Track consecutive hasScrollY flips with no row-height change.
182
+ // Once confirmed (≥ 2 flips), force hasScrollY off — the scrollbar is
183
+ // not genuinely needed, it is a layout feedback loop caused by stale
184
+ // rootSize or the horizontal scrollbar's height cascading.
185
+ {
186
+ const osc = scrollYOscillation.current;
187
+ const heightsChanged = rowsMeta.currentPageTotalHeight !== osc.heights.content || rowsMeta.pinnedTopRowsTotalHeight !== osc.heights.pinnedTop || rowsMeta.pinnedBottomRowsTotalHeight !== osc.heights.pinnedBottom;
188
+ if (heightsChanged) {
189
+ osc.counter = 0;
190
+ osc.heights = {
191
+ content: rowsMeta.currentPageTotalHeight,
192
+ pinnedTop: rowsMeta.pinnedTopRowsTotalHeight,
193
+ pinnedBottom: rowsMeta.pinnedBottomRowsTotalHeight
194
+ };
195
+ }
196
+ if (prevDimensions.isReady && hasScrollY !== prevDimensions.hasScrollY) {
197
+ if (!heightsChanged) {
198
+ osc.counter += 1;
199
+ }
200
+ if (osc.counter >= 2) {
201
+ hasScrollY = false;
202
+ // Recompute hasScrollX without the vertical scrollbar's width impact,
203
+ // otherwise the cascade (hasScrollY → narrower viewport → hasScrollX)
204
+ // keeps the horizontal scrollbar/filler alive and the root keeps resizing.
205
+ hasScrollX = hasScrollXIfNoYScrollBar;
206
+ }
207
+ }
208
+ }
163
209
  if (hasScrollY) {
164
210
  viewportInnerSize.width -= scrollbarSize;
165
211
  }
@@ -198,7 +244,6 @@ function useDimensions(store, params, _api) {
198
244
  autoHeight: params.dimensions.autoHeight,
199
245
  minimalContentHeight: params.dimensions.minimalContentHeight
200
246
  };
201
- const prevDimensions = store.state.dimensions;
202
247
  if (isDeepEqual(prevDimensions, newDimensions)) {
203
248
  return;
204
249
  }
@@ -291,11 +291,11 @@ function useVirtualization(store, params, api) {
291
291
  let virtualRowIndex = -1;
292
292
  const focusedVirtualCell = params.focusedVirtualCell?.();
293
293
  if (!isPinnedSection && focusedVirtualCell) {
294
- if (focusedVirtualCell.rowIndex < firstRowToRender) {
294
+ if (focusedVirtualCell.rowIndex < firstRowToRender && focusedVirtualCell.rowIndex >= 0 && focusedVirtualCell.rowIndex < rowModels.length) {
295
295
  rowIndexes.unshift(focusedVirtualCell.rowIndex);
296
296
  virtualRowIndex = focusedVirtualCell.rowIndex;
297
297
  }
298
- if (focusedVirtualCell.rowIndex > lastRowToRender) {
298
+ if (focusedVirtualCell.rowIndex > lastRowToRender && focusedVirtualCell.rowIndex < rowModels.length) {
299
299
  rowIndexes.push(focusedVirtualCell.rowIndex);
300
300
  virtualRowIndex = focusedVirtualCell.rowIndex;
301
301
  }
package/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-virtualizer v0.3.3
2
+ * @mui/x-virtualizer v0.3.4
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -97,6 +97,21 @@ function initializeState(params) {
97
97
  }
98
98
  function useDimensions(store, params, _api) {
99
99
  const isFirstSizing = React.useRef(true);
100
+
101
+ // Vertical scrollbar oscillation detector.
102
+ // Counts consecutive hasScrollY flips that happen with no row-height change.
103
+ // After 2 flips it is certainly a layout feedback loop, so every further flip
104
+ // is forced to false (no scrollbar). The counter resets when row heights change.
105
+ // Only vertical scrollbar can oscillate because column widths are never 'auto'.
106
+ // https://github.com/mui/mui-x/issues/20539
107
+ const scrollYOscillation = React.useRef({
108
+ counter: 0,
109
+ heights: {
110
+ content: 0,
111
+ pinnedTop: 0,
112
+ pinnedBottom: 0
113
+ }
114
+ });
100
115
  const {
101
116
  layout,
102
117
  dimensions: {
@@ -130,6 +145,7 @@ function useDimensions(store, params, _api) {
130
145
  width: columnsTotalWidth,
131
146
  height: (0, _math.roundToDecimalPlaces)(rowsMeta.currentPageTotalHeight, 1)
132
147
  };
148
+ const prevDimensions = store.state.dimensions;
133
149
  let viewportOuterSize;
134
150
  let viewportInnerSize;
135
151
  let hasScrollX = false;
@@ -167,6 +183,36 @@ function useDimensions(store, params, _api) {
167
183
  hasScrollY = content.height + scrollbarSize > container.height;
168
184
  }
169
185
  }
186
+
187
+ // Detect vertical scrollbar oscillation.
188
+ // Track consecutive hasScrollY flips with no row-height change.
189
+ // Once confirmed (≥ 2 flips), force hasScrollY off — the scrollbar is
190
+ // not genuinely needed, it is a layout feedback loop caused by stale
191
+ // rootSize or the horizontal scrollbar's height cascading.
192
+ {
193
+ const osc = scrollYOscillation.current;
194
+ const heightsChanged = rowsMeta.currentPageTotalHeight !== osc.heights.content || rowsMeta.pinnedTopRowsTotalHeight !== osc.heights.pinnedTop || rowsMeta.pinnedBottomRowsTotalHeight !== osc.heights.pinnedBottom;
195
+ if (heightsChanged) {
196
+ osc.counter = 0;
197
+ osc.heights = {
198
+ content: rowsMeta.currentPageTotalHeight,
199
+ pinnedTop: rowsMeta.pinnedTopRowsTotalHeight,
200
+ pinnedBottom: rowsMeta.pinnedBottomRowsTotalHeight
201
+ };
202
+ }
203
+ if (prevDimensions.isReady && hasScrollY !== prevDimensions.hasScrollY) {
204
+ if (!heightsChanged) {
205
+ osc.counter += 1;
206
+ }
207
+ if (osc.counter >= 2) {
208
+ hasScrollY = false;
209
+ // Recompute hasScrollX without the vertical scrollbar's width impact,
210
+ // otherwise the cascade (hasScrollY → narrower viewport → hasScrollX)
211
+ // keeps the horizontal scrollbar/filler alive and the root keeps resizing.
212
+ hasScrollX = hasScrollXIfNoYScrollBar;
213
+ }
214
+ }
215
+ }
170
216
  if (hasScrollY) {
171
217
  viewportInnerSize.width -= scrollbarSize;
172
218
  }
@@ -205,7 +251,6 @@ function useDimensions(store, params, _api) {
205
251
  autoHeight: params.dimensions.autoHeight,
206
252
  minimalContentHeight: params.dimensions.minimalContentHeight
207
253
  };
208
- const prevDimensions = store.state.dimensions;
209
254
  if ((0, _isDeepEqual.isDeepEqual)(prevDimensions, newDimensions)) {
210
255
  return;
211
256
  }
@@ -300,11 +300,11 @@ function useVirtualization(store, params, api) {
300
300
  let virtualRowIndex = -1;
301
301
  const focusedVirtualCell = params.focusedVirtualCell?.();
302
302
  if (!isPinnedSection && focusedVirtualCell) {
303
- if (focusedVirtualCell.rowIndex < firstRowToRender) {
303
+ if (focusedVirtualCell.rowIndex < firstRowToRender && focusedVirtualCell.rowIndex >= 0 && focusedVirtualCell.rowIndex < rowModels.length) {
304
304
  rowIndexes.unshift(focusedVirtualCell.rowIndex);
305
305
  virtualRowIndex = focusedVirtualCell.rowIndex;
306
306
  }
307
- if (focusedVirtualCell.rowIndex > lastRowToRender) {
307
+ if (focusedVirtualCell.rowIndex > lastRowToRender && focusedVirtualCell.rowIndex < rowModels.length) {
308
308
  rowIndexes.push(focusedVirtualCell.rowIndex);
309
309
  virtualRowIndex = focusedVirtualCell.rowIndex;
310
310
  }
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-virtualizer v0.3.3
2
+ * @mui/x-virtualizer v0.3.4
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-virtualizer",
3
- "version": "0.3.3",
3
+ "version": "0.3.4",
4
4
  "author": "MUI Team",
5
5
  "description": "MUI virtualization library",
6
6
  "license": "MIT",