Closed federicot closed 2 years ago
I have the same problem in production. "react-native": "0.65.1", "react-native-gesture-handler": "1.9.0", "@react-navigation/native": "5.8.10",
facing same issue "react-native": "0.65.1", "react-native-gesture-handler": "1.9.0"
Any update on this one. occuring for me as well. Every time I try restarting the app programatically.
"react-native": "0.65.1", "react-native-gesture-handler": "1.9.0" // Any version actually
we are also suffering from this problem reported by users online. EXPECTING a solution!
+1
+1
We are also seeing this with:
"react-native": "0.66.1",
"react-native-gesture-handler": "1.8.0",
+1
+1
+1
com.facebook.react.bridge.JSApplicationIllegalArgumentException: Could find root view for a given ancestor with tag 6343
at com.swmansion.gesturehandler.react.RNGestureHandlerModule.tryInitializeHandlerForReactRootView(RNGestureHandlerModule.java:18)
at com.swmansion.gesturehandler.react.RNGestureHandlerModule.attachGestureHandler(RNGestureHandlerModule.java:1)
at java.lang.reflect.Method.invoke(Method.java:-2)
at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:18)
at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:13)
at com.facebook.react.bridge.queue.NativeRunnable.run(NativeRunnable.java:-2)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:1)
at android.os.Looper.loop(Looper.java:214)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:8)
at java.lang.Thread.run(Thread.java:919)
Same issue here too "react-native": "0.66.1", "react-native-gesture-handler": "^1.10.3",
Same issue here too "react-native": "0.66.1", "react-native-gesture-handler": "^1.10.3",
This may not really be a fix, but we found a workaround for this that is working well for us. We are using:
"react-native": "0.66.1",
"react-native-gesture-handler": "1.8.0",
Remove the Override in MainActivity.java:
- @Override
- protected ReactActivityDelegate createReactActivityDelegate() {
- return new ReactActivityDelegate(this, getMainComponentName()) {
- @Override
- protected ReactRootView createRootView() {
- return new RNGestureHandlerEnabledRootView(MainActivity.this);
- }
- };
- }
Add the GestureHandlerRootView to your app.
+ import { GestureHandlerRootView } from "react-native-gesture-handler";
...
RNGestureHandlerModule.java
:
- throw new JSApplicationIllegalArgumentException("Could find root view for a given ancestor with tag "
+ ancestorViewTag);
... and just return instead of throwing. Honestly we're not exactly sure of the ramifications of this, but the app seems to behave normally in this scenario.
+ return;
@systemride Thanks for sharing. Are you also using codepush?
This may not really be a fix, but we found a workaround for this that is working well for us. We are using:
"react-native": "0.66.1", "react-native-gesture-handler": "1.8.0",
- Remove the Override in MainActivity.java:
- @Override - protected ReactActivityDelegate createReactActivityDelegate() { - return new ReactActivityDelegate(this, getMainComponentName()) { - @Override - protected ReactRootView createRootView() { - return new RNGestureHandlerEnabledRootView(MainActivity.this); - } - }; - }
- Add the GestureHandlerRootView to your app.
+ import { GestureHandlerRootView } from "react-native-gesture-handler"; ... + <GestureHandlerRootView> + <App/> + </GestureHandlerRootView>
- This step might not be necessary and probably not recommended by the library authors, but we also forked our own version and made the following changes to
RNGestureHandlerModule.java
:- throw new JSApplicationIllegalArgumentException("Could find root view for a given ancestor with tag " + ancestorViewTag);
... and just return instead of throwing. Honestly we're not exactly sure of the ramifications of this, but the app seems to behave normally in this scenario.
+ return;
Well, unfortunately, your trick won't do for me, my app goes completely blank
Well, unfortunately, your trick won't do for me, my app goes completely blank
I updated my comment, you might also try adding flex styles to the component. Eg:
<GestureHandlerRootView style={{ flex: 1 }}>
@systemride Thanks for sharing. Are you also using codepush?
No, not using codepush.
Damn, I did not even thought about that, I ended up using patch-package to patch the module and return instead of throw, I don't have any overrides on my MainActivity.java, it's working fine, I may try your way tho thanks!
@federicot You asked if another user was using Codepush.
Are you aware of a relationship between Codepush and this crash?
My team is seeing an increase in crashes with this stacktrace, and it's not clear to us why. Unlike @systemride , we are using Codepush, and the crashes seem to have increased after a Codepush.
@federicot You asked if another user was using Codepush.
Are you aware of a relationship between Codepush and this crash?
My team is seeing an increase in crashes with this stacktrace, and it's not clear to us why. Unlike @systemride , we are using Codepush, and the crashes seem to have increased after a Codepush.
Our team is also using Codepush. Crashes with this stack trace is pretty common after a codepush restart on Android. We have our app wrapped in GestureHandlerRootView
, but maybe something about the codepush restart causes this to become unmounted? I'm planning on looking more into it this week.
@federicot You asked if another user was using Codepush.
Are you aware of a relationship between Codepush and this crash?
My team is seeing an increase in crashes with this stacktrace, and it's not clear to us why. Unlike @systemride , we are using Codepush, and the crashes seem to have increased after a Codepush.
@nchase We are seeing a slight correlation when we do codepush releases. There's also this related issue https://github.com/software-mansion/react-native-gesture-handler/issues/1724
We use codepush too
As a temporal solution, we made a fork of stack navigator and replaced the GestureHandlerRootView
wrapper with View
for the Android app, because it doesn't use any gesture feature in our case. It works stable now.
Codepush user, also seeing similar crash
We have the same issue after the codepush releases
There is interesting analysis by @netshade https://github.com/software-mansion/react-native-gesture-handler/issues/715#issuecomment-816899347
@kmagiera Hi, could you explain please the reason for checking rootViewTag < 1
and not for rootViewTag == View.NO_ID
inside tryInitializeHandlerForReactRootView(ancestorViewTag: Int) method?
Do you have a plan to fix this issue or maybe any workarounds? What do you think about this advice https://github.com/software-mansion/react-native-gesture-handler/issues/1675#issuecomment-979411493
I was able to resolve this issue in my project. The problem is that Codepush.restartApp
doesn't actually restart the app. Instead, it uses the ReactNativeInstanceManager class to reload the bundle:
This means that if any RN-GestureHandler components begin initializing before a Codepush.restartApp
, there is a very good chance that when they finish., the RootNode doesn't exist anymore. This is what causes the crash.
To solve this, you have to make sure there are no instances of RN-GestureHandler in the process of loading before a Codepush.restartApp
operation. This includes things like react-navigation
, which will mount gesture handlers behind the scenes.
In our case, when our app loads we begin a codepush sync. While the codepush is in any of these states, we render a simple View with no gesture handlers or react-navigation are mounted: CHECKING_FOR_UPDATE
, DOWNLOADING_PACKAGE
, UPDATE_INSTALLED
, INSTALLING_UPDATE
.
Only after the codepush is completely finished, it's safe to mount any react-navigation components.
I have the same problem with code push in production. What I don't understand is that it is not systematic and in staging we are not able to reproduce it.
I have the same problem with code push in production. What I don't understand is that it is not systematic and in staging we are not able to reproduce it.
It's not systematic because it's a race condition between 'attachGestureHandler' and codepush/ReactNativeInstanceHandler. If the gesture handler wins, then there is no crash. If you try it on an older Android phone, you should be able to reproduce it. I have a Samsung galaxy J3 and can reproduce it fairly often.
Does anyone have steps that we can follow to consistently reproduce this bug? (ideally in an emulator)
+1
We have a lot of these crashes but we do not use codepush so while it seems to be triggered by a codepush restart it can also happen in apps that do not use codepush at all.
We're facing the same issue with OTA updates by expo-updates. It's happening since we upgraded react native to 0.66
we found a way to test this out. In our case, our codePush installMode uses the ON_NEXT_RESUME
strategy, so after downloading the codePush update it is installed when user comes back to the foreground.
background
to active
.Hope this helps
The error doesn't say "Could not find" but "Could find".
@systemride have you discovered any issues related to your workaround?
This next one is more of a question for the maintainers: why is it desirable to throw an error in this case?
@systemride have you discovered any issues related to your workaround?
So far we have not discovered any other issues to our workaround but it's still something we want to revisit.
Also maybe worth noting... that while we don't use codepush, we do use react-native-restart which might do something similar to codepush.
+1
same problem here, any solution?
We're facing the same issue with OTA updates by expo-updates. It's happening since we upgraded react native to 0.66 @j-piasecki @kmagiera
@kmagiera maybe this is a question that you can answer, since it seems that you may have written this code originally: why does this library throw an error in this case?
We have the same issue here, any updates?
We're facing the same issue with OTA updates by expo-updates. It's happening since we upgraded react native to 0.66 @j-piasecki @kmagiera
We're facing the same issue with OTA updates by expo-updates. It's happening since we upgraded react native to 0.66 @j-piasecki @kmagiera
0.66.2 + react-native-gesture-handler + CodePush same issues
Thank you, @j-piasecki ❤️
Has anyone had time to try https://github.com/software-mansion/react-native-gesture-handler/pull/1936 as a patch?
hi @LFMAKER @brduck are you guys find a way to solve this on expo?
are there any solutions?
any solution??? RN 0.69
Description
We are seeing the following crash on Android:
Screenshots
Steps To Reproduce
I was not able to reproduce it consistently, but it seems to happen after the app goes to foreground.
Package versions