React Native 0.87 is now the latest stable release, introducing several significant changes. The Strict TypeScript API becomes the default, replacing hand-maintained type definitions with auto-generated types from source code and restricting deep imports into internal paths. Metro is updated to 0.87 with 2x faster source map generation and 50% lower memory usage. Experimental Swift Package Manager support for iOS is added as an opt-in alternative to CocoaPods, requiring only Xcode. Android Gradle Plugin 9 support is included, with minimum toolchain requirements raised to Node.js 22, Kotlin 2.0+, and compileSdk 34. Numerous deprecated APIs are removed, including InteractionManager, Modal animated prop, and several StatusBar props.

8m read timeFrom reactnative.dev
Post cover image
Table of contents
Highlights ​Breaking Changes ​Deprecations ​Acknowledgements ​Upgrade to 0.87 ​

Questions this post answers

What breaking changes does the Strict TypeScript API introduce in React Native 0.87?

The Strict TypeScript API becomes the default in 0.87, introducing two main breaking changes: deep imports into internal paths like `react-native/Libraries/*` are now type errors, and some type names have changed — notably, refs now use dedicated instance types such as `ViewInstance` and `TextInputInstance`. Types are now auto-generated from source code rather than hand-maintained. An opt-out is available through 0.88 via `react-native-legacy-deep-imports`. Developers upgrading React Native codebases track breaking changes like these on daily.dev.

What are the minimum toolchain requirements for React Native 0.87?

React Native 0.87 requires Node.js 22.13.0 or higher, Kotlin 2.0+ (bundled version is 2.2.0), minCompileSdk 34, and compileSdk/buildTools bumped to 37 on Android. These are hard minimums — projects not meeting them must upgrade their toolchain before migrating to 0.87. Teams planning a React Native upgrade can follow toolchain requirement changes on daily.dev.

How do I set up Swift Package Manager instead of CocoaPods in a React Native 0.87 iOS project?

Run `cd ios` then `npx react-native spm` once in your project. This injects Swift package references into your existing `.xcodeproj` without replacing it — signing, capabilities, and build phases remain untouched. No Ruby, Bundler, or CocoaPods is needed. After initial setup, autolinking re-runs automatically when dependencies change. Reverse the setup with `npx react-native spm deinit`. Note: this is experimental and not recommended for production. Mobile engineers evaluating CocoaPods alternatives for iOS builds find relevant discussions on daily.dev.

166.9K Impressions4 Comments