Repository navigation
Sticky headers in FlatList/ScrollView become non-touchable after upgrading to 0.79.2 #51763
Description
Description
After upgrading to React Native version 0.79.2, sticky header indices (stickyHeaderIndices) in both FlatList and ScrollView components become non-responsive to touch events. The content renders correctly but fails to respond to any user interaction (taps, presses, etc.).
Expected Behavior:
Sticky headers should remain touchable/interactive as in previous versions (e.g., 0.79.1 or earlier), allowing users to interact with buttons, links, or other touchable elements within them.
Observed Behavior:
Sticky headers are visually rendered but ignore all touch events. This breaks functionality for interactive elements (e.g., buttons, checkboxes) within sticky sections.
Reproduction Steps:
Create a FlatList or ScrollView with stickyHeaderIndices set.
Add touchable elements (e.g., TouchableOpacity, Button) inside the sticky header.
Upgrade to RN 0.79.2.
Observe that touch events on sticky headers no longer work.
<ScrollView
style={{ flex: 1 }}
ref={scrollViewRef}
stickyHeaderIndices={[1]}
onScroll={handleScroll}
scrollEventThrottle={16}
nestedScrollEnabled>
.....
Environment:
React Native: 0.79.2
Platform: Android (observed)
Device: All Real devices
Steps to reproduce
Create a FlatList or ScrollView with stickyHeaderIndices set.
Add touchable elements (e.g., TouchableOpacity, Button) inside the sticky header.
Upgrade to RN 0.79.2.
Observe that touch events on sticky headers no longer work.
non_touches.mp4
React Native Version
0.79.2
Affected Platforms
Runtime - Android
Output of npx @react-native-community/cli info
System:
OS: macOS 15.3.1
CPU: (8) arm64 Apple M2
Memory: 171.11 MB / 8.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 22.14.0
path: ~/.nvm/versions/node/v22.14.0/bin/node
Yarn:
version: 3.6.4
path: ~/.yarn/bin/yarn
npm:
version: 10.9.2
path: ~/.nvm/versions/node/v22.14.0/bin/npm
Watchman:
version: 2025.04.28.00
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods:
version: 1.16.2
path: /Users/mac/.gem/ruby/3.4.0/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:
API Levels:
- "33"
- "34"
- "35"
Build Tools:
- 33.0.1
- 34.0.0
- 35.0.0
- 35.0.1
System Images:
- android-29 | Google APIs ARM 64 v8a
- android-35 | Google APIs ARM 64 v8a
- android-35 | Google Play ARM 64 v8a
Android NDK: Not Found
IDEs:
Android Studio: 2024.2 AI-242.23726.103.2422.13016713
Xcode:
version: 16.3/16E140
path: /usr/bin/xcodebuild
Languages:
Java:
version: 17.0.14
path: /usr/bin/javac
Ruby:
version: 3.4.2
path: /opt/homebrew/opt/ruby/bin/ruby
npmPackages:
"@react-native-community/cli":
installed: 18.0.0
wanted: 18.0.0
react:
installed: 19.0.0
wanted: 19.0.0
react-native:
installed: 0.79.2
wanted: 0.79.2
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: true
newArchEnabled: true
iOS:
hermesEnabled: true
newArchEnabled: true
Stacktrace or Logs
System:
OS: macOS 15.3.1
CPU: (8) arm64 Apple M2
Memory: 171.11 MB / 8.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 22.14.0
path: ~/.nvm/versions/node/v22.14.0/bin/node
Yarn:
version: 3.6.4
path: ~/.yarn/bin/yarn
npm:
version: 10.9.2
path: ~/.nvm/versions/node/v22.14.0/bin/npm
Watchman:
version: 2025.04.28.00
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods:
version: 1.16.2
path: /Users/mac/.gem/ruby/3.4.0/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:
API Levels:
- "33"
- "34"
- "35"
Build Tools:
- 33.0.1
- 34.0.0
- 35.0.0
- 35.0.1
System Images:
- android-29 | Google APIs ARM 64 v8a
- android-35 | Google APIs ARM 64 v8a
- android-35 | Google Play ARM 64 v8a
Android NDK: Not Found
IDEs:
Android Studio: 2024.2 AI-242.23726.103.2422.13016713
Xcode:
version: 16.3/16E140
path: /usr/bin/xcodebuild
Languages:
Java:
version: 17.0.14
path: /usr/bin/javac
Ruby:
version: 3.4.2
path: /opt/homebrew/opt/ruby/bin/ruby
npmPackages:
"@react-native-community/cli":
installed: 18.0.0
wanted: 18.0.0
react:
installed: 19.0.0
wanted: 19.0.0
react-native:
installed: 0.79.2
wanted: 0.79.2
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: true
newArchEnabled: true
iOS:
hermesEnabled: true
newArchEnabled: true
MANDATORY Reproducer
https://github.com/ajprince21/rn-bug-1/blob/main/index.js
Screenshots and Videos
No response
Activity
mateoguzmana commentedon Jun 3, 2025
Seems to be working well for me in both legacy and new architecture. Not sure if it is something that got fixed in between, but is there any other behaviour you expect other than the console.logs?
liao666brant commentedon Jun 6, 2025
I have the same problem, is there a temporary solution?
Mootzali commentedon Jun 7, 2025
I have the same problem, mentioned it in : #51290
julian-dueck commentedon Jun 20, 2025
same issue for me in
react-native: 0.79.3a workaround i found is replacing
onPresswith eitheronPressInoronPressOutliao666brant commentedon Jun 26, 2025
This method is very effective
ajayrajtiwari commentedon Jun 27, 2025
Thanks buddy works for me too 👌🏻 But Required a permanent solution from team RN
julian-dueck commentedon Jun 27, 2025
hello @mateoguzmana , quick question. Did you scroll down and then try to tap? this only happens when the header becomes pinned at the top. when you scroll back up and the header becomes unpinned, it works again. I also noticed this behaviour in SectionList
oserrabassa-jcm commentedon Jul 17, 2025
Same issue
Sameed1998 commentedon Jul 18, 2025
Having same issue i fixed it by using Pressable from react-native-gesture-handler
18 remaining items
cd-butterfly commentedon Mar 17, 2026
I have refactored my entire project using react-native-gesture-handler's Pressable to address the sticky header interaction issue. This massive refactor was necessary because our sticky headers consist of multiple nested sub-components. Since it's impossible to predict which sub-components will be used within a sticky context, we had to replace all legacy Touchables across the codebase to ensure no interactive elements are missed. I hope the official team can provide a fundamental fix for this behavior.
TeamAntani commentedon Mar 25, 2026
still broken is 0.84.1
uloco commentedon Apr 30, 2026
@gauravkumar1007 Your fix does not work at all. I think it is AI generated and misleading.
aditya-thummar-devx commentedon Apr 30, 2026
@uloco I was facing same issue, and hopefully got workaround.
Use
Pressablefromreact-native-gesture-handler. Works like a charm !!aditya-thummar-devx commentedon Apr 30, 2026
@uloco Let me know if this works, react if you can. So others can get an idea that is it only working for my project or it's actually temporary workaround.
uloco commentedon Apr 30, 2026
Yes using the
Pressablefromreact-native-gesture-handlerworks but has different issues in my specific project. I was looking for a better workaround but this is fine for now.aditya-thummar-devx commentedon Apr 30, 2026
Yeah, Maybe it won't provide the style effect same as TouchableOpacity. But you can use the conditional or animated styles if needed.
aditya-thummar-devx commentedon Apr 30, 2026
Let me know if I can help with your other issue related to using
Pressablechristophby commentedon Jul 1, 2026
Does it work again?
uloco commentedon Jul 1, 2026
@christophby why would it? like did you release a new version that should fix this? could you please link or specify any details?
Brma1048 commentedon Jul 16, 2026
still having this issue
Mootzali commentedon Jul 18, 2026
@Brma1048 You can use Pressable or Touchable components from react-native-gesture-handler as a workaround. It doesn't fix the underlying issue, but it works.
Brma1048 commentedon Jul 23, 2026
@Mootzali Yes i know but the problem with this is if i mix the Pressable from react-native-gesture-handler and react-native it triggers both onPress. So for example when i have a parent view with react-native Pressable and a child with react-native-gesture-handler Pressable it triggers both onPress.
jakub-oone commentedon Jul 29, 2026
I have fix that touchability issue in sticked header on Android. Here is a patch file. Also working with RN 0.86, just rename the file...
react-native+0.84.1.patch
rehan15701 commentedon Sep 24, 2026
Julian 's workaround worked for me , Even my project is running on "react-native": "0.79.3"
"a workaround i found is replacing onPress with either onPressIn or onPressOut"
I have used onPressOut