Flipkart/recyclerlistview
High performance listview for React Native and web!
π What's Changed
- Check react version to solve ref problem by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/792
- Full Changelog: https://github.com/Flipkart/recyclerlistview/compare/4.2.2...4.2.3
π What's Changed
- Fix: Update ref handling in StickyContainer for React 19 compatibility by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/791
- Full Changelog: https://github.com/Flipkart/recyclerlistview/compare/4.2.1...4.2.2
π What's Changed
- Bugfix(layoutSize) fix item not render after initial data size is empty by @shawnchendev in https://github.com/Flipkart/recyclerlistview/pull/781
- Implement `getNativeScrollRef` by @j-piasecki in https://github.com/Flipkart/recyclerlistview/pull/776
β¨ New Contributors
- @shawnchendev made their first contribution in https://github.com/Flipkart/recyclerlistview/pull/781
- @j-piasecki made their first contribution in https://github.com/Flipkart/recyclerlistview/pull/776
- Full Changelog: https://github.com/Flipkart/recyclerlistview/compare/4.2.0...4.2.1
π What's Changed
- Increase tolerance inside layout manager by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/744
- Full Changelog: https://github.com/Flipkart/recyclerlistview/compare/4.1.4...4.2.0
π What's Changed
- Fix stable id extra compute and proptypes by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/743
- Full Changelog: https://github.com/Flipkart/recyclerlistview/compare/4.1.3...4.1.4
π What's Changed
- [#731] Only call _forceSizeUpdate when non-deterministic rendering is used by @kevin-kp in https://github.com/Flipkart/recyclerlistview/pull/734
β¨ New Contributors
- @kevin-kp made their first contribution in https://github.com/Flipkart/recyclerlistview/pull/734
- Full Changelog: https://github.com/Flipkart/recyclerlistview/compare/4.1.2...4.1.3
π What's Changed
- Npe fix by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/737
- Full Changelog: https://github.com/Flipkart/recyclerlistview/compare/4.1.1...4.1.2
π What's Changed
- Fix arbitrary stop calls on JS item animator by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/728
- Full Changelog: https://github.com/Flipkart/recyclerlistview/compare/4.0.1...4.1.1
π What's Changed
- fix: optional chaining for clearAll by @hirbod in https://github.com/Flipkart/recyclerlistview/pull/725
β¨ New Contributors
- @hirbod made their first contribution in https://github.com/Flipkart/recyclerlistview/pull/725
- Full Changelog: https://github.com/Flipkart/recyclerlistview/compare/4.0.0...4.0.1
π What's Changed
- Added bring to focus functionality by @anirudhagarwal365 in https://github.com/Flipkart/recyclerlistview/pull/585
- Making RLV render stack wait for pending offset by @ananyachandra14 in https://github.com/Flipkart/recyclerlistview/pull/604
- Update README.md by @bobychaudhary in https://github.com/Flipkart/recyclerlistview/pull/672
- Item container override by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/675
- Undefined index while rendering sticky by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/674
- Adding capability to set final offset after progressive list view updates by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/685
- Plv render after first draw by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/688
- Expose scrollable nodes by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/690
- + 14 more
π API Changes
- `optimiseForInsertDeleteAnimations` is a no-op. Please use `prepareForLayoutAnimationRender` instead
- `bringToFocus` API now reads `windowShift` from `applyWindowCorrection` output to correct its target offset
β¨ New Contributors
- @anirudhagarwal365 made their first contribution in https://github.com/Flipkart/recyclerlistview/pull/585
- @bobychaudhary made their first contribution in https://github.com/Flipkart/recyclerlistview/pull/672
- @ElviraBurchik made their first contribution in https://github.com/Flipkart/recyclerlistview/pull/695
- @fortmarek made their first contribution in https://github.com/Flipkart/recyclerlistview/pull/700
- Full Changelog: https://github.com/Flipkart/recyclerlistview/compare/3.0.5...4.0.0
π What's Changed
- Handled pending resize observer updates by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/720
- Full Changelog: https://github.com/Flipkart/recyclerlistview/compare/3.3.0-beta.1...3.3.0-beta.2
π What's Changed
- Add resize detection on RNW mode by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/719
- Full Changelog: https://github.com/Flipkart/recyclerlistview/compare/3.2.0-beta.4...3.3.0-beta.1
π What's Changed
- Fix no op set state by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/706
- Added prop to suppress bounded size exception by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/709
- remove unnecessary force refresh by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/710
- Remove no data warning by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/711
- Full Changelog: https://github.com/Flipkart/recyclerlistview/compare/3.2.0-beta.2...3.2.0-beta.4
π What's Changed
- Forcing size change in renderer if onLayout is missing by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/705
- Full Changelog: https://github.com/Flipkart/recyclerlistview/compare/3.2.0-beta.1...3.2.0-beta.2
π What's Changed
- Added bring to focus functionality by @anirudhagarwal365 in https://github.com/Flipkart/recyclerlistview/pull/585
- Making RLV render stack wait for pending offset by @ananyachandra14 in https://github.com/Flipkart/recyclerlistview/pull/604
- Update README.md by @bobychaudhary in https://github.com/Flipkart/recyclerlistview/pull/672
- Item container override by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/675
- Fix undefined index while rendering sticky by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/674
- Adding capability to set final offset after progressive list view updates by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/685
- `ProgressiveListView` should render after first onLayout by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/688
- Expose scrollable nodes by @naqvitalha in https://github.com/Flipkart/recyclerlistview/pull/690
- + 7 more
π API Changes
- `optimiseForInsertDeleteAnimations` is a no-op. Please use `prepareForLayoutAnimationRender` instead
- `bringToFocus` API now reads `windowShift` from `applyWindowCorrection` output to correct its target offset
β¨ New Contributors
- @anirudhagarwal365 made their first contribution in https://github.com/Flipkart/recyclerlistview/pull/585
- @bobychaudhary made their first contribution in https://github.com/Flipkart/recyclerlistview/pull/672
- @ElviraBurchik made their first contribution in https://github.com/Flipkart/recyclerlistview/pull/695
- @fortmarek made their first contribution in https://github.com/Flipkart/recyclerlistview/pull/700
- Full Changelog: https://github.com/Flipkart/recyclerlistview/compare/3.0.5...3.2.0-beta.1
β¨ New Features:
- Server Side Rendering support. `layoutSize` prop introduced that can be passed on the server. This value will be used for first render and frame skip that happens on normal client rendering to measure size is avoided.
- `onItemLayout` callback added. Can report when an item layout changes. First call can also be used as a proxy to determine when atleast one item has been rendered on screen. The callback doesn't report the layout however, it can be queried from RLV ref.
- `alwaysStickyFooter` prop available to make the last sticky footer item remain at the end of the screen.
π Bug Fixes:
- OffsetY compute fix for first sticky render
- Fixed incorrect reference to `this.props` instead of `newProps` while updating `onVisibleIndicesChanged` callback
β¨ New Features:
- Server Side Rendering support. `layoutSize` prop introduced that can be passed on the server. This value will be used for first render and frame skip that happens on normal client rendering to measure size is avoided.
- `onItemLayout` callback added. Can report when an item layout changes. First call can also be used as a proxy to determine when atleast one item has been rendered on screen. The callback doesn't report the layout however, it can be queried from RLV ref.
- `alwaysStickyFooter` prop available to make the last sticky footer item remain at the end of the screen.
π Bug Fixes:
- OffsetY compute fix for first sticky render
- Fixed incorrect reference to `this.props` instead of `newProps` while updating `onVisibleIndicesChanged` callback
π Changes
- New prop `layoutSize` added. Use this to pass a size that can be used to render RLV in the first frame itself. This can also enable SSR. If you want RLV to use the right size after mount set `canChangeSize` to `true`.
π₯ Breaking Changes:
- `distanceFromWindow` is deprecated and removed, use applyWindowCorrection instead.
β¨ New Features:
- Recyclerlistview has now been moved to react 16 however, it still remains compatible with older versions of react.
- Moved GridLayoutProvider into recylerlistview. [Refer this](https://github.com/muskeinsingh/recyclerlistview-gridlayoutprovider) while we update samples.
- You can now do `import { GridLayoutProvider } from "recyclerlistview"` (recommended)
- `renderStickyContainer` introduced in StickyContainer, used to provide custom styling options for StickyObjects.
- `applyWindowCorrection` introduced, used to provide correctional values for the visible window bound for RecyclerListView.
- `renderContentContainer` provided to wrap the list items inside a custom component for custom use cases.
π¦ Improvements:
- #387 Compat component to maintain compatibility across react version.
π Bug Fixes:
- #400 Fix zero height start or end being prevented from inflating.
- #401 Fix breaks if layout provider and data providers are changed in the same pass.
π₯ Breaking Changes:
- onVisibleIndexesChanged deprecated. Use onVisibleIndicesChanged instead.
- Lot of internal changes. Test well before shipping.
β¨ New Features:
- ProgressiveListView with dynamic render ahead.
- Sticky items added. Wrap your RecyclerListView component with StickyContainer and pass header and footer indices to stick the items to the top or bottom.
- Support for debugging of difference in cell dimension.
- `forceRerender` now available for custom use cases on web
π¦ Improvements:
- https://github.com/Flipkart/recyclerlistview/pull/272 Support IE11 window scroll offset
- https://github.com/Flipkart/recyclerlistview/pull/257 Building process simplified
- https://github.com/Flipkart/recyclerlistview/pull/237 Layout type check for computed layouts
- https://github.com/Flipkart/recyclerlistview/pull/231 OnRecreateParams added in default export
- https://github.com/Flipkart/recyclerlistview/pull/213 Optional anchoring
- https://github.com/Flipkart/recyclerlistview/pull/216 Removed all binds
- https://github.com/Flipkart/recyclerlistview/pull/212 Removed requestAnimationFrame polyfill
- https://github.com/Flipkart/recyclerlistview/pull/196 Accomodating content insets and content container paddingΒ in row calculations
π Bug Fixes:
- https://github.com/Flipkart/recyclerlistview/pull/299 Import was not from web
- https://github.com/Flipkart/recyclerlistview/pull/301 Build Fix
- https://github.com/Flipkart/recyclerlistview/pull/238 Add styles when using useWindowScroll={true}
- https://github.com/Flipkart/recyclerlistview/pull/223 Fix scroll value issue when scrollOffset is less than distance
- https://github.com/Flipkart/recyclerlistview/pull/219 Fix for scroll to offset api
- https://github.com/Flipkart/recyclerlistview/pull/210 Stuck animator fix
- https://github.com/Flipkart/recyclerlistview/pull/193 Fix missing onLayout
- Other misc fixes
π Bug Fixes:
- Common debounce method removed
- Scroll inconsistencies due to `distanceFromWindow` fixed
- RelayoutReqIndex matches with dataProvider length now
- `forceRerender` method added to enforce renders if required
- Sticky header related bug fixes
π₯ Breaking Changes:
- onVisibleIndexesChanged deprecated. Use onVisibleIndicesChanged instead.
- Lot of internal changes. Test well before shipping.
β¨ New Features:
- ProgressiveListView with dynamic render ahead.
- Sticky items added. Wrap your RecyclerListView component with StickyContainer and pass header and footer indices to stick the items to the top or bottom.
- Support for debugging of difference in cell dimension.
π¦ Improvements:
- https://github.com/Flipkart/recyclerlistview/pull/272 Support IE11 window scroll offset
- https://github.com/Flipkart/recyclerlistview/pull/257 Building process simplified
- https://github.com/Flipkart/recyclerlistview/pull/237 Layout type check for computed layouts
- https://github.com/Flipkart/recyclerlistview/pull/231 OnRecreateParams added in default export
- https://github.com/Flipkart/recyclerlistview/pull/213 Optional anchoring
- https://github.com/Flipkart/recyclerlistview/pull/216 Removed all binds
- https://github.com/Flipkart/recyclerlistview/pull/212 Removed requestAnimationFrame polyfill
- https://github.com/Flipkart/recyclerlistview/pull/196 Accomodating content insets and content container paddingΒ in row calculations
π Bug Fixes:
- https://github.com/Flipkart/recyclerlistview/pull/299 Import was not from web
- https://github.com/Flipkart/recyclerlistview/pull/301 Build Fix
- https://github.com/Flipkart/recyclerlistview/pull/238 Add styles when using useWindowScroll={true}
- https://github.com/Flipkart/recyclerlistview/pull/223 Fix scroll value issue when scrollOffset is less than distance
- https://github.com/Flipkart/recyclerlistview/pull/219 Fix for scroll to offset api
- https://github.com/Flipkart/recyclerlistview/pull/210 Stuck animator fix
- https://github.com/Flipkart/recyclerlistview/pull/193 Fix missing onLayout
π¦ Improvements
- Stable Id support: Adds `getStableId(index: number): string` as second param in `DataProvider` constructor. Significantly improves re-rendering on data set changes. Enables add/remove animations.
- New prop `optimizeForInsertDeleteAnimations` forcefully unmounts removed items to kick in layout animations. Without it RLV prefers reusing the cell later. This prop requires stable ids.
- Externalised Layout Provider: You can write your own and pass it in the same prop to RLV e.g, if you want masonry with recycling you can write it and open source yourself :)
- SSR Fixes to allow server builds
- `onRecreate` prop added which triggers a callback in case of context preservation passing necessary info like `lastOffset` for more optimizations in app logic.
- Improved warning in case of missing RLV bounds
- Warning if mounted without any data
π Bug Fixes
- https://github.com/Flipkart/recyclerlistview/issues/178
- https://github.com/Flipkart/recyclerlistview/issues/172 Only warning for now, in next major version we'll start throwing exceptions in case RLV is mounted without data.
π Changes
- Fixed broken links in documentation
- Formatting changes to `README`
π Changes
- Adjustment to default `renderAheadOffset` on `web`
- Incremental loading/View type change sample added (Expo demo 1)
- Documentation around performance
π Bug Fixes:
- Fixed type for `externalScrollView` prop
- Added new prop `scrollViewProps` for better typescript support, it proxies all given props to the internal ScrollView
π¦ Improvements
- RNW mode doesn't import `Animated` by default leading to reduced bundle sizes.
- RNW mode now uses `transforms` to position and shift items leading to better performance, almost identical to `/web` mode.
β¨ New Features:
- ItemAnimator interface added, customize to your will how RLV handles layout changes. Allows you to modify animations that move cells. You can do things like smoothly move an item to a new position when height of one of the cells has changed. StableId work is in progress which will further strengthen this. Works on all supported platforms.
π Changes:
- Default flex direction is being optimized on pure web version to match React Native. This will lead to more consistent ports. Can be a breaking change for some use cases. Please test before upgrading.
- Performance improvements on web and react-native-web version.
- In case of non deterministic rendering `DefaultItemAnimator` is used to shift items from estimated positions to actual. This looks better and avoids the need to skip frames while layout settles down. This also improves load time by atleast 2 frames.
π Bug Fixes
- Missing `scrollTo` method on web fixed.
π Bug Fixes
- Fixed issues with onVisibleIndexesChanged callback #98, #83
- Changing layout provider will now force cell re-render
π¦ Improvements
- Significant reduction in layout thrashing while having `forceNonDeterministicRendering={true}`. This will greatly improve the performance for lists having non deterministic and variable heights.
- New prop `extendedState` is now added where all extra data that list items depend on can be passed. Changing this object will re-render all items. Make sure `shouldComponentUpdate` is also defined in your item.
