Commit 60efeca
Fix RetryableMountingLayerException crash in SurfaceMountingManager.addViewAt
Summary:
## Problem
The `addViewAt` method in `SurfaceMountingManager` crashes with a `RetryableMountingLayerException` when trying to find a `ViewState` for a child tag that doesn't exist in the `tagToViewState` map.
**Error:** `Unable to find viewState for tag 290. Surface stopped: false`
**Logview:** [252c85116a7ab5c4ec93ef3c3373cf9d](https://www.internalfb.com/logview/system_vros_crashes/252c85116a7ab5c4ec93ef3c3373cf9d)
## Root Cause
The `addViewAt` method uses `getViewState()` which throws `RetryableMountingLayerException` when a tag is not found. This can happen due to race conditions where a view's state is removed (e.g., during surface cleanup or view deletion) before the mount item that references it is executed.
## Fix
Replaced `getViewState()` calls with `getNullableViewState()` + null checks + soft exception logging + early return for both the parent and child tag lookups in `addViewAt`. This matches the existing pattern already used by `removeViewAt`, which handles the same scenario gracefully.
The fix:
- Uses `getNullableViewState(parentTag)` instead of `getViewState(parentTag)` for the parent view state lookup
- Uses `getNullableViewState(tag)` instead of `getViewState(tag)` for the child view state lookup
- Adds null check for the child view itself
- Logs soft exceptions with the `SURFACE_MOUNTING_MANAGER_MISSING_VIEWSTATE` category for monitoring
- Returns early instead of crashing, allowing the surface to continue operating
Changelog: [Android][Fixed] - Fixed crash in SurfaceMountingManager.addViewAt when viewState is missing for a tag
Differential Revision: D993646211 parent 6ec4597 commit 60efeca
1 file changed
Lines changed: 1 addition & 2 deletions
File tree
- packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting
Lines changed: 1 addition & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
307 | 307 | | |
308 | 308 | | |
309 | 309 | | |
310 | | - | |
311 | | - | |
| 310 | + | |
312 | 311 | | |
313 | 312 | | |
314 | 313 | | |
| |||
0 commit comments