react-native-webview: WebView on Android Crashes Randomly

WebView on Android crashes sometimes in a strange way. The app keeps working normally however the WebView is not loaded and onError does not get called. Is there a way to handle this and reload the WebView.

To Reproduce: I haven’t found a way to reproduce the issue since it happens very randomly but is annoying because you have to restart the app.

Expected behavior: The WebView should keep running normally.

Screenshots/Videos: Here is the crashlog. onError is not fired either.

01-07 18:08:56.840 25270 25270 W cr_AwContents: Application attempted to call on a destroyed WebView
01-07 18:08:56.840 25270 25270 W cr_AwContents: java.lang.Throwable
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at org.chromium.android_webview.AwContents.p(chromium-TrichromeWebViewGoogle.aab-stable-428010133:2)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at org.chromium.android_webview.AwContents.h(chromium-TrichromeWebViewGoogle.aab-stable-428010133:1)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at com.android.webview.chromium.WebViewChromium.evaluateJavaScript(chromium-TrichromeWebViewGoogle.aab-stable-428010133:8)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at android.webkit.WebView.evaluateJavascript(WebView.java:911)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at com.reactnativecommunity.webview.RNCWebViewManager$f.a(Unknown Source:7)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at com.reactnativecommunity.webview.RNCWebViewManager.receiveCommand(Unknown Source:114)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at com.reactnativecommunity.webview.RNCWebViewManager.receiveCommand(Unknown Source:2)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at com.facebook.react.uimanager.NativeViewHierarchyManager.dispatchCommand(Unknown Source:18)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at com.facebook.react.uimanager.UIViewOperationQueue$DispatchCommandOperation.execute(Unknown Source:12)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at com.facebook.react.uimanager.UIViewOperationQueue$1.run(Unknown Source:140)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(Unknown Source:53)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at com.facebook.react.uimanager.UIViewOperationQueue.access$2600(Unknown Source:0)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(Unknown Source:31)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(Unknown Source:0)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(Unknown Source:46)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(Unknown Source:2)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1055)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at android.view.Choreographer.doCallbacks(Choreographer.java:875)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at android.view.Choreographer.doFrame(Choreographer.java:772)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1042)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at android.os.Handler.handleCallback(Handler.java:900)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at android.os.Handler.dispatchMessage(Handler.java:103)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at android.os.Looper.loop(Looper.java:219)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at android.app.ActivityThread.main(ActivityThread.java:8347)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at java.lang.reflect.Method.invoke(Native Method)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
01-07 18:08:56.840 25270 25270 W cr_AwContents:         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
01-07 18:08:56.842 25270 25270 I chatty  : uid=10312(com.streetwriters.notesnook) identical 3 lines
01-07 18:08:56.854 25270 25270 W cr_AwContents: Application attempted to call on a destroyed WebView
01-07 18:08:56.854 25270 25270 W cr_AwContents: java.lang.Throwable
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at org.chromium.android_webview.AwContents.p(chromium-TrichromeWebViewGoogle.aab-stable-428010133:2)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at org.chromium.android_webview.AwContents.h(chromium-TrichromeWebViewGoogle.aab-stable-428010133:1)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at com.android.webview.chromium.WebViewChromium.evaluateJavaScript(chromium-TrichromeWebViewGoogle.aab-stable-428010133:8)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at android.webkit.WebView.evaluateJavascript(WebView.java:911)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at com.reactnativecommunity.webview.RNCWebViewManager$f.a(Unknown Source:7)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at com.reactnativecommunity.webview.RNCWebViewManager.receiveCommand(Unknown Source:114)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at com.reactnativecommunity.webview.RNCWebViewManager.receiveCommand(Unknown Source:2)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at com.facebook.react.uimanager.NativeViewHierarchyManager.dispatchCommand(Unknown Source:18)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at com.facebook.react.uimanager.UIViewOperationQueue$DispatchCommandOperation.execute(Unknown Source:12)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at com.facebook.react.uimanager.UIViewOperationQueue$1.run(Unknown Source:140)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(Unknown Source:53)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at com.facebook.react.uimanager.UIViewOperationQueue.access$2600(Unknown Source:0)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(Unknown Source:31)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(Unknown Source:0)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(Unknown Source:46)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(Unknown Source:2)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1055)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at android.view.Choreographer.doCallbacks(Choreographer.java:875)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at android.view.Choreographer.doFrame(Choreographer.java:772)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1042)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at android.os.Handler.handleCallback(Handler.java:900)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at android.os.Handler.dispatchMessage(Handler.java:103)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at android.os.Looper.loop(Looper.java:219)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at android.app.ActivityThread.main(ActivityThread.java:8347)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at java.lang.reflect.Method.invoke(Native Method)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
01-07 18:08:56.854 25270 25270 W cr_AwContents:         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
01-07 18:08:56.855  1275  8936 E InputDispatcher: Window handle recents_animation_input_consumer has no registered input channel
01-07 18:08:56.855  1275  8936 I chatty  : uid=1000(system) Binder:1275_1B identical 2 lines
01-07 18:08:56.855  1275  8936 E InputDispatcher: Window handle recents_animation_input_consumer has no registered input channel
01-07 18:08:56.888 25270 25270 W cr_AwContents: Application attempted to call on a destroyed WebView
01-07 18:08:56.888 25270 25270 W cr_AwContents: java.lang.Throwable
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at org.chromium.android_webview.AwContents.p(chromium-TrichromeWebViewGoogle.aab-stable-428010133:2)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at org.chromium.android_webview.AwContents.h(chromium-TrichromeWebViewGoogle.aab-stable-428010133:1)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at com.android.webview.chromium.WebViewChromium.evaluateJavaScript(chromium-TrichromeWebViewGoogle.aab-stable-428010133:8)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at android.webkit.WebView.evaluateJavascript(WebView.java:911)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at com.reactnativecommunity.webview.RNCWebViewManager$f.a(Unknown Source:7)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at com.reactnativecommunity.webview.RNCWebViewManager.receiveCommand(Unknown Source:114)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at com.reactnativecommunity.webview.RNCWebViewManager.receiveCommand(Unknown Source:2)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at com.facebook.react.uimanager.NativeViewHierarchyManager.dispatchCommand(Unknown Source:18)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at com.facebook.react.uimanager.UIViewOperationQueue$DispatchCommandOperation.execute(Unknown Source:12)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at com.facebook.react.uimanager.UIViewOperationQueue$1.run(Unknown Source:140)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(Unknown Source:53)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at com.facebook.react.uimanager.UIViewOperationQueue.access$2600(Unknown Source:0)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(Unknown Source:31)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(Unknown Source:0)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(Unknown Source:46)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(Unknown Source:2)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1055)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at android.view.Choreographer.doCallbacks(Choreographer.java:875)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at android.view.Choreographer.doFrame(Choreographer.java:772)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1042)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at android.os.Handler.handleCallback(Handler.java:900)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at android.os.Handler.dispatchMessage(Handler.java:103)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at android.os.Looper.loop(Looper.java:219)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at android.app.ActivityThread.main(ActivityThread.java:8347)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at java.lang.reflect.Method.invoke(Native Method)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
01-07 18:08:56.888 25270 25270 W cr_AwContents:         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)

