React Native 0.87 Released With Strict TypeScript Default and Experimental SwiftPM Support

The Meta-backed cross-platform mobile development framework React Native has officially announced the rollout of version 0.87, introducing major infrastructural shifts designed to modernize the developer experience and align the ecosystem with contemporary toolchain standards. Spearheaded by this release is the transition of the Strict TypeScript API to the default JavaScript interface, an update to the Metro bundler, and the introduction of experimental support for the Swift Package Manager (SwiftPM) on iOS. Alongside these developer-facing enhancements, version 0.87 raises baseline environment requirements, compelling development teams to adopt Node.js 22, the Android Gradle Plugin (AGP) 9, and Kotlin 2.0 or higher.
Main Facts of the Release
React Native 0.87 represents a collaborative effort involving 74 distinct contributors who collectively authored 265 commits. The most prominent change in this iteration is making the Strict TypeScript API the default. Originally introduced as an opt-in preview in version 0.80 alongside the deprecation of deep imports, the Strict API forces ecosystem-wide uniformity. It replaces legacy types with comprehensive type information, ensuring that hovering over components such as TextInput yields full documentation and property details directly within Integrated Development Environments (IDEs).
To accommodate applications and libraries that require additional time to refactor their codebases, the core maintainers have preserved a temporary opt-out mechanism. Developers can revert to legacy types through version 0.88 by adding the "react-native-legacy-deep-imports" custom condition to their tsconfig.json files. However, the development team has confirmed that legacy TypeScript types will be permanently removed in the subsequent release cycle, signaling a hard deadline for outstanding ecosystem migrations.
Simultaneously, the Metro bundler has been updated from version 0.84 to 0.87, bringing performance optimizations and leaner execution metrics. On the mobile platform fronts, Apple ecosystem developers gain experimental support for Swift Package Manager, while Android developers receive compatibility with the newly minted Android Gradle Plugin 9.
Chronology and Background Context
The journey toward React Native 0.87 has been shaped by a multi-year initiative to eliminate legacy patterns, reduce technical debt, and tighten integration with native platform tooling. The foundational steps for the Strict TypeScript API were laid out in mid-2025 with the release of version 0.80, which first deprecated deep imports and invited community feedback. Over subsequent minor releases, the core team worked alongside major library maintainers to resolve incompatibilities and standardize root exports.

Similarly, the integration of Swift Package Manager has been a long-requested feature among iOS developers seeking a native alternative to CocoaPods. Historically, React Native’s dependency management on Apple platforms relied entirely on CocoaPods and Ruby-based toolchains, introducing complexity for developers who prefer an Xcode-native workflow. The exploration of SwiftPM culminated in RFC #0994, which outlined a non-destructive integration strategy that injects package references directly into existing Xcode project files without altering manual signing configurations or build phases.
On the Android side, the adoption of AGP 9 addresses major architectural shifts introduced by Google in the Android build system. Because AGP 9 brings substantial breaking changes to Gradle builds, React Native 0.87 introduces specific property flags—namely setting android.builtInKotlin=false and android.newDsl=false in the gradle.properties file—to ensure stability while the broader ecosystem transitions.
Supporting Data and Technical Specifications
The magnitude of React Native 0.87 is reflected in its strict adherence to modern toolchain baselines. By raising minimum requirements, the framework ensures that developers leverage the latest performance, security, and language features available in the broader JavaScript and native ecosystems.
Minimum Toolchain Requirements in Version 0.87:
- Node.js: Version 22 or higher
- Android Gradle Plugin (AGP): Version 9 (with temporary opt-out flags for built-in Kotlin and new DSL behaviors)
- Kotlin: Version 2.0+
- iOS Deployment Targets: Maintained compatibility with modern Xcode toolchains
For iOS developers opting to test the experimental Swift Package Manager integration, the migration path requires running a single command within the iOS directory: npx react-native spm --deintegrate. This command systematically removes CocoaPods dependencies and transitions the project to consume prebuilt XCFrameworks published directly by the React Native repository. Crucially, subsequent dependency changes do not require running a post-install command equivalent to pod install; the project autonomously detects modifications and handles autolinking during the native compilation phase.
To achieve structural compatibility with SwiftPM’s rigorous requirements regarding XCFramework headers, the framework maintainers restructured binary distribution formats. Developers may notice newly introduced headers-only frameworks designed to streamline namespace resolution. Consequently, codebase imports that previously utilized bare-form angle brackets (such as #import <RCTAppDelegate.h>) must be updated to include standard namespace declarations (e.g., #import <React/RCTAppDelegate.h>).
Official Responses and Community Reactions

Community reception to the release has been largely positive, praised particularly for addressing long-standing friction points in iOS and TypeScript workflows. While breaking changes naturally introduce migration overhead, the framework maintainers have proactively supplied migration tooling to ease the burden on development teams.
In addition to standard ESLint fixers and the widely adopted React Native Upgrade Helper, the core team highlighted the introduction of specialized agent-driven upgrade capabilities. Projects utilizing automated developer assistants can leverage the /migrate-to-strict-api skill, which houses direct step-by-step instructions designed to automate the transition to the new Strict TypeScript specifications.
Contributors and institutional partners who spearheaded significant portions of the codebase enhancements were formally recognized in the release notes. The collective output of 74 contributors emphasizes the open-source community’s commitment to maintaining a fast, scalable, and type-safe framework capable of competing with native development paradigms.
Broader Impact and Strategic Implications
The release of React Native 0.87 marks a pivotal milestone in the maturation of cross-platform application architecture. By making the Strict TypeScript API mandatory by default, Meta and the core contributor group are signaling a definitive shift toward enterprise-grade reliability. Strict typing drastically reduces runtime errors, improves IDE autocompletion, and aligns React Native development practices with modern web and backend TypeScript standards.
Furthermore, the introduction of experimental Swift Package Manager support underscores a strategic effort to reduce external dependencies on Ruby-based infrastructure within the iOS ecosystem. Simplifying the build pipeline down to native Xcode mechanics lowers the barrier to entry for incoming developers and aligns React Native more closely with native Swift application development models.
As version 0.87 establishes itself as the new stable baseline—concurrently moving version 0.84.x into unsupported status—development teams across the industry are encouraged to audit their codebases, review the comprehensive migration guides, and begin planning their transition paths. With upcoming releases poised to completely remove legacy type bridges and further stabilize SwiftPM and AGP 9 integrations, React Native continues to solidify its position as a robust, high-performance solution for modern mobile engineering.







