Shopify / Shopify/flash-list

Sticky header container blocks touch events on content beneath it

Open Beginner friendly
#2,249 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

agent-triage bug P1
Dominant language
TypeScript
Stars
7.2k
Forks
393
Avg merge
1d 3h
Merged PRs (30d)
1

Description

Description

We are using a two column layout to display events with sticky day headers. Because of this unique arrangement, the stickyheader is blocking interaction from any elements beneath it.

When using stickyHeaderIndices with numColumns > 1, the sticky header's CompatAnimatedView container (position: absolute, left: 0, right: 0, zIndex: 2 in StickyHeaders.tsx) spans the full width of the list and intercepts all touch events on the content directly below it.

In our case this means the first item rendered next to a sticky header cannot be pressed.
Theoretically the fix is a one-line change: adding pointerEvents="box-none" to the CompatAnimatedView in StickyHeaders.tsx, which makes the container itself transparent to touches while keeping its children (the header content) interactive.

Current behavior

I've produced a working example:
https://snack.expo.dev/@pridgeyt/flashlist-stickyheader?platform=web

Expected behavior

When pressing on a header, the input event is not blocked and is passed through.

Reproduction

Expo Snack or minimal reproduction link:

Expo Snack Reproduction

Platform

  • iOS
  • Android
  • Web (if applicable)

Environment

React Native info output:
System:
  OS: macOS 26.3.1
  CPU: (14) arm64 Apple M4 Max
  Memory: 353.56 MB / 36.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 22.15.1
    path: /Users/pridgey/.nvm/versions/node/v22.15.1/bin/node
  Yarn:
    version: 3.6.4
    path: /opt/homebrew/bin/yarn
  npm:
    version: 10.9.2
    path: /Users/pridgey/.nvm/versions/node/v22.15.1/bin/npm
  Watchman: Not Found
Managers:
  CocoaPods:
    version: 1.16.2
    path: /Users/pridgey/.rbenv/shims/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 25.0
      - iOS 26.0
      - macOS 26.0
      - tvOS 26.0
      - visionOS 26.0
      - watchOS 26.0
  Android SDK: Not Found
IDEs:
  Android Studio: 2025.1 AI-251.26094.121.2513.14007798
  Xcode:
    version: 26.0.1/17A400
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 21.0.8
    path: /opt/homebrew/opt/openjdk@21/bin/javac
  Ruby:
    version: 3.4.7
    path: /Users/pridgey/.rbenv/shims/ruby
npmPackages:
  "@react-native-community/cli":
    installed: 18.0.0
    wanted: 18.0.0
  react:
    installed: 19.2.0
    wanted: 19.2.0
  react-native:
    installed: 0.83.4
    wanted: 0.83.4
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: true
  newArchEnabled: true

FlashList version: 2.2.2

Additional context

There appears to be a closed issue from 2020:
https://github.com/facebook/react-native/issues/28963

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

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by opening StickyHeaders.tsx and reproducing the issue with the linked Expo Snack using stickyHeaderIndices and numColumns greater than one. Check the CompatAnimatedView touch behavior and verify that the first item beneath the sticky header can be pressed while header interactions remain functional.

Written by the indexing model from the issue text.

Assessment

Tech stack
react-native, typescript
Domain
mobile-dev
Issue type
Bug
Difficulty
1/5
Estimated time
Under an hour
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
82/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.