{"id":8097,"date":"2026-09-30T21:54:21","date_gmt":"2026-09-30T21:54:21","guid":{"rendered":"https:\/\/lockitsoft.com\/?p=8097"},"modified":"2026-09-30T21:54:21","modified_gmt":"2026-09-30T21:54:21","slug":"react-native-0-87-release-introduces-strict-typescript-api-as-the-new-standard-and-adds-experimental-swift-package-manager-support","status":"publish","type":"post","link":"https:\/\/lockitsoft.com\/?p=8097","title":{"rendered":"React Native 0.87 release introduces Strict TypeScript API as the new standard and adds experimental Swift Package Manager support."},"content":{"rendered":"<p>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\u2019s 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\u2019s commitment to type safety, build performance, and modularity.<\/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=8097\/#The_Shift_to_Strict_TypeScript_API\" >The Shift to 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=8097\/#Chronology_of_the_087_Development_Cycle\" >Chronology of the 0.87 Development Cycle<\/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=8097\/#Experimental_Swift_Package_Manager_Support\" >Experimental Swift Package Manager Support<\/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=8097\/#Technical_Evolution_and_Tooling\" >Technical Evolution and Tooling<\/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=8097\/#Data-Driven_Development_The_Scope_of_Change\" >Data-Driven Development: The Scope of Change<\/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=8097\/#Implications_for_the_Broader_Ecosystem\" >Implications for the Broader Ecosystem<\/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=8097\/#Official_Guidance_and_Migration\" >Official Guidance and Migration<\/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=8097\/#Conclusion\" >Conclusion<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"The_Shift_to_Strict_TypeScript_API\"><\/span>The Shift to 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 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\u2019s type definitions.<\/p>\n<p>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 <code>TextInput<\/code>, IDEs will now surface comprehensive type information and doc comments, significantly reducing the cognitive load required to debug API usage.<\/p>\n<p>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 <code>\/migrate-to-strict-api<\/code> 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 <code>\"react-native-legacy-deep-imports\"<\/code> to their <code>tsconfig.json<\/code> 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.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Chronology_of_the_087_Development_Cycle\"><\/span>Chronology of the 0.87 Development Cycle<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>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.<\/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>Following the preview period, the release of 0.87 consolidates these efforts. The version cycle also reflects a tightening of the framework\u2019s 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.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Experimental_Swift_Package_Manager_Support\"><\/span>Experimental Swift Package Manager Support<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>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.<\/p>\n<p>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 &quot;Headers-only&quot; frameworks to ensure that namespaces are correctly resolved.<\/p>\n<p>This change carries a slight implication for low-level developers: if a project previously utilized bare-form angle includes\u2014such as <code>#import &lt;RCTAppDelegate.h&gt;<\/code>\u2014it must now be updated to use the namespace, for example, <code>#import &lt;React\/RCTAppDelegate.h&gt;<\/code>. While minor, this adjustment is essential for the stricter path resolution required by SwiftPM.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Technical_Evolution_and_Tooling\"><\/span>Technical Evolution and Tooling<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>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.<\/p>\n<p>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 <code>android.builtInKotlin=false<\/code> and <code>android.newDsl=false<\/code> in the <code>gradle.properties<\/code> file, developers can maintain stability while the ecosystem prepares for the full adoption of AGP 9 features in future versions.<\/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=\"Data-Driven_Development_The_Scope_of_Change\"><\/span>Data-Driven Development: The Scope of Change<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>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.<\/p>\n<p>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 &quot;undefined is not an object&quot; errors, as the stricter type checking caught potential null-reference issues during the development phase rather than at production.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Implications_for_the_Broader_Ecosystem\"><\/span>Implications for the Broader Ecosystem<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The move toward version 0.87 carries several implications for the React Native community:<\/p>\n<ol>\n<li><strong>Standardization:<\/strong> 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 &quot;fragmentation&quot; of types often found in older projects.<\/li>\n<li><strong>Modernization of Toolchains:<\/strong> 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.<\/li>\n<li><strong>SwiftPM as the Future:<\/strong> While currently labeled &quot;experimental,&quot; 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.<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"Official_Guidance_and_Migration\"><\/span>Official Guidance and Migration<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>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.<\/p>\n<p>The React Native team continues to emphasize the importance of the <a href=\"https:\/\/react-native-community.github.io\/upgrade-helper\/\" target=\"_blank\" rel=\"noopener\">React Native Upgrade Helper<\/a>, which serves as a definitive resource for visualizing the specific code changes required between versions. For new projects, the initialization command remains straightforward:<br \/>\n<code>npx @react-native-community\/cli@latest init MyProject --version latest<\/code>.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>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\u2014improved type safety, faster build times, and a more robust developer experience\u2014are clear indicators of the platform&#8217;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.<\/p>\n<!-- RatingBintangAjaib -->","protected":false},"excerpt":{"rendered":"<p>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\u2019s 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 &hellip;<\/p>\n","protected":false},"author":11,"featured_media":8096,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[275,4,5,16,379,3567,3,10,651,9,8,1744,1258,432,3566,1259],"class_list":["post-8097","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mobile-application-development","tag-adds","tag-apps","tag-development","tag-experimental","tag-introduces","tag-manager","tag-mobile","tag-native","tag-package","tag-react","tag-release","tag-standard","tag-strict","tag-support","tag-swift","tag-typescript"],"_links":{"self":[{"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/posts\/8097","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\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8097"}],"version-history":[{"count":0,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/posts\/8097\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=\/wp\/v2\/media\/8096"}],"wp:attachment":[{"href":"https:\/\/lockitsoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8097"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8097"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lockitsoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8097"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}