software-mansion / software-mansion/react-native-screens
Android ComposeView, Composable is gone upon returning to Screen from stack
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 3.7k
- Forks
- 714
- Avg merge
- 2d 23h
- Merged PRs (30d)
- 71
Description
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
Project to repro (thanks to @thevoiceless) - https://github.com/thevoiceless/RN-Compose-Playground
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
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with ScreenFragment.kt around lines 307-321 and reproduce the issue using the linked RN-Compose-Playground project. Trace how the ComposeView is handled when navigating away from and back to the screen, then verify that its content remains present and recomposes after returning.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, kotlin, react-native
- Domain
- mobile
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100