ScrollView as child of Modal no longer scrollable on first mount/modal opening, RN >= 0.76, Android only, old-arch only
未关闭
还没有人认领这个 Issue。
Component: Modal
Component: ScrollView
Needs: Triage :mag:
Platform: Android
- 主要语言
- C++
- 星标
- 127k
- 派生
- 25.3k
- 平均合并
- 1 天 23 小时
- 30 天内合并 PR
- 4
描述
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
- Install the reproduction app with
yarn android. The reproduction is set to use the old architecture by default. - Click the
Open Scrollable Modalbutton. - Observe that the screen doesn't scroll, even though it should.
- Leave the modal open. Try modifying the code in
ScrollableModalContent.tsxby adding astyle={{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. - 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. - Remove the
style={{flex: 1}}from the ScrollView and save the file. - Enable newArch in Android
gradle.properties. - Rebuild the app and try opening the modal again.
- 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
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
首先使用 yarn android 运行链接的复现程序,然后检查 ScrollableModalContent.tsx 和 gradle.properties 中的 Android 设置,同时比较旧架构和新架构的行为。完成标准是:在 Android 旧架构下首次打开 modal 时,ScrollView 可以滚动,同时保持新架构和 iOS 未受影响的行为。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- android, react-native
- 领域
- mobile
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 冷清
- 描述清晰度
- 基本清楚
- 新手友好度
- 52/100