React Native 0.87 Arrives with Strict TypeScript by Default and Experimental Swift Package Manager Support

The mobile development landscape continues to evolve rapidly as Meta and the open-source community officially announce the release of React Native 0.87. This major milestone introduces significant structural improvements designed to modernize cross-platform application development. Chief among these updates is the transition of the Strict TypeScript API to the default JavaScript interface, alongside a substantial modernization of underlying toolchain requirements. Furthermore, developers can now experiment with native Swift Package Manager (SwiftPM) integration on iOS, bypassing traditional CocoaPods workflows. As the framework pushes toward leaner builds and stricter type safety, developers are met with upgraded minimum toolchain thresholds, including Node.js 22, Android Gradle Plugin 9, and Kotlin 2.0 and above.
The evolution of React Native’s typing system has been a multi-phase undertaking aimed at eliminating runtime ambiguities and improving developer experience through enhanced tooling intelligence. Originally introduced as an opt-in preview alongside the deprecation of deep imports in version 0.80, the Strict TypeScript API now becomes the foundational standard for all newly initialized projects. This ecosystem-wide shift enforces intentional breaking changes across the API surface, but rewards developers with comprehensive inline documentation and precise type checking. When hovering over components like TextInput in supporting IDEs, engineers now encounter fully populated doc comments and exact symbol signatures, moving away from the sparse documentation characteristic of legacy types. Recognizing that large-scale enterprise applications may require additional time to refactor sprawling codebases, the core team has implemented a temporary escape hatch. Developers can maintain legacy deep imports through a custom condition in their tsconfig.json file. However, this bridge is strictly temporary and is slated for complete removal in the subsequent 0.88 release, signaling a definitive end-of-life for legacy type definitions.

In parallel with JavaScript-layer enhancements, iOS development workflows receive a major experimental upgrade with the introduction of Swift Package Manager support. Historically, React Native developers targeting Apple platforms have relied heavily on CocoaPods and Ruby-based dependency management. Version 0.87 introduces an additive, opt-in alternative that allows developers to manage dependencies natively through Xcode without requiring Ruby, Bundler, or traditional pod installation steps. By executing a specialized deintegration command via the React Native command-line interface, project configurations seamlessly inject Swift package references directly into existing Xcode project files without disrupting native signing capabilities, build phases, or custom configurations. To achieve seamless compatibility with SwiftPM, the core engineering team overhauled the distribution architecture of precompiled binaries, publishing new header-only XCFrameworks that resolve namespace issues more reliably. While CocoaPods remains the default and fully supported pathway for this release cycle, the inclusion of SwiftPM marks a crucial step toward reducing external toolchain dependencies for iOS development teams.
Android developers are similarly affected by infrastructural upgrades in version 0.87, which marks the framework’s official entry into the Android Gradle Plugin (AGP) 9 ecosystem. AGP 9 brings substantial build-system modifications and API shifts that require careful project configuration. To ensure a smooth transition across the broader ecosystem, the React Native upgrade path currently recommends explicitly opting out of built-in Kotlin and the new domain-specific language (DSL) behavior introduced by AGP 9. Developers can manage this by configuring specific property flags within their project’s gradle configuration files. These opt-outs serve as a transitional buffer while the broader community works toward native compatibility with AGP 9 architecture, with permanent adoption expected by the time AGP 10 releases.
The aggressive modernization of React Native 0.87 inevitably comes hand-in-hand with tightened system prerequisites. The framework now enforces minimum toolchain boundaries, requiring Node.js 22 as the baseline runtime environment alongside Android Gradle Plugin 9 and Kotlin 2.0+. These elevated requirements reflect a broader industry trend toward dropping support for legacy environments in favor of modern runtime performance, security patches, and optimized compiler features. Consequently, older versions of React Native, specifically the 0.84 branch, have officially transitioned to unsupported status under the project’s official support lifecycle policy. Teams maintaining legacy applications are strongly encouraged to utilize automated migration tooling, such as community upgrade helpers and dedicated ESLint fixers, to bridge the gap between older architectural paradigms and the modern codebase.

The collaborative nature of the React Native open-source ecosystem is clearly demonstrated in the assembly of this release. Version 0.87 incorporates 265 distinct commits contributed by 74 individual developers from across the global technology landscape. This collective effort highlights the framework’s ongoing maturity as a dominant tool for cross-platform enterprise software deployment. Special recognition has been directed toward key contributors who spearheaded complex architectural changes, including the reorganization of XCFrameworks, the refinement of strict typing rules, and the stabilization of Metro version 0.87, which powers the underlying JavaScript bundling engine with improved performance and leaner output profiles.
Looking ahead at the broader implications for the development community, the release of React Native 0.87 underscores a strategic focus on developer ergonomics and native platform alignment. By forcing the adoption of strict typing and encouraging migration away from legacy scripting dependencies like Ruby on iOS, Meta and its open-source contributors are systematically removing historical friction points that have traditionally complicated cross-platform builds. While the immediate aftermath of any breaking-change release involves migration overhead for enterprise maintenance teams, the long-term trajectory promises more predictable builds, reduced dependency bloat, and a significantly more robust foundation for mobile applications scaling into the future. Developers looking to adopt the new version can initialize fresh projects using the latest command-line interface tools, while existing applications can leverage automated migration guides and upgrade assistants to transition smoothly into the next chapter of React Native development.







