-
Notifications
You must be signed in to change notification settings - Fork 24.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Errors thrown in useEffect cleanup functions result in Internal React error
#32673
Comments
Out of curiosity, I checked React 16.13.1. Same behaviour in RN. I’ve also checked that, in browser, React 17.0.2 (but not 16.13.1) gobbles up the error as well when using a production build:
Experimental code (save as <div id="root"></div>
<script src="https://unpkg.com/react@17/umd/react.production.min.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js" crossorigin></script>
<script>
const h = React.createElement;
const Hello = () => {
React.useEffect(() => {
console.log('mount');
return () => {
console.log('cleanup');
throw new Error('KABOOM!');
console.log('cleanup2');
}
}, []);
return 'Hello!';
}
const App = () => {
const [shown, show] = React.useState(true);
return h('div', null, [
shown ? h(Hello, {}, null) : null,
h('button', {onClick: () => show(!shown)}, 'Toggle')
]);
}
ReactDOM.render(
h(App, {}, null),
document.getElementById("root")
);
</script> Possibly related: facebook/react#22650 |
This issue is stale because it has been open 180 days with no activity. Remove stale label or comment or this will be closed in 7 days. |
Any updates? |
Any update regarding fix ? |
any solution for this |
Full error
|
this us an issue with native base |
@satya164 Do you have any solution regarding this ? |
@Kailash-MAF trying to find out this issue. but didnt find out |
I got roughly the same issue here, with react base
|
I got the same error!
Error message: TypeError: undefined is not a function |
solved it ? |
same issue facing here |
I also have this issue... |
yap me too , have this issue , anyone can solve it ? |
Check if any async is used inside useEffect hook and remove it. |
The return in a |
Same problems.
|
I am experiencing the same problem. The error gets thrown when I fast refresh but not when I enter the page |
I removed async and await from a useEffect |
any update?? I get the same error when I updated my RN to .0.71.1 |
@Degan90 and for anyone else in the future, it's not an RN problem as far as I can tell. The problem is something to do with your code in the useEffect. Previous solutions from comments above:
Your problem might be different from the ones listed above but you'll have to debug the code yourself to figure out the exact problem. I would start by reading the RN doc or searching up the error to find other mistakes when using |
any updates? |
This comment was marked as off-topic.
This comment was marked as off-topic.
@jarapamikaella @trehman82 and any future commenters. Please read the comments already left in this issue: #32673. There are no solutions/updates posted because as far as I can tell this is a problem the way you are using |
Thanks for reply. Actually I am not using useEffect in my project. All the components are class based. I don't know whats the matter. |
@zahid502 I've already stated my answer numerous times in the thread above. No one can help you since it is likely a problem with your code. Do not ping specific commenters unless you are specifically replying to them. |
We just upgraded React Native from 0.69.7 to 0.71.3 and we started getting this in tons of Testing Library tests. Started by removing all the useEffects in a component to test a simple render test, and was still getting the error. So I stripped the component of anything besides a View inside a SafeAreaView and still getting the error in the test. So now the Tree is simply this:
Theres no error in the tests if I render the Component without the Navigator stack, so seems to be related to @react-navigation |
Thank you so much! |
@UnderTheMoonspell I'm also getting this error without anything weird happening in my |
I thought the solution is that you guys, when calling event Listener .. // and for clearing the event you should this! |
The anothet possibilty is that when using addListener in ReactNative. i.e navigation.addListener() must need a route that you as a 2nd argument when you don't pass and destructure any route then that will be cause for undefined! |
I had already updated the listeners to:
But following @colaquecez suggestion worked great, problem solved.
Thanks! |
Upgrading from react-navigation 5 to react-navigation 6 solved the problem for me. |
@colaquecez suggestion worked for me as well.
|
for those having an issue with react-navigation, I had the same issue after upgrading to RN 0.71.8, my app is using react-navigation and I implemented deep linking following their documentation for v5 here: https://reactnavigation.org/docs/5.x/deep-linking The doc provide an example with this piece of code: return () => {
// Clean up the event listeners
Linking.removeEventListener('url', onReceiveURL); <=== HERE
branch.unsubscribe();
}; wich was causing the issue on my app. return () => {
// Clean up the event listeners
unsubscribeFirebase();
linkingSubscription.remove(); <=== HERE
}; Hope this can help |
|
Hello, You need: useEffect(() => {
const func = async() => {
}
func();
// IMPORTANT
return () => {};
}, []); so you need to return a cleanup function in any case even if you don't need it |
This issue is stale because it has been open 180 days with no activity. Remove stale label or comment or this will be closed in 7 days. |
This issue was closed because it has been stalled for 7 days with no activity. |
Description
When an app includes a functional component which calls
React.useEffect
with a cleanup callback, and that callback throws an error when called, the following is produced in the console:The error is not detectable otherwise: the error boundary component does not catch it, nor does installing a global handler with
ErrorUtils.setGlobalHandler()
.This is on React Native 0.66.3 and React 17.0.2. I’ve also checked React 17.0.1 (no difference in behaviour), and RN 0.65.0 (the one that we currently use in production) which also gobbles up the error, but silently, without producing any message in the console.
The app seemingly continues to work after the error occurs.
I don’t think this is an actual React bug (as opposed to React Native), because on web, the error appears in the browser console, as expected.
I checked only the debug build behaviour, not the release one. It may be the case that in release builds the error sometimes does bubble up to the global error handler (if set), because we’re seeing prod exceptions that are likely to be related to this issue. For the record, what causes this for us is this issue in react-navigation, exacerbated by the fact that they had moved removing listeners to a
useEffects
cleanup function.Version
0.66.3
Output of
react-native info
Steps to reproduce
Create a RN app with
react-native init myapp
.Edit
App.js
to read:Touch me
twice.Expected result (in the
react-native start
output):Actual result:
Snack, code example, screenshot, or link to a repository
No response
The text was updated successfully, but these errors were encountered: