{"id":7719,"date":"2026-09-20T21:50:37","date_gmt":"2026-09-20T21:50:37","guid":{"rendered":"https:\/\/lockitsoft.com\/?p=7719"},"modified":"2026-09-20T21:50:37","modified_gmt":"2026-09-20T21:50:37","slug":"react-native-0-87-unveils-strict-typescript-api-default-and-experimental-swift-package-manager-support","status":"publish","type":"post","link":"https:\/\/lockitsoft.com\/?p=7719","title":{"rendered":"React Native 0.87 Unveils Strict TypeScript API Default and Experimental Swift Package Manager Support"},"content":{"rendered":"<p>The release of React Native 0.87 marks a pivotal milestone in the framework\u2019s evolution, signaling a move toward more robust type safety and streamlined build processes. By establishing the Strict TypeScript API as the default JavaScript interface and introducing experimental support for Swift Package Manager (SwiftPM), the React Native team is positioning the platform to better align with modern mobile development standards. This update, which follows the 0.80 preview phase, arrives with heightened toolchain requirements, necessitating that developers update their environments to Node.js 22, Android Gradle Plugin (AGP) 9, and Kotlin 2.0 or higher.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/lockitsoft.com\/?p=7719\/#A_New_Era_for_Type_Safety\" >A New Era for Type Safety<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/lockitsoft.com\/?p=7719\/#Revolutionizing_iOS_Builds_with_Swift_Package_Manager\" >Revolutionizing iOS Builds with Swift Package Manager<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/lockitsoft.com\/?p=7719\/#Android_Infrastructure_and_AGP_9\" >Android Infrastructure and AGP 9<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/lockitsoft.com\/?p=7719\/#Chronology_of_the_Update\" >Chronology of the Update<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/lockitsoft.com\/?p=7719\/#Implications_for_the_Ecosystem\" >Implications for the Ecosystem<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/lockitsoft.com\/?p=7719\/#Data_and_Community_Impact\" >Data and Community Impact<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/lockitsoft.com\/?p=7719\/#Broader_Industry_Context\" >Broader Industry Context<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/lockitsoft.com\/?p=7719\/#Looking_Ahead\" >Looking Ahead<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"A_New_Era_for_Type_Safety\"><\/span>A New Era for Type Safety<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The transition to a Strict TypeScript API as the default behavior represents the culmination of a multi-version effort to reduce runtime errors and improve developer ergonomics. Initially introduced in version 0.80 as an opt-in preview, the strict API system was designed to address long-standing issues surrounding the reliability of component props and API surface definitions. <\/p>\n<p>For the React Native ecosystem, this shift is more than a syntax change; it is a fundamental architectural transition. The strict API provides full type information and integrated documentation for components such as <code>TextInput<\/code> and <code>View<\/code>, which appear directly in the developer\u2019s editor upon hovering. This enhancement significantly reduces the &quot;context switching&quot; previously required to consult documentation. Furthermore, the migration eliminates reliance on legacy deep imports, a practice that historically led to brittle codebases and inconsistent build behavior.<\/p>\n<p>For developers concerned about the immediate impact on existing projects, the core team has provided a temporary bridge. Projects can opt out of these strict types through the end of the 0.88 release cycle by adding the <code>react-native-legacy-deep-imports<\/code> condition to their <code>tsconfig.json<\/code>. However, this is intended strictly as a stop-gap measure, as the legacy types are slated for permanent removal in the following release, emphasizing the industry-wide push toward type-first development.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Revolutionizing_iOS_Builds_with_Swift_Package_Manager\"><\/span>Revolutionizing iOS Builds with Swift Package Manager<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Perhaps the most notable architectural addition in version 0.87 is the experimental support for Swift Package Manager (SwiftPM). Since the framework\u2019s inception, CocoaPods has served as the de facto dependency manager for iOS builds within React Native. While functional, CocoaPods relies on Ruby and often creates complex, opaque project configurations that can be difficult to debug.<\/p>\n<p>The integration of SwiftPM offers a modern alternative that interacts directly with Xcode. By moving to a SwiftPM-based workflow, developers can eliminate the need for Ruby and Bundler entirely, simplifying the local environment setup. The mechanism works by injecting Swift package references into existing <code>.xcodeproj<\/code> files, ensuring that developer settings\u2014such as signing configurations and custom build phases\u2014remain intact. <\/p>\n<figure class=\"article-inline-figure\"><img decoding=\"async\" src=\"https:\/\/reactnative.dev\/img\/logo-share.png\" alt=\"React Native 0.87 - Strict TypeScript API, Metro Update, Swift Package Manager, AGP 9 Support\" class=\"article-inline-img\" loading=\"lazy\" \/><\/figure>\n<p>This transition necessitated a significant overhaul of how React Native distributes its precompiled binaries. The team has restructured its XCFrameworks, creating &quot;headers-only&quot; frameworks to ensure that namespaces resolve correctly within the strict environment of SwiftPM. This represents a significant optimization for the build pipeline, as it eliminates the <code>pod install<\/code> step, which has historically been a source of friction during dependency updates. As the ecosystem adapts, developers will need to update their header imports to reflect the new namespace-consistent paths, such as changing <code>#import &lt;RCTAppDelegate.h&gt;<\/code> to <code>#import &lt;React\/RCTAppDelegate.h&gt;<\/code>.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Android_Infrastructure_and_AGP_9\"><\/span>Android Infrastructure and AGP 9<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The 0.87 release also addresses the Android ecosystem, marking the first time React Native has officially supported the Android Gradle Plugin (AGP) 9. This update brings substantial changes to the Gradle build lifecycle. Because AGP 9 introduces a new DSL (Domain Specific Language) and stricter Kotlin integration, the React Native team has issued specific guidance for maintaining stability.<\/p>\n<p>Developers are currently advised to opt out of the built-in Kotlin and the new DSL behaviors provided by AGP 9 to ensure compatibility with existing native modules. By setting <code>android.builtInKotlin=false<\/code> and <code>android.newDsl=false<\/code> in their <code>gradle.properties<\/code> files, teams can continue to leverage the performance gains of the newer plugin without immediate, widespread breakage. This phased approach to adoption reflects a broader trend in the React Native community: providing cutting-edge features while ensuring that large-scale enterprise applications have a clear, documented path to stability.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Chronology_of_the_Update\"><\/span>Chronology of the Update<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The journey to 0.87 has been characterized by consistent, iterative improvements rather than isolated changes.<\/p>\n<ul>\n<li><strong>Version 0.80 (June 2025):<\/strong> The introduction of the Strict TypeScript API as an opt-in preview, accompanied by the formal deprecation of deep imports. This established the foundation for the current shift.<\/li>\n<li><strong>Version 0.84:<\/strong> A period of refinement for Metro, the JavaScript bundler, which saw increased performance metrics and decreased memory overhead.<\/li>\n<li><strong>Version 0.87 (Current):<\/strong> The official transition of the Strict TypeScript API to default status, the introduction of experimental SwiftPM support, and the elevation of toolchain requirements to current industry standards.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Implications_for_the_Ecosystem\"><\/span>Implications for the Ecosystem<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The move toward stricter typing and simplified native dependency management is a strategic response to the increasing complexity of modern mobile applications. As apps grow in size and the number of third-party modules increases, the overhead of maintaining legacy build systems like CocoaPods or loose JavaScript types becomes a significant technical debt.<\/p>\n<p>By enforcing stricter TypeScript standards, the React Native team is effectively standardizing the &quot;language&quot; of the framework, making it easier for libraries to interact with the core without compatibility issues. Furthermore, by embracing SwiftPM, the framework is future-proofing itself against the eventual deprecation or decline of Ruby-based dependency management in the Apple ecosystem.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Data_and_Community_Impact\"><\/span>Data and Community Impact<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The 0.87 release is the result of a massive collaborative effort, featuring 265 distinct commits from 74 individual contributors. This level of participation underscores the continued vitality of the React Native open-source project. With the transition of 0.84.x to unsupported status, the release of 0.87 serves as the new baseline for stable development. <\/p>\n<figure class=\"article-inline-figure\"><img decoding=\"async\" src=\"https:\/\/reactnative.dev\/blog\/assets\/0.87-symbol-docs-before.png\" alt=\"React Native 0.87 - Strict TypeScript API, Metro Update, Swift Package Manager, AGP 9 Support\" class=\"article-inline-img\" loading=\"lazy\" \/><\/figure>\n<p>The emphasis on developer experience (DX) is evident in the updated toolsets provided. For instance, the migration process is bolstered by automated ESLint fixers and the &quot;migrate-to-strict-api&quot; skill available through community-driven educational platforms. These resources aim to minimize the labor-intensive nature of upgrading large codebases. <\/p>\n<h3><span class=\"ez-toc-section\" id=\"Broader_Industry_Context\"><\/span>Broader Industry Context<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>React Native\u2019s decision to tighten its API and adopt SwiftPM mirrors shifts occurring across the wider JavaScript and mobile development landscape. The industry is moving away from loosely typed, configuration-heavy setups toward environments that prioritize static analysis and native-first tooling. <\/p>\n<p>By raising the minimum toolchain requirements\u2014specifically the move to Node.js 22\u2014the React Native team is ensuring that the framework benefits from the performance improvements and security patches provided by the latest runtime environments. This, combined with the jump to Kotlin 2.0, ensures that developers have access to the latest language features and compiler optimizations.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Looking_Ahead\"><\/span>Looking Ahead<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>As the React Native ecosystem moves toward version 0.88 and beyond, the focus will likely remain on refining these new experimental features. The SwiftPM integration, while currently in an experimental state, is expected to become the preferred method for managing iOS dependencies once the edge cases regarding complex project structures are fully resolved. Similarly, the removal of legacy TypeScript support in the next cycle will signal the completion of the type-safety initiative.<\/p>\n<p>For developers and organizations currently maintaining React Native applications, the 0.87 update is a call to action. The migration, while requiring significant attention to detail, offers a path toward a more predictable, performant, and maintainable codebase. The official upgrade path remains through the React Native Upgrade Helper, a tool that has become indispensable for managing the delta between versions. As the community moves forward, the success of this release will likely be measured by how quickly and effectively the ecosystem adopts these new standards, ultimately leading to a more unified and robust development experience for mobile engineers worldwide.<\/p>\n<!-- RatingBintangAjaib -->","protected":false},"excerpt":{"rendered":"<p>The release of React Native 0.87 marks a pivotal milestone in the framework\u2019s evolution, signaling a move toward more robust type safety and streamlined build processes. By establishing the Strict TypeScript API as the default JavaScript interface and introducing experimental support for Swift Package Manager (SwiftPM), the React Native team is positioning the platform to &hellip;<\/p>\n","protected":false},"author":13,"featured_media":7718,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[4,663,5,16,3567,3,10,651,9,1258,432,3566,1259,278],"class_list":["post-7719","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mobile-application-development","tag-apps","tag-default","tag-development","tag-experimental","tag-manager","tag-mobile","tag-native","tag-package","tag-react","tag-strict","tag-support","tag-swift","tag-typescript","tag-unveils"],"_links":{"self":[{"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/posts\/7719","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7719"}],"version-history":[{"count":0,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/posts\/7719\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/media\/7718"}],"wp:attachment":[{"href":"https:\/\/lockitsoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7719"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7719"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7719"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}