Mobile Application Development

React Native 0.87 release introduces Strict TypeScript API as the new standard and adds experimental Swift Package Manager support.

The latest iteration of the industry-standard mobile development framework, React Native 0.87, has officially reached stable status, marking a significant transition in how developers interact with the platform’s core architecture. This release brings substantial updates to the development toolchain, including a mandatory shift toward the Strict TypeScript API and the integration of experimental support for the Swift Package Manager (SwiftPM) on iOS. As the ecosystem moves away from legacy configurations, this version signals a maturation of the framework’s commitment to type safety, build performance, and modularity.

The Shift to Strict TypeScript API

The most prominent change in version 0.87 is the elevation of the Strict TypeScript API from an opt-in preview to the default standard for all new and existing projects. Initially introduced in version 0.80 alongside the deprecation of deep imports, this API change represents a deliberate effort to modernize the framework’s type definitions.

By adopting strict typing, developers gain enhanced auto-completion and inline documentation, which were previously limited or inconsistent when using legacy types. When hovering over core components like TextInput, IDEs will now surface comprehensive type information and doc comments, significantly reducing the cognitive load required to debug API usage.

This transition is not merely cosmetic; it is an ecosystem-wide architectural shift. The framework now enforces stricter type checking, which necessitates breaking changes across the API surface. For the majority of developers, the migration process is expected to be streamlined by existing ESLint fixers and the newly available /migrate-to-strict-api skill, which provides automated guidance. Recognizing that enterprise-scale applications may require more time to refactor, the React Native team has implemented a temporary bridge. Developers can opt-out by adding "react-native-legacy-deep-imports" to their tsconfig.json custom conditions. However, this is a stop-gap measure; the framework maintainers have confirmed that these legacy types are slated for removal in version 0.89.

Chronology of the 0.87 Development Cycle

The road to version 0.87 was paved by the iterative progress observed throughout 2024 and early 2025. The initial groundwork was laid in version 0.80, which served as the primary testing ground for the Strict TypeScript API. Over the subsequent months, the community and core contributors worked in tandem to resolve incompatibilities with popular third-party libraries, ensuring that the transition to strict types would not derail existing production pipelines.

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

Following the preview period, the release of 0.87 consolidates these efforts. The version cycle also reflects a tightening of the framework’s dependencies. With the release of 0.87, React Native officially mandates Node.js 22, Android Gradle Plugin (AGP) 9, and Kotlin 2.0+. These requirements ensure that the framework stays aligned with the evolving standards of the broader JavaScript and Android development ecosystems.

Experimental Swift Package Manager Support

For iOS developers, version 0.87 introduces a noteworthy experiment: native support for the Swift Package Manager (SwiftPM). Historically, CocoaPods has been the de facto dependency manager for React Native on iOS. While CocoaPods remains the supported and recommended path for the time being, the addition of SwiftPM offers an alternative that bypasses the complexities of Ruby and Bundler.

By integrating directly with Xcode, the SwiftPM implementation allows developers to manage dependencies without the overhead of external package managers. The implementation leverages prebuilt XCFrameworks, maintaining consistency with existing binary distribution methods. To facilitate this, the React Native team has restructured its binary distribution, introducing "Headers-only" frameworks to ensure that namespaces are correctly resolved.

This change carries a slight implication for low-level developers: if a project previously utilized bare-form angle includes—such as #import <RCTAppDelegate.h>—it must now be updated to use the namespace, for example, #import <React/RCTAppDelegate.h>. While minor, this adjustment is essential for the stricter path resolution required by SwiftPM.

Technical Evolution and Tooling

The release also includes an update to Metro, the JavaScript bundler used by React Native, moving from version 0.84 to 0.87. This update focuses on performance optimizations and internal cleanup, resulting in a faster and leaner bundling experience.

On the Android front, the adoption of AGP 9 represents a significant hurdle for many teams. As AGP 9.0 introduces substantial breaking changes to Gradle builds, the React Native team has advised developers to temporarily opt-out of the built-in Kotlin and new DSL behaviors. By setting android.builtInKotlin=false and android.newDsl=false in the gradle.properties file, developers can maintain stability while the ecosystem prepares for the full adoption of AGP 9 features in future versions.

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

Data-Driven Development: The Scope of Change

The scale of this release is underscored by the sheer volume of collaborative effort involved. Version 0.87 comprises 265 individual commits contributed by 74 distinct developers. This level of participation indicates a healthy, active, and decentralized maintenance model.

The transition to the Strict TypeScript API is expected to have a tangible impact on developer productivity. Based on preliminary data from the 0.80 preview phase, teams that migrated reported a reduction in runtime "undefined is not an object" errors, as the stricter type checking caught potential null-reference issues during the development phase rather than at production.

Implications for the Broader Ecosystem

The move toward version 0.87 carries several implications for the React Native community:

  1. Standardization: By forcing the Strict TypeScript API, the framework is creating a more predictable environment for library authors. Developers can now rely on a singular, well-documented API surface, which should reduce the "fragmentation" of types often found in older projects.
  2. Modernization of Toolchains: The jump to Node.js 22 and Kotlin 2.0+ is a clear signal that the framework is prioritizing security and long-term support. By deprecating support for older toolchains, the maintainers are effectively reducing their technical debt, allowing them to focus on newer, more efficient features.
  3. SwiftPM as the Future: While currently labeled "experimental," the inclusion of SwiftPM support suggests that the community is actively seeking to reduce the reliance on Ruby-based infrastructure. If successful, this could significantly lower the barrier to entry for iOS-only developers who are accustomed to native Swift workflows.

Official Guidance and Migration

With the release of version 0.87, version 0.84.x has officially moved to unsupported status. Organizations currently running 0.84 or earlier are encouraged to begin the upgrade process to maintain access to security patches and performance improvements.

The React Native team continues to emphasize the importance of the React Native Upgrade Helper, which serves as a definitive resource for visualizing the specific code changes required between versions. For new projects, the initialization command remains straightforward:
npx @react-native-community/cli@latest init MyProject --version latest.

Conclusion

React Native 0.87 is a pivotal release that balances immediate stability with forward-looking architectural changes. By standardizing the TypeScript experience and experimenting with modern dependency management, the core team is positioning React Native to remain competitive in an increasingly fast-paced mobile development landscape. While the shift to strict typing and new toolchain requirements may impose a short-term burden on development teams, the long-term benefits—improved type safety, faster build times, and a more robust developer experience—are clear indicators of the platform’s sustained growth and commitment to excellence. As the community begins to adopt these changes, the focus will likely shift toward the eventual removal of legacy support, setting the stage for a cleaner, more efficient React Native version 0.88 and beyond.

Related Articles

Leave a Reply

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

Back to top button
Lock It Soft
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.