Mobile Development

React Native 0.87 Arrives with Default Strict TypeScript, Swift Package Manager Support, and Higher Toolchain Baselines

The cross-platform mobile development landscape shifted once again as the core development team officially announced the release of React Native 0.87. This major milestone version introduces several structural enhancements aimed at modernizing the framework’s internal architecture, improving developer experience, and tightening integration with native toolchains on both iOS and Android. Among the most notable updates are the transition of the Strict TypeScript API to the default JavaScript interface, an upgrade to Metro 0.87, experimental support for the Swift Package Manager (SwiftPM), and significant bumps to minimum toolchain requirements, including Node.js 22 and Kotlin 2.0+.

The rollout of version 0.87 follows a predictable release cadence that emphasizes stability, performance, and long-term ecosystem health. As mobile operating systems evolve and developer tooling advances, frameworks like React Native must continually adapt to leverage modern language features and build systems. Version 0.87 addresses technical debt while laying the groundwork for a more streamlined, predictable development lifecycle across platforms.

Main Facts and Core Upgrades

The headline feature of React Native 0.87 is the promotion of the Strict TypeScript API to the default JavaScript interface for all new and upgraded projects. Originally introduced as an opt-in preview in version 0.80 alongside the deprecation of deep imports, this strict typing model brings intentional breaking changes designed to enforce cleaner code and richer editor feedback. Developers hovering over components such as TextInput will now encounter comprehensive type information and doc comments directly within their integrated development environments (IDEs).

While the transition to the Strict TypeScript API is expected to require minor adjustments for existing codebases, the core team has provided dedicated migration documentation and an ESLint fixer. For development teams unable to migrate immediately, a temporary opt-in bridge remains available through React Native 0.88 via a custom condition ("react-native-legacy-deep-imports") in the project’s tsconfig.json file. However, legacy TypeScript types are scheduled for complete removal in the subsequent release.

Concurrently, the JavaScript bundler Metro has been updated from version 0.84 to 0.87, bringing performance optimization and enhanced bundling mechanics. This update aligns with the framework’s overarching goal of reducing build bottlenecks and accelerating iteration times for developers working on large-scale applications.

React Native 0.87 - Strict TypeScript API, Metro Update, Swift Package Manager, AGP 9 Support

Chronology and Background Context

The journey toward React Native 0.87 began months earlier with incremental previews and community consultations. The rollout of the Strict TypeScript API first took shape in version 0.80, where developers were given their initial opportunity to test the stricter definitions and adapt their libraries. Throughout subsequent iterations, the core maintainers collaborated closely with ecosystem partners and library maintainers to refine root exports and resolve incompatibilities.

The introduction of experimental Swift Package Manager (SwiftPM) support represents another historical shift for the framework’s iOS ecosystem. For years, CocoaPods has served as the undisputed standard for dependency management in iOS React Native projects. However, managing Ruby dependencies, Bundler, and complex Podfile configurations has occasionally presented friction points for developers. By introducing an additive, opt-in SwiftPM integration path that consumes prebuilt XCFrameworks, the team is exploring a future where Xcode alone suffices for native iOS project management.

Supporting Data and Technical Specifications

React Native 0.87 is built upon a substantially raised baseline of toolchain requirements, reflecting the rapid pace of advancement in the broader software engineering ecosystem. Developers upgrading to or initiating projects on version 0.87 must ensure their environments satisfy the following minimum specifications:

  • Node.js 22
  • Android Gradle Plugin (AGP) 9
  • Kotlin 2.0+

The inclusion of AGP 9 support is particularly significant for Android developers, as AGP 9.0 introduces substantial API and build behavior alterations. Because AGP 9 brings major changes to Gradle builds, the current recommendation for React Native 0.87 projects is to explicitly opt out of built-in Kotlin and the new DSL behavior by adding specific properties (android.builtInKotlin=false and android.newDsl=false) to the android/gradle.properties file. These temporary flags are expected to be phased out in future AGP releases as ecosystem adoption matures.

On the iOS side, adopting SwiftPM required a fundamental rethinking of how precompiled binaries are distributed. SwiftPM enforces stricter rules regarding XCFramework structure and header locations than CocoaPods. To satisfy these constraints, the framework now publishes dedicated header-only XCFrameworks. Consequently, developers must update bare-form angle includes in their native code—changing imports like #import <RCTAppDelegate.h> to the namespaced format #import <React/RCTAppDelegate.h>.

React Native 0.87 - Strict TypeScript API, Metro Update, Swift Package Manager, AGP 9 Support

Official Responses and Community Contributions

The release of React Native 0.87 was propelled by a massive collaborative effort. According to project metrics, the version incorporates 265 commits contributed by 74 distinct developers from across the global open-source community. The core team formally expressed gratitude to the community members whose dedication and significant contributions shaped the final build.

Community feedback has also driven specific tooling enhancements. For automated or agent-driven code migrations, specialized community skills such as /migrate-to-strict-api have been developed to streamline the transition process alongside standard ESLint automation. Furthermore, architectural proposals like RFC #0994 (detailing SwiftPM integration) and RFC #1006 (tracking ecosystem-wide AGP 9 adoption) continue to serve as transparent public forums for architectural debate and consensus-building.

Broader Impact and Implications

The release of React Native 0.87 carries profound implications for the mobile development community, signaling a decisive move toward stricter type safety and more modern build toolchains. By making the Strict TypeScript API the default, the framework is aligning itself with industry best practices seen in modern backend and frontend web development, where rigorous typing significantly reduces runtime errors and enhances maintainability.

Furthermore, the experimental introduction of Swift Package Manager hints at a future where iOS development within the React Native ecosystem is less reliant on Ruby-based toolchains, potentially lowering the barrier to entry for developers coming from native Swift backgrounds or web environments. While CocoaPods remains fully supported and remains the default for this release, the groundwork laid by SwiftPM support opens a viable path toward a faster, more streamlined Xcode-native workflow.

As version 0.87 takes its place as the latest stable release—thereby moving version 0.84.x into unsupported territory according to official support policies—development teams are encouraged to consult the React Native Upgrade Helper and review their project configurations. By embracing these modernizations, the React Native ecosystem continues to cement its position as a robust, enterprise-grade solution for cross-platform mobile application development.

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button