Repository navigation
Prefix ANDROID_LONG_TIMER_MESSAGE with "(ADVICE)" so it doesn't generate non-actionable support requests. #17083
Description
Is this a bug report?
Yes
Have you read the Contributing Guidelines?
Yes
Environment
Any react native version from the last 6+ months.
Steps to Reproduce
Use Firebase in a react-native app (see the dozens of comments on #12981) or just do a setTimeout(() => { }, 60001) in an app.
Expected Behavior
Behaves as in a web browser and performs the timeout without complaint.
Actual Behavior
App displays disruptive yellow warning on the screen saying: Setting a timer for a long period of time, i.e. multiple minutes, is a performance and correctness issue on Android as it keeps the timer module awake, and timers can only be called when the app is in the foreground. See #12981 for more info. (Saw setTimeout with duration 111862ms)
The Fix
Can we please please please change the warning text here to be prefixed with "(ADVICE)" so it’s no longer as disruptive? https://github.com/facebook/react-native/blob/3fa648204c6b89e16b9f9d89dd5705f42e087bb6/Libraries/Core/Timers/JSTimers.js#L54
Context:
The Firebase JavaScript SDK uses setTimeout / setInterval for a variety of tasks that need to be scheduled. For example, refreshing auth tokens, making reconnect attempts after a backoff delay, etc. This is done in the standard JavaScript way by using setInterval() or setTimeout().
React Native supports timers of any length, but currently displays a non-actionable but disruptive yellow warning if you schedule a timer for > 60 seconds. https://github.com/facebook/react-native/blob/3fa648204c6b89e16b9f9d89dd5705f42e087bb6/Libraries/Core/Timers/JSTimers.js#L52
The warning references #12981 which has received a very large amount of comments, upvotes, etc., but it does not actually provide any solution. As far as I can tell, the underlying issue is a React Native one (in how it implements setTimeout / setInterval on Android) and there's nothing developers can do.
Firebase has received multiple support requests and github issues (e.g. firebase/firebase-js-sdk#97, firebase/firebase-js-sdk#283) and the comments regarding Firebase on #12981 have gathered over 100 upvotes.
We (Firebase) have no way to fix this other than reduce our timeouts which if anything will make things worse (we would need to set multiple short timeouts to get to the desired longer timeout).
From my reading of the code, warnings prefixed with "(ADVICE)" do not result in the disruptive yellow box: https://github.com/facebook/react-native/blob/eae4fe810f43266ee54a3bb89558621324d7a326/Libraries/ReactNative/YellowBox.js#L126
So can we please please please change the warning text here to be prefixed with "(ADVICE)" so it’s no longer as disruptive? https://github.com/facebook/react-native/blob/3fa648204c6b89e16b9f9d89dd5705f42e087bb6/Libraries/Core/Timers/JSTimers.js#L54
Activity
Setting ANDROID_LONG_TIMER_MESSAGE to '(ADVICE)'
stale commentedon Feb 5, 2018
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Maybe the issue has been fixed in a recent release, or perhaps it is not affecting a lot of people. If you think this issue should definitely remain open, please let us know why. Thank you for your contributions.
waqaramjad commentedon Nov 4, 2018
I face the same issue React Native performance is not good with firebase