-
Notifications
You must be signed in to change notification settings - Fork 346
Description
Description
After upgrading to FlashList v2.0.2 and enabling the New Architecture, we’ve started experiencing regressions related to sticky header rendering — especially when using multiple sticky headers and a collapsible section.
Current behavior
When scrolling down to a section with a sticky header, the header briefly appears twice — one in its list position and one in the sticky position — as if the sticky instance were rendered too early.
This results in a visible flicker or duplication effect.
| Header appears twice | Collapsed header overlapped with itself |
|---|---|
![]() |
https://github.com/user-attachments/assets/4d7e1b96-1d3d-4f0c-a0d1-16bc69b94bee |
Additionally, we have a collapsible header separating the first section of our list. When this header is collapsed, there’s a clear overlap between two instances of the same header (one inline, one sticky).
To make this behavior more noticeable, we applied a different borderBottomColor to the collapsible header, which highlights that both headers are being rendered at the same time.
Expected behavior
Sticky headers should remain smooth and stable while scrolling.
At any given time, only one instance of a header (either inline or sticky) should be visible.
Collapsing a section should not cause the sticky and inline versions of that header to overlap or duplicate.
Reproduction
Expo Snack or minimal reproduction link:
Platform
- iOS
- Android
- Web (if applicable)
Environment
React Native info output:
System:
OS: macOS 15.4.1
CPU: (10) arm64 Apple M1 Pro
Memory: 182.48 MB / 16.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 20.18.0
path: /Users/evej/Library/Caches/fnm_multishells/34718_1760968506490/bin/node
Yarn:
version: 4.5.1
path: /opt/homebrew/bin/yarn
npm:
version: 10.8.2
path: /Users/evej/Library/Caches/fnm_multishells/34718_1760968506490/bin/npm
Watchman: Not Found
Managers:
CocoaPods:
version: 1.16.2
path: /Users/evej/.rvm/gems/ruby-2.7.5/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 24.4
- iOS 18.4
- macOS 15.4
- tvOS 18.4
- visionOS 2.4
- watchOS 11.4
Android SDK: Not Found
IDEs:
Android Studio: 2025.1 AI-251.26094.121.2513.14007798
Xcode:
version: 16.3/16E140
path: /usr/bin/xcodebuild
Languages:
Java:
version: 17.0.15
path: /usr/bin/javac
Ruby:
version: 2.7.5
path: /Users/evej/.rvm/rubies/ruby-2.7.5/bin/ruby
npmPackages:
"@react-native-community/cli":
installed: 20.0.2
wanted: latest
react:
installed: 19.1.0
wanted: 19.1.0
react-native:
installed: 0.81.4
wanted: 0.81.4
react-native-macos: Not Found
npmGlobalPackages:
"react-native": Not Found
Android:
hermesEnabled: true
newArchEnabled: true
iOS:
hermesEnabled: true
newArchEnabled: true
FlashList version: 2.1.0
Additional context
For now we just made the header 1 not collapsable but it is a product regression
Checklist
- I've searched existing issues and couldn't find a duplicate
- I've provided a minimal reproduction (Expo Snack preferred)
- I'm using the latest version of @shopify/flash-list
- I've included all required information above
