React Native 0.87 release introduces the Strict TypeScript API as the default standard and expands native toolchain support

The release of React Native 0.87 marks a pivotal milestone in the evolution of the cross-platform framework, signaling a shift toward stricter type safety and modernized build infrastructure. As the latest stable iteration of the Facebook-developed ecosystem, version 0.87 replaces the legacy JavaScript API with the Strict TypeScript API as the default, mandates higher minimum toolchain requirements, and introduces experimental support for the Swift Package Manager (SwiftPM) on iOS. These updates represent the culmination of a long-term strategy to reduce architectural complexity and align React Native with contemporary development practices.
The Shift to Strict TypeScript API
The transition to the Strict TypeScript API as the default signifies the end of a multi-year migration process that began with the introduction of an opt-in preview in version 0.80. This architectural pivot is designed to address historical inconsistencies in type definitions that have long plagued large-scale React Native applications. By enforcing strict typing, the development team aims to provide developers with enhanced IDE support, including comprehensive hover-over documentation and autocompletion that previously lacked detail.
For the developer community, this change is not merely cosmetic; it is an ecosystem-wide adjustment. The move deprecates legacy deep imports, pushing developers toward a centralized and more maintainable public API surface. While the transition may necessitate refactoring for some existing codebases, the technical payoff—improved reliability and reduced runtime errors—is substantial. To assist with the transition, the maintainers have integrated the "migrate-to-strict-api" skill into agent-driven upgrade workflows, alongside automated ESLint fixers. For teams unable to migrate immediately, a temporary opt-out bridge is available, allowing for the inclusion of the "react-native-legacy-deep-imports" condition in the project’s tsconfig.json file. This bridge is slated for removal in version 0.88, providing a definitive, albeit short, window for teams to finalize their migration strategies.
Modernizing the Build Chain and Metro
Version 0.87 upgrades the Metro bundler to 0.87, bringing performance improvements and leaner build outputs. Metro, which serves as the heart of the React Native build pipeline, has seen consistent refinement over the past several releases. By tightening the integration between the bundler and the framework’s core, developers can expect faster cold-start times and more efficient dependency resolution.
The release also introduces a significant escalation in minimum toolchain requirements, reflecting the rapid pace of mobile development. Developers are now required to utilize Node.js 22, Android Gradle Plugin (AGP) 9, and Kotlin 2.0+. These requirements ensure that projects remain compatible with the latest security patches and performance features provided by the underlying platform SDKs. The inclusion of support for AGP 9 is particularly noteworthy, as it introduces substantial changes to the Gradle build lifecycle. To mitigate potential disruption, the team recommends that projects explicitly opt out of built-in Kotlin and the new DSL behavior provided by AGP 9 via the android.builtInKotlin=false and android.newDsl=false flags in the gradle.properties file, at least until the ecosystem at large reaches full compatibility.

Experimental Swift Package Manager Integration
Perhaps the most ambitious addition to the 0.87 release is the experimental support for Swift Package Manager (SwiftPM) on iOS. For nearly a decade, CocoaPods has been the de facto standard for managing native iOS dependencies within the React Native ecosystem. However, CocoaPods has often been criticized for its reliance on Ruby and the complexity of its integration process, which can lead to frequent "pod install" sync issues.
The new SwiftPM implementation offers an alternative that leverages Xcode directly, eliminating the need for Ruby and Bundler entirely. By utilizing the same prebuilt XCFrameworks that React Native already distributes, the system allows for a more streamlined dependency management flow. A single command, npx react-native spm --deintegrate, removes CocoaPods from a project and injects Swift package references directly into the .xcodeproj file. While this remains an experimental feature, it addresses a long-standing pain point for developers: the need to manually reconcile native dependency changes. Once the initial setup is complete, the project will automatically detect and resolve dependency changes, effectively automating the linking process and removing the overhead associated with traditional pod management.
Chronology of Recent Evolution
The trajectory of React Native over the past eighteen months has been defined by a concerted effort to decouple the framework from legacy dependencies. The timeline of these changes provides context for the current release:
- Version 0.80 (June 2025): The introduction of the Strict TypeScript API as an opt-in preview, alongside the initial deprecation of deep imports. This release set the stage for the standardization seen in 0.87.
- Version 0.84: A period of stability that preceded the current, more aggressive modernization phase. Version 0.84 is now officially moved to the "unsupported" category, forcing users to migrate to 0.87 to maintain security compliance.
- Version 0.87 (Current): The full transition to the Strict TypeScript API, the adoption of AGP 9, and the debut of experimental SwiftPM support.
This series of releases highlights a clear strategy: consolidate the API, modernize the build infrastructure, and provide modular alternatives to legacy dependency managers.
Implications for the Ecosystem
The move toward stricter type definitions and modern build tools has profound implications for the stability of large-scale React Native projects. By forcing the use of strict types, the framework is reducing the "hidden" surface area where bugs often reside. Furthermore, the push toward AGP 9 and Kotlin 2.0 ensures that React Native applications remain competitive with native apps in terms of performance and access to the latest platform features.
However, these advancements come with a cost. The requirement to upgrade the underlying toolchain and refactor code to adhere to the new TypeScript standards requires a significant investment of engineering time. For mid-sized to large enterprises, this necessitates a structured upgrade path, potentially requiring teams to dedicate entire sprints to dependency management and build-tool alignment. The provided "upgrade helper" and the clear deprecation schedule are critical tools for teams navigating these transitions.

Broader Industry Context
React Native’s transition to SwiftPM is particularly significant in the context of broader mobile development trends. Apple has been steadily pushing SwiftPM as the standard for iOS development, and by embracing this, the React Native team is ensuring the framework remains a first-class citizen in the Apple ecosystem. This shift helps future-proof React Native against potential changes in Apple’s build tool requirements and reduces the reliance on third-party ruby-based tools, which are increasingly seen as a maintenance burden for modern CI/CD pipelines.
Furthermore, the decision to raise the minimum Node.js requirement to version 22 aligns with the broader JavaScript community’s move toward newer, more performant runtime environments. As React Native continues to grow, its reliance on stable and modern infrastructure becomes increasingly vital. The 0.87 release is a testament to the framework’s commitment to maturity, prioritizing long-term maintainability over the ease of short-term updates.
Conclusion and Acknowledgements
The 0.87 release of React Native is a substantial update that reinforces the framework’s position as a robust solution for cross-platform mobile development. By finalizing the Strict TypeScript API, updating core build tools like Metro and AGP, and testing the waters with SwiftPM, the core team has provided a clear roadmap for the future.
The release is the result of 265 commits from 74 contributors, demonstrating the strength of the open-source community that surrounds React Native. While the breaking changes and increased toolchain requirements present challenges, they are necessary steps to ensure that the framework can scale with the demands of modern mobile applications. Developers are encouraged to consult the official migration guides and use the React Native Upgrade Helper to ensure a smooth transition to this latest version, as older versions are phased out of the support cycle.







