react-native-screens
react-native-screens copied to clipboard
Android ComposeView, Composable is gone upon returning to Screen from stack
Description
tldr; Jetpack ComposeViews do not maintain state or recompose upon returning to a Screen with a ComposeView driving a component of the Screen.
Suppose you have three screens, screens A, B and C
Screen B has a View that links to a ComposeView(..)
from Android
Navigating to Screen C, then returning to Screen B, the ComposeView driven component is gone
According to this issue tracker, https://issuetracker.google.com/issues/284424175, the issue lies within how ScreenFragment recycles the views https://github.com/software-mansion/react-native-screens/blob/main/android/src/main/java/com/swmansion/rnscreens/ScreenFragment.kt#L307-L321
https://github.com/react-native-community/discussions-and-proposals/issues/446#issuecomment-1012686694
Project to repro (thanks to @thevoiceless) - https://github.com/thevoiceless/RN-Compose-Playground
https://github.com/software-mansion/react-native-screens/assets/3791583/e0a08eb2-4eab-4ca1-ae8e-a3c4e37d1688
Steps to reproduce
- Use a SimpleViewManager to wrap a ComposeView
- Build the ComposeView with a simple Text(..)
- But that ComposeView in Screen A
- Navigate to Screen B
- Navigate BACK to Screen A
- Notice that the ComposeView is gone but the wrapper of the view itself is still in the hierarchy
Snack or a link to a repository
https://github.com/thevoiceless/RN-Compose-Playground
Screens version
3.21.0
React Native version
0.73.5
Platforms
Android
JavaScript runtime
None
Workflow
None
Architecture
None
Build type
None
Device
None
Device model
No response
Acknowledgements
Yes