Environment:

  • OS: Android
  • OS version: All versions
  • react-native version: 0.63.4
  • react-native-webview version: v11.0.2

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 16

Most upvoted comments

A new update…

I found that there is androidHardwareAccelerationDisabled prop in webview that resolved my problem and does not impact the rest of application.

Here, when I have vimeo or youtube video embedded, using androidHardwareAccelerationDisabled={false} crashes sometimes with android 10.

Using androidHardwareAccelerationDisabled={true} not crashes, but vimeo or youtube video not show image, only audio.

My react-native-webview version is 11.2.3

androidHardwareAccelerationDisabled={true} works for me

@ammarahm-ed ,

One update, I could fix disabling the following property in android manifest. android:hardwareAccelerated=“false”

I’m a little bit warning about that. Which impact could I have with that?

Thanks.

Setting androidHardwareAccelerationDisabled={true} does not work for me. This crash only occurs on certain devices for my app. For example, the app works fine on Xiaomi and Moto phones but the app crashes on Samsung Galaxy S10 phone.

@lcaccavaro I think I fixed it by handling the onRenderProcessGone event and removing and adding back the WebView again through state.

const [loaded,setLoaded] = useState(true);

/// in WebView
return loaded && <WebView
onRenderProcessGone={() => {
setLoaded(false);
setTimeout(()=> setLoaded(true),100)
}}
/>
...