Skip to content

[iOS] ScrollView/FlatList content invisible on repeated screen navigation in RTL mode (0.84 regression) #55821

@matan-atiya

Description

@matan-atiya

Description

After upgrading from React Native 0.83.2 to 0.84.0, ScrollView and FlatList content becomes invisible on iOS when navigating to the same screen a second time while RTL mode is active (I18nManager.forceRTL(true)). The content renders correctly on the first visit but disappears on subsequent navigations. This is a regression — 0.83.2 works correctly, on Android 0.84.0.

Expected behavior

ScrollView/FlatList content should render correctly on every navigation, regardless of how many times the screen has been visited.

Actual behavior

  • First visit: Content renders correctly
  • Second visit: Content is invisible (some screens show content "pushed to the side, barely visible")
  • Third visit: Content completely invisible

Key observations from debugging

  • React-side layout values are correctonLayout reports identical dimensions on both first and second visits (e.g., container: 402x768, scrollView: 402x682, contentSize: 402x839)
  • Components DO mount and renderconsole.log in render confirms execution
  • This is a native iOS rendering issue, not a React rendering issue
  • LTR mode works perfectly — switching to English (LTR) eliminates the bug entirely
  • Setting direction: 'ltr' (opposite of RTL) on a wrapper View fixes the issue — but this breaks LTR mode, confirming it's related to how the native direction style property interacts with I18nManager.forceRTL
  • Affects ALL screens with ScrollView/FlatList, not specific components
  • Not related to Modals, navigation transitions, or react-native-screens
  • Switching to @react-navigation/native-stack does NOT fix the issue — confirming it's a core RN problem

React Native Version

  • Broken: 0.84.0 (IOS)
  • Working: 0.83.2

Environment

  • React Native: 0.84.0
  • React: 19.2.0
  • @react-navigation/stack: 7.8.2
  • @react-navigation/native: 7.1.31
  • react-native-screens: 4.24.0
  • Xcode: 16.x
  • iOS Simulator: iPhone (various models)
  • New Architecture (Fabric): enabled (default in 0.84)

Steps to reproduce

  1. Enable RTL mode: I18nManager.forceRTL(true)
  2. Use @react-navigation/stack (JS-based stack navigator) with TransitionPresets.SlideFromRightIOS
  3. Navigate to any screen containing a ScrollView or FlatList
  4. Go back
  5. Navigate to the same screen again
  6. Content is invisible — the screen renders, but ScrollView/FlatList children are not visible

React Native Version

0.84.0

Affected Platforms

Runtime - iOS

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

info Fetching system and libraries information...
System:
  OS: macOS 26.3
  CPU: (8) arm64 Apple M3
  Memory: 140.75 MB / 8.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 22.11.0
    path: /usr/local/bin/node
  Yarn:
    version: 1.22.22
    path: /opt/homebrew/bin/yarn
  npm:
    version: 11.10.0
    path: /usr/local/bin/npm
  Watchman:
    version: 2024.12.02.00
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.16.2
    path: /opt/homebrew/bin/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 25.2
      - iOS 26.2
      - macOS 26.2
      - tvOS 26.2
      - visionOS 26.2
      - watchOS 26.2
  Android SDK: Not Found
IDEs:
  Android Studio: 2025.3 AI-253.29346.138.2531.14876573
  Xcode:
    version: 26.3/17C529
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.13
    path: /usr/bin/javac
  Ruby:
    version: 2.6.10
    path: /usr/bin/ruby
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.2
    wanted: 0.83.2
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: true
  newArchEnabled: true

info React Native v0.84.1 is now available (your project is running on v0.83.2).
info Changelog: https://github.com/facebook/react-native/releases/tag/v0.84.1
info Diff: https://react-native-community.github.io/upgrade-helper/?from=0.83.2&to=0.84.1
info For more info, check out "https://reactnative.dev/docs/upgrading?os=macos".

Stacktrace or Logs

logs `onLayout` reports identical dimensions on both first and second visits (e.g., container: 402x768, scrollView: 402x682, contentSize: 402x839)

MANDATORY Reproducer

https://github.com/react-native-community/reproducer-react-native/blob/main/ReproducerApp/package.json

Screenshots and Videos

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Component: FlatListComponent: ScrollViewImpact: RegressionDescribes a behavior that used to work on a prior release, but stopped working recently.Needs: AttentionIssues where the author has responded to feedback.Needs: ReproThis issue could be improved with a clear list of steps to reproduce the issue.Platform: iOSiOS applications.

    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