Changelog
react-virtuoso
Section titled “react-virtuoso”4.18.13
Section titled “4.18.13”Patch Changes
Section titled “Patch Changes”-
#1493
d3c437eThanks @albertcalasanzs! - Fix the transcript blanking for a frame when an older page is prepended.The compensation for a prepend was a deviation that grows the content followed, one
requestAnimationFramelater, by the scroll that cancels it. In between there is a painted frame in which the list is displaced by the whole page — and because prepends fire nearscrollTop0, that displacement is the entire viewport.The scroll now runs as soon as the renderer acknowledges, from a layout effect, that the deviation has reached the DOM: after the mutation, before paint. Both land in the same paint, and because the content has already grown the scroll can no longer be clamped to the old maximum. If nothing acknowledges by the next frame the previous deferred behaviour still applies, so the worst case is unchanged.
4.18.12
Section titled “4.18.12”Patch Changes
Section titled “Patch Changes”- #1487
d975e6cThanks @petyosi! - Measure window-scrolling lists before they enter the viewport so their estimated height is included in the document layout.
4.18.11
Section titled “4.18.11”Patch Changes
Section titled “Patch Changes”- #1458
0d5214aThanks @wanxiankai! - Handle horizontal list direction changes between LTR and RTL without remounting the list.
4.18.10
Section titled “4.18.10”Patch Changes
Section titled “Patch Changes”fca20faThanks @petyosi! - Fix explicitundefinedinitial top-most item index values crashing when empty data updates to an object-form initial index.
4.18.9
Section titled “4.18.9”Patch Changes
Section titled “Patch Changes”- #1444
0c68e81Thanks @Luccas-carvalho! - Harden scroll-target and initial-index handling:- Clamp the initial top-most item index to the available range, so an out-of-range
initialTopMostItemIndex(for example after the data set shrinks) no longer starts the list at a blank or mid-list position. - Stop mutating the location object passed to
scrollToIndex;normalizeIndexLocationnow applies its defaults to a shallow copy. - Treat a default-positioned
initialTopMostItemIndexof{ index: 0 }the same as0, avoiding a redundant initial scroll and a delayedfollowOutput.
- Clamp the initial top-most item index to the available range, so an out-of-range
4.18.8
Section titled “4.18.8”Patch Changes
Section titled “Patch Changes”- #1442
6b1467cThanks @Luccas-carvalho! - Clamp out-of-range scroll target indexes to the last available item.
4.18.7
Section titled “4.18.7”Patch Changes
Section titled “Patch Changes”- #1399
1fca093Thanks @petyosi! - Fix horizontal Virtuoso item positioning and scrolling in RTL layouts.
4.18.6
Section titled “4.18.6”Patch Changes
Section titled “Patch Changes”- #1393
fa9dd31Thanks @petyosi! - FixuseWindowScrollSSR layout collapse by rendering the window viewport in normal flow while preserving sticky top items.
4.18.5
Section titled “4.18.5”Patch Changes
Section titled “Patch Changes”-
#1388
5871779Thanks @petyosi! - Fix useSyncExternalStore detection for React 19+The version check used
startsWith('18')which excluded React 19, causing it to fall back to the legacy useState+useLayoutEffect subscription path. This could cause tearing issues in concurrent rendering scenarios. Changed toparseInt(React.version) >= 18to correctly use useSyncExternalStore for React 18 and above.
4.18.4
Section titled “4.18.4”Patch Changes
Section titled “Patch Changes”- #1375
620b260Thanks @marcospassos! - FixatBottomStateChangeinuseWindowScrolllists when the Virtuoso instance is rendered below other page content.
4.18.3
Section titled “4.18.3”Patch Changes
Section titled “Patch Changes”4.18.2
Section titled “4.18.2”Patch Changes
Section titled “Patch Changes”-
#1361
7b38166Thanks @petyosi! - Replace ESLint and Prettier with oxlint and oxfmt for faster linting and formatting. Modernize TypeScript configuration withverbatimModuleSyntaxand ES2022 build targets.Source code changes are non-behavioral: stricter equality checks (
===/!==instead of truthiness),??instead of||for defaults, early returns instead of else blocks, self-closing JSX tags, and removal of unnecessary JSX fragments.LogLevelin react-virtuoso is changed from a TypeScript enum to a const object — the named exports (LogLevel.DEBUG, etc.) work identically, but enum reverse-mapping (LogLevel[0]) is no longer supported.
4.18.1
Section titled “4.18.1”Patch Changes
Section titled “Patch Changes”4.18.0
Section titled “4.18.0”Minor Changes
Section titled “Minor Changes”4.17.0
Section titled “4.17.0”Minor Changes
Section titled “Minor Changes”- 58b9703: Add
minOverscanItemCountprop to ensure a minimum number of items are rendered before/after the viewport, useful for tall or collapsible items where pixel-based overscan is insufficient.
4.16.1
Section titled “4.16.1”Patch Changes
Section titled “Patch Changes”- 497681b: provenance test
4.16.0
Section titled “4.16.0”Minor Changes
Section titled “Minor Changes”- 7e327d8: Added heightEstimates prop to provide per-item height estimates for more accurate initial scrollbar sizing with variable height items
4.15.0
Section titled “4.15.0”Minor Changes
Section titled “Minor Changes”- 34646ce: Support fixed size for groups in grouped virtuoso
4.14.1
Section titled “4.14.1”Patch Changes
Section titled “Patch Changes”- f4f307f: Fix bogus context attribute
4.14.0
Section titled “4.14.0”Minor Changes
Section titled “Minor Changes”- 0898bc7: Support `scrollIntoViewOnChange prop for Virtoso”
4.13.0
Section titled “4.13.0”Minor Changes
Section titled “Minor Changes”- 7ee973e: Support table grouping
4.12.8
Section titled “4.12.8”Patch Changes
Section titled “Patch Changes”- dbe93a0: Follow output works with fixedItemHeight set
4.12.7
Section titled “4.12.7”Patch Changes
Section titled “Patch Changes”- a04ba00: Fix for prepend items flickering
4.12.6
Section titled “4.12.6”Patch Changes
Section titled “Patch Changes”- bb0402e: Support window scrolling to iframe react portals
4.12.5
Section titled “4.12.5”Patch Changes
Section titled “Patch Changes”- b1d4519: Revert node requirements
4.12.4
Section titled “4.12.4”Patch Changes
Section titled “Patch Changes”- fdbf0c5: Updated to latest tooling
- fdbf0c5: correct TS types for custom component, context is always passed