Mobile Development

React Native 0.87 Arrives With Strict TypeScript Defaults, Swift Package Manager Support, and Higher Toolchain Baselines

The cross-platform mobile development landscape is shifting once again as Meta and the open-source community officially release React Native 0.87. This major update brings several foundational changes aimed at improving developer experience, modernizing build systems, and tightening type safety across the entire framework. Most notably, version 0.87 makes the Strict TypeScript API the default for JavaScript development, introduces experimental support for the Swift Package Manager (SwiftPM) on iOS, and updates Metro to version 0.87. Additionally, the release establishes higher minimum toolchain requirements, mandating Node.js 22, Android Gradle Plugin (AGP) 9, and Kotlin 2.0 or higher.

Main Facts and Core Updates

At the heart of the React Native 0.87 release are three primary pillars: mandatory type strictness, build system modernization, and toolchain alignment. For years, the framework relied on flexible, sometimes loosely typed JavaScript interfaces that occasionally obscured errors until runtime. By promoting the Strict TypeScript API—initially introduced as an opt-in preview in version 0.80—to the default state, Meta is steering the ecosystem toward rigorous compile-time safety.

This transition brings comprehensive doc comments directly to core components like TextInput, allowing developers to view complete type information and inline documentation upon hovering over symbols within their IDEs. While this introduces intentional breaking changes across the public API surface, the framework maintainers have collaborated extensively with library authors to ensure a smooth transition. For projects unable to migrate immediately, a temporary opt-in bridge is available via the react-native-legacy-deep-imports custom condition in tsconfig.json, though these legacy types are slated for complete removal in version 0.88.

Concurrently, version 0.87 upgrades the Metro JavaScript bundler from 0.84 to 0.87, bringing performance enhancements and faster asset resolution. On the mobile platform front, iOS developers receive an experimental, additive alternative to CocoaPods through Swift Package Manager integration, while Android developers must now adapt to the architecture and build implications of Android Gradle Plugin 9.

Chronology and Background Context

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

The journey toward React Native 0.87 spans several release cycles, reflecting Meta’s ongoing commitment to modernizing a framework originally launched over a decade ago. The push for stricter typing began in earnest with version 0.80 in mid-2025, which introduced deep import deprecations and laid the groundwork for robust TypeScript definitions. Rather than forcing an abrupt migration, the core team utilized successive minor releases to gather feedback from community partners, refine root exports, and resolve incompatibilities with widespread third-party libraries.

Similarly, the exploration of Swift Package Manager support stems from long-standing developer feedback regarding the complexity of Ruby-based dependency managers on macOS. By bypassing CocoaPods, Bundler, and Ruby dependencies entirely, the new SwiftPM integration aims to simplify native iOS build configurations. To achieve this, Meta restructured how precompiled binaries of React Native are shipped, introducing dedicated header-only XCFrameworks that align with SwiftPM’s strict structural requirements.

On the Android side, the adoption of Android Gradle Plugin 9 represents the latest phase in keeping pace with the official Android development toolchain. Because AGP 9 introduces significant API shifts and breaking changes in Gradle builds, the React Native team has provided specific guidance—such as opting out of built-in Kotlin and new DSL behaviors via gradle.properties flags—to ensure stability during the upgrade cycle.

Supporting Data and Technical Specifications

React Native 0.87 is a collaborative milestone, incorporating 265 commits contributed by 74 developers from across the global tech community. The release also draws a definitive line under older software versions; under the official support policy, version 0.87 becomes the latest stable release, while version 0.84 and older move into unsupported status.

The baseline system requirements have significantly tightened to accommodate modern performance optimizations and security standards:

  • Node.js: Minimum version 22 required.
  • Android Gradle Plugin (AGP): Upgraded to version 9.0.
  • Kotlin: Minimum version 2.0+.
  • iOS Build Tooling: Xcode is now the sole requirement for SwiftPM workflows, eliminating external Ruby dependencies.

For iOS developers wishing to test the experimental Swift Package Manager integration, the migration process is designed to be non-destructive. Running npx react-native spm --deintegrate inside the ios directory removes CocoaPods while injecting Swift package references directly into the existing .xcodeproj file without altering project signing, capabilities, or build phases. Reversing the action is equally straightforward via the npx react-native spm deinit command. Once initialized, subsequent native package additions or removals automatically trigger autolinking during the build process, eliminating the traditional requirement to execute manual pod install commands.

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

Official Responses and Community Engagement

The React Native core team and community maintainers have emphasized that version 0.87 is designed with automated tooling in mind. To mitigate the friction of upgrading to the Strict TypeScript API, the community has published specialized resources, including an ESLint fixer suite and an agent-driven upgrade skill available at /migrate-to-strict-api. These tools are intended to automate the resolution of type mismatches and import path adjustments across large enterprise codebases.

Furthermore, community discussions—tracked via RFC #0994 for SwiftPM and RFC #1006 for AGP 9 adoption—have served as transparent forums where third-party library maintainers can coordinate their own library updates. This collaborative approach has ensured that major ecosystem players are prepared for the strict type boundaries and header search path modifications introduced in this release, such as the shift from bare-form angle includes (e.g., #import <RCTAppDelegate.h>) to fully qualified namespace imports (e.g., #import <React/RCTAppDelegate.h>).

Broader Impact and Industry Implications

The release of React Native 0.87 carries significant implications for enterprise development teams, independent mobile engineers, and the broader JavaScript-to-native ecosystem. By enforcing Strict TypeScript by default, Meta is signaling that enterprise-grade type safety is no longer optional for modern cross-platform applications. Developers will immediately benefit from enhanced IDE autocompletion, reduced runtime errors, and clearer inline documentation, which collectively accelerate feature delivery and reduce maintenance overhead.

At the same time, the introduction of experimental Swift Package Manager support represents a potential turning point for iOS development workflows within the React Native community. Reducing reliance on CocoaPods and Ruby environments removes a notorious source of friction for new developers onboarding onto mobile projects. If SwiftPM transitions from experimental status to full support in future releases, it could streamline continuous integration pipelines and simplify dependency management across macOS build environments.

As organizations begin planning their migration paths using the React Native Upgrade Helper and Expo’s canary channels, version 0.87 stands out as a transitional yet deeply necessary step forward. By raising toolchain minimums and embracing modern language standards, the framework continues to cement its position as a robust, high-performance solution for cross-platform mobile engineering.

Related Articles

Leave a Reply

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

Back to top button