Patch Changes
-
#1206
767ead4- Cut per-scroll-frame allocations on the defaultlanes === 1path. Range computation previously allocated an options object and two closures on every scroll event; it now does the same work allocation-free, reducing GC pressure during continuous scroll. -
#1212
bc8643b- Don't latch a scroll direction from the read-back of the virtualizer's own adjustment writeapplyScrollAdjustmentfolds the pending adjustment intoscrollOffseteagerly, so the browser's scroll event for that write arrives at exactly the held offset. The scroll-direction computation treated that equality as'backward', which made the defaultshouldAdjustScrollPositionOnItemSizeChangeskip above-viewport re-measure compensation for the rest of theisScrollingResetDelaywindow — so during multi-frame reflows (e.g. a side pane's width animation re-wrapping rows while scrolled up) most frames went uncompensated and the viewport drifted. An event at the held offset carries no direction information, so the direction now stays unchanged in that case; real gestures always move the offset and still latch normally.