Mobile Application Development

React Native 0.87 arrives with mandatory TypeScript API standards and experimental Swift Package Manager support

The release of React Native 0.87 marks a significant maturation point for the cross-platform development framework, signaling an industry-wide transition toward more robust type safety and modernized build tooling. This update, which follows the established cadence of the React Native core team, introduces the Strict TypeScript API as the default standard for all new and existing projects. By moving away from legacy type definitions, the framework aims to reduce common runtime errors and improve developer productivity through superior IDE integration and documentation accessibility.

A Chronology of the Strict TypeScript Transition

The journey toward this release began in June 2025 with the launch of React Native 0.80. At that time, the core team introduced the Strict TypeScript API as an opt-in preview feature. This initial phase was coupled with a strategic initiative to deprecate deep imports, a practice that had long been a source of instability and maintenance overhead for library authors and application developers alike.

Between versions 0.80 and 0.87, the React Native community and primary maintainers engaged in an intensive refinement process. This period involved collaborating with major library maintainers to resolve compatibility issues and finalizing the root export structure of the framework. The release of 0.87 is the culmination of this effort, effectively ending the experimental status of the Strict TypeScript API and establishing it as the official, default interface for JavaScript developers working within the React Native ecosystem.

Technical Implications and the Shift to Strict Typing

The primary driver behind this shift is the need for improved "glanceability" and code safety. Under the previous legacy system, hovering over components like TextInput often yielded sparse or incomplete type information. The new Strict TypeScript API changes this dynamic by ensuring that documentation comments are bundled directly with symbols. Developers now gain immediate access to comprehensive type information, parameter definitions, and usage context, which significantly lowers the barrier for onboarding new developers to a codebase.

While the transition promises long-term stability, it necessitates immediate attention from project leads. The adoption of strict typing introduces intentional breaking changes across the API surface. To manage this, the core team has provided a comprehensive migration guide and integrated support into the react-native-community tooling ecosystem. For teams unable to migrate their entire codebase simultaneously, a temporary bridge exists: by adding the react-native-legacy-deep-imports condition to the tsconfig.json file, developers can maintain legacy type support through version 0.88. However, the team has explicitly stated that this is a stopgap measure, with plans to remove legacy support entirely in the subsequent release.

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

Modernizing the Build Pipeline: Metro and SwiftPM

Alongside the language-level changes, version 0.87 introduces significant updates to the underlying build infrastructure. Metro, the JavaScript bundler for React Native, has been updated from version 0.84 to 0.87. This update focuses on performance optimizations and "leaner" execution, reflecting the ongoing commitment to reducing bundle sizes and improving the initial load times of applications.

Perhaps the most ambitious addition to the 0.87 release is the experimental support for Swift Package Manager (SwiftPM) on iOS. Historically, React Native developers have relied on CocoaPods to manage native dependencies—a system that often requires extensive configuration involving Ruby, Bundler, and complex project integration. SwiftPM offers a streamlined alternative that leverages native Xcode integration.

By allowing developers to bypass the traditional CocoaPods workflow, the SwiftPM implementation simplifies project architecture. The integration uses prebuilt XCFrameworks, maintaining consistency with previous releases while providing a more native-feeling experience. For teams looking to adopt this, the CLI provides a deintegrate command to remove CocoaPods and inject Swift package references into existing projects. While it is currently experimental, the move is widely viewed as a long-term strategy to simplify the iOS development pipeline and reduce the "dependency tax" associated with third-party package managers.

Android Infrastructure and Toolchain Requirements

On the Android front, React Native 0.87 is the first version to provide support for the Android Gradle Plugin (AGP) 9.0. AGP 9.0 represents a major evolutionary step for Android builds, introducing breaking changes to the way Gradle manages dependencies and build logic. Given the complexity of this upgrade, the React Native team has issued specific guidance for the current release, recommending that developers opt out of the built-in Kotlin and new DSL behaviors introduced by AGP 9.0 for the time being. By modifying the android/gradle.properties file, developers can maintain stability until the wider ecosystem completes its transition to the newer AGP paradigms.

This shift in the Android pipeline is accompanied by a broader update to minimum toolchain requirements. Projects are now expected to use Node.js 22, AGP 9, and Kotlin 2.0 or higher. These requirements ensure that the framework can leverage the performance improvements and security patches inherent in more modern versions of these core technologies.

Industry Impact and Developer Ecosystem

The introduction of version 0.87 reflects a broader trend in mobile development: the move toward standardized, type-safe, and natively integrated build systems. By enforcing stricter TypeScript usage, React Native is aligning itself more closely with the broader web development ecosystem, where TypeScript has become the de facto language of choice.

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

Data from the React Native community suggests that the majority of modern applications are already well-positioned to handle this upgrade. The integration of agent-driven migration tools, such as the migrate-to-strict-api skill available through community-supported platforms, demonstrates a proactive approach to managing the technical debt associated with such large-scale API shifts.

For enterprise-level applications, the implications are significant. The move away from deep imports and toward a defined root export structure simplifies the internal dependency graph, making it easier for large teams to manage shared component libraries. Furthermore, the push toward SwiftPM for iOS suggests that the framework is preparing for a future where mobile build systems are less reliant on external, Ruby-based tools, thereby reducing the "brittleness" that often plagues large, long-lived mobile projects.

Strategic Outlook

The release of version 0.87 underscores the core team’s strategy of balancing rapid innovation with long-term ecosystem health. By deprecating outdated practices like deep imports and legacy type definitions, the framework is clearing the path for future performance enhancements. The simultaneous push into experimental SwiftPM support and AGP 9 adoption indicates that the team is not just focused on the JavaScript layer, but is also committed to deep-level architectural improvements that affect the entire mobile compilation process.

As with any major release, the transition will require a period of adaptation. The move to 0.87 is not merely a version bump but a shift in the way React Native developers are expected to interact with the framework’s internal architecture. The success of this release will be measured by the ease with which existing apps can navigate the migration and the stability of the new, strict-typed API surface in production environments.

For developers and organizations currently using React Native, the path forward is clear: evaluate the current dependency stack against the new toolchain requirements, leverage the available migration helpers, and begin the transition to the Strict TypeScript API. With version 0.84.x now officially unsupported, upgrading to 0.87 is the only way to ensure continued access to security updates, performance improvements, and ongoing support from the broader React Native ecosystem. The inclusion of 265 commits from 74 contributors highlights the collaborative effort behind this release, signaling a robust and active community capable of driving the framework toward its next phase of evolution.

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.