react / react/react-native

ScrollView as child of Modal no longer scrollable on first mount/modal opening, RN >= 0.76, Android only, old-arch only

Aperta
#48,822 17 commenti 11 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Component: Modal Component: ScrollView Needs: Triage :mag: Platform: Android
Lingua principale
C++
Stelle
127k
Fork
25.3k
Merge medio
1g 23h
PR unite (30g)
4

Descrizione

Description

Since React Native 0.76.0, a ScrollView as a child of the built-in Modal component is no longer scrollable when the modal first opens on Android.

This seems to only affect the old architecture. New architecture seems to be unaffected.
iOS seems unaffected.

The problem is still present in RN 0.77. Downgrading to 0.75.4 fixes it.

Steps to reproduce
  1. Install the reproduction app with yarn android. The reproduction is set to use the old architecture by default.
  2. Click the Open Scrollable Modal button.
  3. Observe that the screen doesn't scroll, even though it should.
  4. Leave the modal open. Try modifying the code in ScrollableModalContent.tsx by adding a style={{flex: 1}} to the ScrollView and saving the file. This hot-reloads the component without unmounting at the parent, and suddenly the ScrollView becomes scrollable.
  5. Close the modal using the hardware back button. Re-open the modal, observing the content is unscrollable again, even with style={{flex: 1}} still on the ScrollView.
  6. Remove the style={{flex: 1}} from the ScrollView and save the file.
  7. Enable newArch in Android gradle.properties.
  8. Rebuild the app and try opening the modal again.
  9. The modal opens and the content inside scrolls as expected.
React Native Version

0.77.0

Affected Platforms

Runtime - Android

Output of npx react-native info
System:
  OS: Linux 6.12 openSUSE Tumbleweed 20250117
  CPU: (8) x64 Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz
  Memory: 11.91 GB / 31.31 GB
  Shell:
    version: 5.2.37
    path: /bin/bash
Binaries:
  Node:
    version: 20.18.1
    path: ~/.nvm/versions/node/v20.18.1/bin/node
  Yarn:
    version: 1.22.22
    path: /usr/local/bin/yarn
  npm:
    version: 10.8.2
    path: ~/.nvm/versions/node/v20.18.1/bin/npm
  Watchman: Not Found
SDKs:
  Android SDK: Not Found
IDEs:
  Android Studio: Not Found
Languages:
  Java:
    version: 17.0.13
    path: /usr/bin/javac
  Ruby:
    version: 3.4.1
    path: /usr/bin/ruby
npmPackages:
  "@react-native-community/cli":
    installed: 15.0.1
    wanted: 15.0.1
  react:
    installed: 18.3.1
    wanted: 18.3.1
  react-native:
    installed: 0.77.0
    wanted: 0.77.0
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: false
iOS:
  hermesEnabled: Not found
  newArchEnabled: false
Stacktrace or Logs
N/A
Reproducer

https://github.com/goguda/react-native-android-scrollview-in-modal-not-always-scrolling-point-76-up

Screenshots and Videos

No response

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia eseguendo il reproducer collegato con yarn android, quindi esamina ScrollableModalContent.tsx e l’impostazione Android in gradle.properties confrontando il comportamento della vecchia e della nuova architettura. Il lavoro è completato quando la ScrollView è scorrevole alla prima apertura del modal su Android con la vecchia architettura, mantenendo invariato il comportamento della nuova architettura e di iOS.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
android, react-native
Ambito
mobile
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Tranquilla
Chiarezza
Abbastanza chiara
Idoneità per principianti
52/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.