{"id":8621,"date":"2026-11-06T21:11:18","date_gmt":"2026-11-06T21:11:18","guid":{"rendered":"https:\/\/lockitsoft.com\/?p=8621"},"modified":"2026-11-06T21:11:18","modified_gmt":"2026-11-06T21:11:18","slug":"react-native-0-87-arrives-with-mandatory-strict-typescript-api-and-experimental-swift-package-manager-support","status":"publish","type":"post","link":"https:\/\/lockitsoft.com\/?p=8621","title":{"rendered":"React Native 0.87 Arrives with Mandatory Strict TypeScript API and Experimental Swift Package Manager Support"},"content":{"rendered":"<p>The official release of React Native 0.87 marks a significant pivot point in the evolution of the cross-platform development framework, introducing foundational changes to its typing system and dependency management architecture. This update, which follows a period of rigorous beta testing and community feedback, solidifies the transition to a modern, type-safe development environment while simultaneously raising the minimum system requirements for developers. As the industry moves toward more robust, scalable codebases, the React Native team has prioritized long-term maintainability, signaling the end of legacy patterns that have persisted since the framework\u2019s inception.<\/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=8621\/#A_New_Era_for_Type_Safety_The_Strict_TypeScript_API\" >A New Era for Type Safety: The Strict TypeScript API<\/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=8621\/#Modernizing_iOS_Dependency_Management_Swift_Package_Manager\" >Modernizing iOS Dependency Management: 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=8621\/#Android_Evolution_Supporting_the_AGP_9_Lifecycle\" >Android Evolution: Supporting the AGP 9 Lifecycle<\/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=8621\/#Elevating_the_Baseline_Toolchain_Requirements\" >Elevating the Baseline: Toolchain Requirements<\/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=8621\/#Implications_and_Industry_Impact\" >Implications and Industry Impact<\/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=8621\/#Chronology_and_Community_Contributions\" >Chronology and Community Contributions<\/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=8621\/#Looking_Ahead\" >Looking Ahead<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"A_New_Era_for_Type_Safety_The_Strict_TypeScript_API\"><\/span>A New Era for Type Safety: The Strict TypeScript API<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The most prominent change in version 0.87 is the elevation of the Strict TypeScript API to the default standard for all new projects. Originally introduced as an opt-in preview in version 0.80\u2014concurrent with the deprecation of deep imports\u2014the Strict API aims to eliminate the ambiguity and structural inconsistencies that plagued earlier iterations of the library. <\/p>\n<p>By enforcing strict typing, the React Native team is addressing a long-standing developer pain point: the lack of comprehensive, glanceable documentation for core components. Under the previous legacy system, developers often relied on trial and error or external documentation to understand the properties of components like <code>TextInput<\/code> or <code>View<\/code>. The new architecture embeds type definitions directly into the component symbols, allowing integrated development environments (IDEs) to surface documentation, method signatures, and parameter requirements during the development process. <\/p>\n<p>This change represents an ecosystem-wide shift. By forcing strict compliance, the framework ensures that libraries built upon React Native are more predictable and less prone to runtime errors caused by mismatched property types. While the transition includes intentional breaking changes, the framework maintainers have provided extensive migration guides and ESLint fixers to streamline the update process. For teams unable to migrate immediately, a temporary bridge\u2014the <code>react-native-legacy-deep-imports<\/code> condition\u2014is available within <code>tsconfig.json<\/code>, though this is strictly a stopgap measure set to be removed in version 0.89.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Modernizing_iOS_Dependency_Management_Swift_Package_Manager\"><\/span>Modernizing iOS Dependency Management: Swift Package Manager<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Perhaps the most ambitious technical undertaking in this release is the experimental support for Swift Package Manager (SwiftPM) as a native alternative to CocoaPods. For nearly a decade, CocoaPods has been the de facto standard for managing iOS dependencies in React Native applications. However, the complexity of managing Ruby environments, Bundler versions, and the inherent friction of the <code>pod install<\/code> process has been a persistent source of frustration for mobile engineers.<\/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>The integration of SwiftPM in version 0.87 allows developers to bypass the CocoaPods ecosystem entirely, provided they meet the necessary criteria. By leveraging prebuilt XCFrameworks, the React Native team has created a more streamlined build pipeline that relies solely on Xcode. This change significantly simplifies the project structure; developers can now inject Swift package references directly into their <code>.xcodeproj<\/code> files, eliminating the need to reconcile multiple dependency lockfiles.<\/p>\n<p>This shift required a fundamental redesign of how React Native ships its precompiled binaries. To comply with the rigorous requirements of SwiftPM regarding header locations and XCFramework structures, the framework now utilizes dedicated &quot;Headers-only&quot; frameworks. While this represents a technical triumph for the core team, it introduces a minor breaking change for developers who previously imported headers without explicit namespaces. Developers are now required to adopt the <code>import &lt;React\/HeaderName.h&gt;<\/code> syntax, a move that enforces better project organization and reduces namespace collisions.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Android_Evolution_Supporting_the_AGP_9_Lifecycle\"><\/span>Android Evolution: Supporting the AGP 9 Lifecycle<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>React Native 0.87 also brings critical updates to the Android build system, specifically through its support for the Android Gradle Plugin (AGP) 9. As Google pushes the Android ecosystem toward more efficient build times and modern Kotlin features, React Native has mirrored this progression.<\/p>\n<p>However, the adoption of AGP 9 introduces a challenging transitional phase. Because AGP 9 is a major release that includes breaking changes to the Gradle build DSL, the React Native team has issued specific guidance for current projects. To maintain stability, developers are encouraged to opt out of the built-in Kotlin and new DSL behaviors provided by AGP 9 by updating their <code>gradle.properties<\/code> files. This configuration is intended to be temporary, as the framework team prepares for a full migration in future releases. This strategic delay allows the vast ecosystem of third-party native modules to catch up with Google\u2019s latest tooling standards without breaking the builds of existing applications.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Elevating_the_Baseline_Toolchain_Requirements\"><\/span>Elevating the Baseline: Toolchain Requirements<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The shift toward a more modern, efficient framework comes at the cost of supporting legacy infrastructure. Version 0.87 enforces a new set of minimum toolchain requirements that reflect the industry\u2019s current best practices. Developers are now required to utilize Node.js 22, the latest Long-Term Support (LTS) release, which offers superior performance and security compared to older iterations. Additionally, the move to Android Gradle Plugin 9 and Kotlin 2.0+ ensures that the framework remains compatible with the latest Android development standards.<\/p>\n<p>These requirements are not merely arbitrary; they are essential for leveraging the performance enhancements delivered by the updated Metro bundler (version 0.87). The latest iteration of Metro focuses on reducing overhead and improving the speed of dependency resolution, providing a smoother experience for developers working on large-scale applications.<\/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<h3><span class=\"ez-toc-section\" id=\"Implications_and_Industry_Impact\"><\/span>Implications and Industry Impact<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The release of React Native 0.87 underscores a broader industry trend toward &quot;opinionated&quot; frameworks. By mandating strict TypeScript and pushing for modern build tools, the React Native team is essentially reducing the &quot;decision fatigue&quot; that developers often face when configuring new projects. The move toward a unified, type-safe API reduces the likelihood of bugs and significantly lowers the barrier to entry for developers coming from web-based TypeScript environments.<\/p>\n<p>Furthermore, the introduction of SwiftPM support suggests a future where the friction of cross-platform development is significantly minimized. By aligning with native build tools rather than wrapping them in intermediary layers, React Native is positioning itself as a more durable, &quot;native-first&quot; solution.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Chronology_and_Community_Contributions\"><\/span>Chronology and Community Contributions<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The development of version 0.87 was a massive collaborative effort, involving 265 commits from 74 individual contributors. The journey began with the early discussions in the React Native Working Group, where the community debated the tradeoffs of the Strict TypeScript API. The release followed a structured timeline:<\/p>\n<ul>\n<li><strong>Version 0.80 (June 2025):<\/strong> Initial preview of the Strict TypeScript API and the start of the deep-imports deprecation cycle.<\/li>\n<li><strong>Interim Period (Q3 2025):<\/strong> Continuous refinement of the API based on feedback from major library maintainers.<\/li>\n<li><strong>Version 0.87 (Current Release):<\/strong> Finalization of the API, introduction of SwiftPM support, and transition to AGP 9.<\/li>\n<\/ul>\n<p>The community\u2019s involvement was instrumental in ensuring that the breaking changes were manageable. Through the use of tools like the <code>react-native-community\/cli<\/code>, the team provided automated upgrade paths that allowed many developers to transition to the new API with minimal manual intervention.<\/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 React Native 0.87 moves into its stable lifecycle, the focus of the core team will undoubtedly shift toward polishing the SwiftPM implementation and preparing the ecosystem for the eventual total removal of legacy TypeScript types in version 0.89. The transition to this version is not merely a feature update; it is a declaration of intent. By choosing to prioritize type safety, build performance, and native compatibility, the React Native project is securing its relevance for the next decade of mobile development.<\/p>\n<p>Developers currently utilizing version 0.84 or older are encouraged to use the React Native Upgrade Helper to audit the specific changes required for their codebases. While the update may require a period of adjustment for teams with complex, highly customized native modules, the long-term benefits\u2014namely improved IDE support, faster build times, and a more robust type system\u2014position React Native as a highly competitive framework for enterprise-grade mobile applications. For those operating within the Expo ecosystem, the features of 0.87 will be progressively integrated into the <code>expo@canary<\/code> releases, ensuring that the broader developer community has a clear path forward toward this more modern, stringent, and efficient standard.<\/p>\n<!-- RatingBintangAjaib -->","protected":false},"excerpt":{"rendered":"<p>The official release of React Native 0.87 marks a significant pivot point in the evolution of the cross-platform development framework, introducing foundational changes to its typing system and dependency management architecture. This update, which follows a period of rigorous beta testing and community feedback, solidifies the transition to a modern, type-safe development environment while simultaneously &hellip;<\/p>\n","protected":false},"author":14,"featured_media":8620,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[4,338,5,16,3567,4327,3,10,651,9,1258,432,3566,1259],"class_list":["post-8621","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mobile-application-development","tag-apps","tag-arrives","tag-development","tag-experimental","tag-manager","tag-mandatory","tag-mobile","tag-native","tag-package","tag-react","tag-strict","tag-support","tag-swift","tag-typescript"],"_links":{"self":[{"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/posts\/8621","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\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8621"}],"version-history":[{"count":0,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/posts\/8621\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/media\/8620"}],"wp:attachment":[{"href":"https:\/\/lockitsoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8621"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8621"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8621"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}