Skip to content

FlatList faulty rendering when direction='ltr' in RTL app #55433

@furlupe

Description

@furlupe

Description

FlatList with huge amount of data (around 60 items or more) and style direction: 'ltr' in RTL environment fails to render all of items properly - it skips some of the items, yet list can be scrolled over them.
See the recording for details (comes from a real Android device).

Upon looking into the DOM, it seems like that Flatlist replaces the items with spacer, so it could be a virtualization failure:

Image Image

Steps to reproduce

  1. Run provided Snack on an Android device
  2. Change app's direction to the RTL
  3. Try to scroll to the left
  4. Notice blank space within the list upon further scrolling, which should've been red

React Native Version

0.83.1

Affected Platforms

Runtime - Android

Output of npx @react-native-community/cli info

System:
  OS: Windows 11 10.0.26100
  CPU: (20) x64 12th Gen Intel(R) Core(TM) i7-12700
  Memory: 6.26 GB / 31.77 GB
Binaries:
  Node:
    version: 22.16.0
    path: C:\Program Files\nodejs\node.EXE
  Yarn:
    version: 1.22.21
    path: C:\Users\IliaVolgin\AppData\Roaming\npm\yarn.CMD
  npm:
    version: 10.9.2
    path: C:\Program Files\nodejs\npm.CMD
  Watchman: Not Found
SDKs:
  Android SDK:
    API Levels:
      - "28"
      - "30"
      - "31"
      - "33"
      - "34"
      - "35"
      - "36"
    Build Tools:
      - 30.0.3
      - 33.0.0
      - 33.0.1
      - 34.0.0
      - 35.0.0
      - 36.0.0
    System Images:
      - android-27 | Google Play Intel x86 Atom
      - android-28 | Intel x86_64 Atom
      - android-30 | AOSP ATD Intel x86_64 Atom
      - android-30 | Google Play Intel x86 Atom
      - android-31 | Google Play Intel x86_64 Atom
      - android-33 | Wear OS 4 Intel x86_64 Atom
      - android-33 | Google APIs Intel x86_64 Atom
      - android-33 | Google Play Intel x86_64 Atom
      - android-34 | Google APIs Intel x86_64 Atom
      - android-35-ext15 | Wear OS 5.1 Intel x86_64 Atom
      - android-35 | Google Play Intel x86_64 Atom
      - android-36.1 | Pre-Release 16 KB Page Size Google Play ARM 64 v8a
      - android-36.1 | Pre-Release 16 KB Page Size Google Play Intel x86_64 Atom
      - android-36.1 | Pre-Release 16 KB Page Size Google APIs ARM 64 v8a
      - android-36.1 | Pre-Release 16 KB Page Size Google APIs Intel x86_64 Atom
      - android-36 | Wear OS 6.0 Intel x86_64 Atom
      - android-36 | Google Play Intel x86_64 Atom
      - android-36 | Pre-Release 16 KB Page Size Google Play Intel x86_64 Atom
    Android NDK: Not Found
  Windows SDK:
    AllowDevelopmentWithoutDevLicense: Disabled
    Versions:
      - 10.0.19041.0
IDEs:
  Android Studio: Not Found
  Visual Studio:
    - 18.2.11415.280 (Visual Studio Community 2026)
Languages:
  Java:
    version: 17.0.11
    path: C:\Program Files\Common Files\Oracle\Java\javapath\javac.EXE
  Ruby: Not Found
npmPackages:
  "@react-native-community/cli":
    installed: 20.0.0
    wanted: 20.0.0
  react:
    installed: 19.2.0
    wanted: 19.2.0
  react-native:
    installed: 0.83.1
    wanted: 0.83.1
  react-native-windows: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: Not found
  newArchEnabled: Not found

Stacktrace or Logs

n\a

MANDATORY Reproducer

https://snack.expo.dev/@furlupe/rn-flatlist-ltr-rtl-reproducable

Screenshots and Videos

Screen_recording_20260206_110030.mp4

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions