The Wire · Showcase
REACT TIGHTENS FIBER VALIDATION AS REACT-NATIVE REFACTORS TURBOMULE EXPORTS
By RepoJournal · Filed · About Meta
React's Fiber engine fixed a critical dev-mode bug where HostSingletons were being incorrectly released during effect validation, while React Native is systematically removing legacy RCT_EXPORT_METHOD macros across core TurboModules.
The React team patched a subtle but observable issue in the Fiber reconciler where the double-invoke effect validation technique was triggering HostSingleton acquisition and release cycles during hydration [1] [2]. This wasn't broken before because effect validation rarely happened during hydration, but now it's common enough that apps were seeing unexpected side effects. Separately, React is hardening Flight chunks for Secure EcmaScript compatibility by using Object.defineProperty instead of direct prototype mutation on ReactPromise [3] [4], which aligns better with how the JS spec actually works. Over on React Native, the team is executing a systematic cleanup campaign: dropping RCT_EXPORT_METHOD macros from RCTActionSheetManager, RCTAlertManager, and RCTAppState TurboModules [7] [8] [9], since codegen now owns the JS-to-native dispatch path entirely. Two breaking changes landed simultaneously: setting a role prop now auto-enables the accessible flag on View and Image components [5], aligning web behavior, and SPM's autolinking flow can now be overridden [6], unblocking alternative implementations like Expo's autolinking.
One email a day. Unsubscribe in one click.
Keep up with Meta in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Test dev-mode effect validation in React Fiber apps, especially those with Offscreen components or role-based a11y facebook/react [plan]
- → Audit React Native TurboModule usage for RCT_EXPORT_METHOD macros in your native bridge code facebook/react-native [monitor]
- → Review a11y prop behavior if you're relying on accessible not being set automatically when role is present facebook/react-native [plan]
References
- [1] [Fiber] Don't reaquire HostSingletons during dev effect validation ↗ facebook/react
- [2] [Fiber] Don't reaquire HostSingletons during dev effect validation (#37113) facebook/react
- [3] [Flight] Define Flight chunk `.then` with `Object.defineProperty` ↗ facebook/react
- [4] [Flight] Define Flight chunk `.then` with `Object.defineProperty` (#37109) facebook/react
- [5] feat(a11y): automatically set `accessible` prop with `role` prop (#57633) facebook/react-native
- [6] SPM: allow overriding the autolinking config command (#57662) facebook/react-native
- [7] Drop RCT_EXPORT_METHOD from RCTActionSheetManager TurboModule (#57673) facebook/react-native
- [8] Drop RCT_EXPORT_METHOD from RCTAlertManager TurboModule (#57675) facebook/react-native
- [9] Drop RCT_EXPORT_METHOD from RCTAppState TurboModule (#57676) facebook/react-native