🤝 Sponsor

Feature Flags for React Native

Use feature flags to roll out new features gradually, test them with selected users, and disable features instantly if something goes wrong. With ConfigCat, you can control feature availability remotely without waiting for another App Store or Google Play approval.

🎉 React Native 0.87 is Out!

The Strict TypeScript API is now the default. Types are generated straight from RN's source (no more hand-maintained drift), the public API is scoped to root exports only, and deep imports into Libraries/* are now type errors. An opt-out exists, but only through 0.88, so start migrating. There's even a /migrate-to-strict-api skill for agent-driven upgrades.

Other highlights:

  • Metro 0.87: 2x faster source maps, half the memory, stable TS/ESM config support

  • Swift Package Manager (experimental): build iOS with just Xcode. No Ruby, no Bundler, no pod install. Not production-ready yet

  • AGP 9 support: with recommended opt-out flags for built-in Kotlin and the new DSL

  • Raised minimums: Node 22+, Kotlin 2.0+, compileSdk 37 (minCompileSdk 34)

Removals: InteractionManager (use requestIdleCallback), Modal's animated prop, deprecated StatusBar props, and standalone react-devtools support. ImageBackground and DrawerLayoutAndroid are now deprecated.

📦 Packages

  • React Native 0.87.1 is the first patch for the 0.87 line, bringing a newer Hermes build alongside fixes for Swift Package Manager, CocoaPods, Animated typings, and other iOS build tooling. SwiftPM also now fails with a clearer error when an autolinking plugin host is incorrectly referenced as a dependency.

  • Reanimated 4.6.0 adds official React Native 0.87 support and pairs with Worklets 0.12.x. It also brings CSS animation and transition callbacks to iOS and Android, introduces contrastColor(), and continues the work on platform-driven CSS transitions.

  • Reanimated 4.5.4 is an important maintenance update for apps staying on the 4.5 branch. It fixes crashes around stale events and exiting layout animations, Android sticky-header jumps, an iOS crash, and restores compatibility with React Native's LayoutAnimation.configureNext().

  • React Native Worklets 0.12.1 is a small runtime-focused patch that moves UI-thread detection into UIScheduler. It pairs with Reanimated 4.6 and continues tightening the scheduling infrastructure behind worklet execution.

  • VisionCamera 5.2.3 adds onUIRotationChanged(...) for reacting to UI orientation changes and upgrades to Nitro 0.37 for improved View support. It also updates the underlying camera libraries and includes additional camera and orientation fixes.

  • Nitro Modules 0.37.0 continues expanding Nitro's support for high-performance native Views by moving Props and ComponentDescriptor into the C++ core. The release also evolves its prop system, with ReactProp replacing the older CachedProp API while retaining compatibility.

  • React Native Skia 2.11.1 is a rendering-focused maintenance release with fixes around masks, fonts, compositing, paths, and snapshots. Among the fixes are correct boolean handling for Font.setSubpixel() / setEmbolden() and improved srcIn mask compositing.

  • React Native Keyboard Controller 1.22.4 improves compatibility across both old and new React Native setups. It restores older Turbo package support, fixes KeyboardExtender recycling on iOS, and makes its codegen setup more consistent.

  • React Native Safe Area Context 5.9.1 fixes an Old Architecture Android integration issue by correctly registering the Paper Java source set. It’s a small patch, but relevant for apps that still need to support pre-New-Architecture React Native setups.

  • React Native Gesture Handler 3.2.1 fixes PressableWithTouchable so press handlers are correctly forwarded through its testOnly_* props. The release also updates its Pressable prop definitions.

  • Metro 0.84.5 removes the external image-size dependency in favor of vendored image parsers. The change also resolves CVE alerts associated with the previous dependency, making this a worthwhile security-focused bundler update.

  • React Navigation Native 7.3.18 fixes a web issue where navigation state could reset if history.go() took longer than the expected timeout. It’s especially relevant for apps sharing navigation logic between React Native and web.

  • React Navigation Stack 7.10.23 improves stack animation lifecycle handling and avoids unnecessarily restarting animations. The changes should make navigation transitions more predictable, particularly during rapid state changes.

  • React Navigation Core 7.21.13 fixes the return type of getRootState() and corrects fallback-index handling while parsing paths. These are small fixes, but useful for apps with more complex linking and navigation state logic.

  • React Navigation Bottom Tabs 7.18.17 fixes pop-to-top behavior by reading the latest navigation state before deciding what action to perform. This prevents stale state from producing incorrect behavior when interacting with an already-selected tab.

  • React Navigation Native Stack 7.18.9 gets the same state-handling improvement for pop-to-top behavior, ensuring navigation decisions use the latest state rather than a stale snapshot.

  • React Navigation Drawer 7.13.9 also updates its pop-to-top behavior to read the latest state. It’s a small consistency fix across React Navigation's navigator implementations.

  • React Navigation 8.0 alpha continues moving toward the next major release, with recent updates across Native, Stack, Drawer, Core, and Native Stack. The latest alphas fix root-level linking, unnecessary stack animation restarts, navigation context cleanup, and stale-state issues around pop-to-top behavior.

📖 Reads

🎥 Videos

💼 Open Roles

💬 Got questions or want to chat?
DM me on X @adnansahinovich or visit nativeweekly.com for a weekly React Native digest.