The Wire · Showcase
REACT NATIVE FIXES BACKGROUND DEADLOCK THAT FREEZES APPS
By RepoJournal · Filed · About Meta
RedBox auto-retry was reloading backgrounded apps and deadlocking the main thread until the watchdog killed them.
React Native shipped a critical fix [1] that gates the RedBox auto-retry timer so it doesn't fire while your app sits in the background. The problem was surgical: a reload while backgrounded would reinitialize native modules, and any module requiring main-queue setup would dispatch synchronously onto a main queue already blocked inside that reload, creating an unbreakable deadlock until the system killed the app. This lands as a patch, not a major release, so pull it immediately if you ship to production. Separately, React Native added TypeScript declarations for requestIdleCallback and cancelIdleCallback [2], closing a gap where these APIs existed at runtime but weren't typed. The New Architecture got native implementations of these in 0.75, while the legacy stack has used JS-timer versions since 2016. Two smaller fixes also landed: a revert of an internal change [3] and a correction to JS sampling profiler error handling [4] that prevents attempting to stop a profiler that never started.
Action items
- → Pull RedBox background deadlock fix [ref:1] before next deploy if shipping to production facebook/react-native [immediate]
- → Update TypeScript types if you use requestIdleCallback [ref:2] facebook/react-native [plan]
References
- [1] Pause RedBox auto-retry reload while app is backgrounded (#57593) facebook/react-native
- [2] Add TypeScript declarations for requestIdleCallback and cancelIdleCallback (#57545) facebook/react-native
- [3] Revert D112116429 (#57591) facebook/react-native
- [4] Propage startJSSamplingProfiler error (#57587) facebook/react-native