callstack / callstack/react-native-paper

Crash on latest React Native

Open
#4,809 8 comments 8 reactions 0 assignees View on GitHub
bug
Dominant language
TypeScript
Stars
14.5k
Forks
2.2k
Avg merge
5d 23h
Merged PRs (30d)
12

Description

It's uneasy to reproduce and best I have so far is noticing that this component occasionally crashes the app on Android.

````typescript

````

The crash:

````
Process: com.snapdone, PID: 14949
java.lang.IllegalStateException: EdgeToEdgeReactViewGroup contains null child at index 1 when traversal in dispatchGetDisplayList, the view may have been removed.
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4524)
at android.view.View.updateDisplayListIfDirty(View.java:24084)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4556)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4529)
at android.view.View.updateDisplayListIfDirty(View.java:24084)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4556)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4529)
at android.view.View.updateDisplayListIfDirty(View.java:24084)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4556)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4529)
at android.view.View.updateDisplayListIfDirty(View.java:24084)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4556)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4529)
at android.view.View.updateDisplayListIfDirty(View.java:24084)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4556)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4529)
at android.view.View.updateDisplayListIfDirty(View.java:24084)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4556)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4529)
at android.view.View.updateDisplayListIfDirty(View.java:24084)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4556)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4529)
at android.view.View.updateDisplayListIfDirty(View.java:24084)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4556)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4529)
at android.view.View.updateDisplayListIfDirty(View.java:24084)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4556)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4529)
at android.view.View.updateDisplayListIfDirty(View.java:24084)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4556)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4529)
at android.view.View.updateDisplayListIfDirty(View.java:24084)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4556)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4529)
at android.view.View.updateDisplayListIfDirty(View.java:24084)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4556)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4529)
at android.view.View.updateDisplayListIfDirty(View.java:24084)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:694)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:700)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:798)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:5839)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:5490)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:4474)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:3071)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:10659)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1570)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1579)
at android.view.Choreographer.doCallbacks(Choreographer.java:1179)
at android.view.Choreographer.doFrame(Choreographer.java:1108)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1553)
at android.os.Handler.handleCallback(Handler.java:1041)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.dispatchMessage(Looper.java:315)
at android.os.Looper.loopOnce(Looper.java:251)
2025-09-17 16:52:49.272 14949-14949 AndroidRuntime com.snapdone E at android.os.Looper.loop(Looper.java:349) (Ask Gemini)
at android.app.ActivityThread.main(ActivityThread.java:9041)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:929)
````

Deps:
- "react-native": "0.81.4"
- "expo": "54.0.8"
- "react-native-paper": "5.15.5"

Device:
- Google Pixel 7

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the reported Portal and LoadingIndicator case on Android with React Native 0.81.4, Expo 54.0.8, and react-native-paper 5.15.5 on a Pixel 7 or comparable device. Trace the Portal and LoadingIndicator entry points and Android view updates; done means the intermittent EdgeToEdgeReactViewGroup null-child crash no longer occurs.

Written by the indexing model from the issue text.

Assessment

Tech stack
react-native, typescript
Domain
mobile
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.