Skip to content

FlashList v2 (Android): tap-to-edit focuses the wrong row's TextInput #2299

@2shrestha22

Description

@2shrestha22

Description

On Android, when a FlashList row's tap handler swaps that row from a TouchableOpacity to an autofocused TextInput, the focused TextInput ends up on a different row than the one tapped. Tapping Item 10 may focus Item 3's TextInput with "Item 3" shown as the initial value. FlatList with identical row markup does not exhibit this.

Current behavior

Tap a row in the middle of a scrolled FlashList. On Android:

  • A different row becomes the focused / editing row.
  • That row's TextInput shows its own name as the initial value.
  • The on-screen editingId debug text reflects the other row's id.
  • Sometimes the tap does not work. Keyboard appears and hides quickly.
Kapture.2026-05-27.at.15.36.12.mp4

Expected behavior

The tapped row's TextInput is the one that mounts and gains focus, with the tapped row's name as the initial value — same as FlatList.

Reproduction

Expo Snack or minimal reproduction link:

https://snack.expo.dev/@2shrestha22/flash-list-with-text-input-bug

Platform

  • iOS
  • Android
  • Web (if applicable)

Environment

React Native info output:
System:
  OS: macOS 15.x
  Shell: zsh
Binaries:
  Node: 20.20.2
  Yarn: 4.12.0
SDKs:
  iOS SDK: present (not used for this report)
  Android SDK: present
Languages:
  Java: 17.x
npmPackages:
  react: 19.1.0
  react-native: 0.81.5
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: true
  newArchEnabled: true

FlashList version: 2.0.2 (Expo SDK 54 bundled version) — also reproduced on 2.3.1
Expo SDK: 54

Additional context

  • The reproduction uses no keyboard library, gesture-handler wrapper, or bottom sheet.
  • FlatList with identical row markup and props does not exhibit the symptom.

Checklist

  • I've searched existing issues and couldn't find a duplicate
  • I've provided a minimal reproduction
  • I'm using the latest version of @shopify/flash-list
  • I've included all required information above

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions