The Wire · Showcase
REACT NATIVE KILLS FABRIC FEATURE FLAGS, JEST ADDS CONDITIONAL MOCKS
By RepoJournal · Filed · About Meta
React Native is shipping Fabric by default after ripping out the last feature flags that controlled the new architecture rollout.
The team completed a multi-PR teardown of the Fabric renderer flags [1][2][3]. The `fixFindShadowNodeByTagRaceCondition` flag is gone [1], replaced with permanent bug fixes for a use-after-free in shadow node lookup. Two more Fabric gates were deleted [2][3], collapsing conditional logic since `enableFabricRenderer()` always returned true on canary anyway. This means Fabric is now the only path for new architecture apps. On the Android side, React Native bumped Kotlin from 1.9 to 2.0 [4] because newer Kotlin versions deprecated older API levels and broke builds with -Werror. Jest shipped a major mock improvement: `mockFn.whenCalledWith(...args)` [5] finally lets you configure return values per argument without branching inside `mockImplementation`. The team also added a pluggable `haste.backend` config option [6], seeding support for Parcel's file watcher in future releases. A behavioral refactor [7] split the 1,157-line `HasteMap` godclass into multiple files, laying groundwork for that watcher swap.
Action items
- → Audit React Native apps for remaining Fabric feature flags and remove conditional logic facebook/react-native [plan]
- → If using React Native on Android, bump Kotlin to 2.0 or higher in your build config facebook/react-native [plan]
- → Test Jest mock changes with existing `mockImplementation` tests before upgrading facebook/jest [monitor]
References
- [1] Remove `fixFindShadowNodeByTagRaceCondition` feature flag (#56850) facebook/react-native
- [2] Remove enableFabricRenderer() call from InteropModuleRegistry (#56852) facebook/react-native
- [3] Remove enableFabricRenderer() call from UIManagerModuleConstantsHelper (#56851) facebook/react-native
- [4] Bump Kotlin API version from 1.9 to 2.0 (#56849) facebook/react-native
- [5] feat(jest-mock): add `mock.whenCalledWith(...)` ↗ facebook/jest
- [6] feat(haste-map): add `haste.backend` option ↗ facebook/jest
- [7] chore(haste-map): refactor massive class into multiple files ↗ facebook/jest
FAQ
- What changed in Meta on May 16, 2026?
- React Native is shipping Fabric by default after ripping out the last feature flags that controlled the new architecture rollout.
- What should Meta teams do about it?
- Audit React Native apps for remaining Fabric feature flags and remove conditional logic • If using React Native on Android, bump Kotlin to 2.0 or higher in your build config • Test Jest mock changes with existing `mockImplementation` tests before upgrading
- Which Meta repositories shipped on May 16, 2026?
- facebook/react-native, facebook/jest