this repo has no description
at main 53 kB view raw
1<!doctype html><html lang=en dir=ltr class="docs-wrapper plugin-docs plugin-id-default docs-version-0.79 docs-doc-page docs-doc-id-build-speed" data-has-hydrated=false><meta charset=UTF-8><meta name=generator content="Docusaurus v3.8.0"><title data-rh=true>Speeding up your Build phase · React Native</title><meta data-rh=true name=viewport content="width=device-width, initial-scale=1.0"><meta data-rh=true property=og:url content=https://reactnative.dev/docs/build-speed><meta data-rh=true property=og:locale content=en><meta data-rh=true name=docusaurus_locale content=en><meta data-rh=true name=docsearch:language content=en><meta data-rh=true property=og:image content=https://reactnative.dev/img/logo-share.png><meta data-rh=true name=twitter:card content=summary_large_image><meta data-rh=true name=twitter:image content=https://reactnative.dev/img/logo-share.png><meta data-rh=true name=twitter:site content=@reactnative><meta data-rh=true name=docusaurus_version content=0.79><meta data-rh=true name=docusaurus_tag content=docs-default-0.79><meta data-rh=true name=docsearch:version content=0.79><meta data-rh=true name=docsearch:docusaurus_tag content=docs-default-0.79><meta data-rh=true property=og:title content="Speeding up your Build phase · React Native"><meta data-rh=true name=description content="Building your React Native app could be expensive and take several minutes of developers time."><meta data-rh=true property=og:description content="Building your React Native app could be expensive and take several minutes of developers time."><link data-rh=true rel=icon href=/img/favicon.ico><link data-rh=true rel=canonical href=https://reactnative.dev/docs/build-speed><link data-rh=true rel=alternate href=https://reactnative.dev/docs/build-speed hreflang=en><link data-rh=true rel=alternate href=https://reactnative.dev/docs/build-speed hreflang=x-default><link data-rh=true rel=preconnect href=https://8TDSE0OHGQ-dsn.algolia.net crossorigin=anonymous><link rel=alternate type=application/rss+xml href=/blog/rss.xml title="React Native RSS Feed"><link rel=alternate type=application/atom+xml href=/blog/atom.xml title="React Native Atom Feed"><link rel=alternate type=application/json href=/blog/feed.json title="React Native JSON Feed"><link rel=preconnect href=https://www.google-analytics.com><script>window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-41298772-2","auto"),ga("send","pageview")</script><script async src=https://www.google-analytics.com/analytics.js></script><link rel=preconnect href=https://www.google-analytics.com><link rel=preconnect href=https://www.googletagmanager.com><script async src="https://www.googletagmanager.com/gtag/js?id=G-58L13S6BDP"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-58L13S6BDP",{})</script><link rel=search type=application/opensearchdescription+xml title="React Native" href=/opensearch.xml><link rel=icon href=/img/pwa/manifest-icon-512.png><link rel=manifest href=/manifest.json><meta name=theme-color content=#20232a><meta name=apple-mobile-web-app-capable content=yes><meta name=apple-mobile-web-app-status-bar-style content=#20232a><link rel=apple-touch-icon href=/img/pwa/manifest-icon-512.png><link rel=mask-icon href=/img/pwa/manifest-icon-512.png color=#06bcee><meta name=msapplication-TileImage href=/img/pwa/manifest-icon-512.png><meta name=msapplication-TileColor content=#20232a><script src=https://cdn.jsdelivr.net/npm/focus-visible@5.2.0/dist/focus-visible.min.js defer></script><script src=https://widget.surveymonkey.com/collect/website/js/tRaiETqnLgj758hTBazgd8ryO5qrZo8Exadq9qmt1wtm4_2FdZGEAKHDFEt_2BBlwwM4.js defer></script><script src=https://snack.expo.dev/embed.js defer></script><script src=https://platform.twitter.com/widgets.js async></script><link rel=stylesheet href=/assets/css/styles.883cb042.css><script src=/assets/js/runtime~main.8ac1e6f0.js defer></script><script src=/assets/js/main.341783f5.js defer></script><body class=navigation-with-keyboard><svg xmlns=http://www.w3.org/2000/svg style="display: none;"><defs> 2<symbol id=theme-svg-external-link viewBox="0 0 24 24"><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol> 3</defs></svg> 4<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")),document.documentElement.setAttribute("data-theme-choice",t||"system")}(),function(){try{for(var[t,e]of new URLSearchParams(window.location.search).entries())if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id=__docusaurus><div role=region aria-label="Skip to main content"><a class=skipToContent_oPtH href=#__docusaurus_skipToContent_fallback>Skip to main content</a></div><div class="theme-announcement-bar announcementBar_zJRd" style=background-color:#20232a;color:#fff role=banner><div class="content_bSb_ announcementBarContent_t7IR">Join us for React Conf on Oct 7-8. <a target=_blank rel="noopener noreferrer" href=https://conf.react.dev>Learn more</a>.</div></div><nav aria-label=Main class="theme-layout-navbar navbar navbar--fixed-top navbar--dark"><div class=navbar__inner><div class="theme-layout-navbar-left navbar__items"><button aria-label="Toggle navigation bar" aria-expanded=false class="navbar__toggle clean-btn" type=button><svg width=30 height=30 viewBox="0 0 30 30" aria-hidden=true><path stroke=currentColor stroke-linecap=round stroke-miterlimit=10 stroke-width=2 d="M4 7h22M4 15h22M4 23h22"/></svg></button><a class=navbar__brand href=/><div class=navbar__logo><img src=/img/header_logo.svg alt="React Native" class="themedComponent_siVc themedComponent--light_hHel"><img src=/img/header_logo.svg alt="React Native" class="themedComponent_siVc themedComponent--dark_yETr"></div><b class="navbar__title text--truncate">React Native</b></a><div class="navbar__item dropdown dropdown--hoverable"><a class=navbar__link aria-haspopup=true aria-expanded=false role=button href=/docs/build-speed>0.79</a><ul class=dropdown__menu><li><a class=dropdown__link href=/docs/next/build-speed>Next</a><li><a aria-current=page class="dropdown__link dropdown__link--active" href=/docs/build-speed>0.79</a><li><a class=dropdown__link href=/docs/0.78/build-speed>0.78</a><li><a class=dropdown__link href=/docs/0.77/build-speed>0.77</a><li><a class=dropdown__link href=/docs/0.76/build-speed>0.76</a><li><a class=dropdown__link href=/docs/0.75/build-speed>0.75</a><li><a class=dropdown__link href=/docs/0.74/build-speed>0.74</a><li><a class=dropdown__link href=/docs/0.73/build-speed>0.73</a><li><a class=dropdown__link href=/docs/0.72/build-speed>0.72</a><li><a class=dropdown__link href=/docs/0.71/build-speed>0.71</a><li><a class=dropdown__link href=/docs/0.70/build-speed>0.70</a><li><a class=dropdown__link href=/versions>All versions</a></ul></div></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href=# aria-haspopup=true aria-expanded=false role=button class=navbar__link>Development</a><ul class=dropdown__menu><li><a aria-current=page class="dropdown__link dropdown__link--active" href=/docs/getting-started>Guides</a><li><a class=dropdown__link href=/docs/components-and-apis>Components</a><li><a class=dropdown__link href=/docs/accessibilityinfo>APIs</a><li><a class=dropdown__link href=/architecture/overview>Architecture</a></ul></div><a class="navbar__item navbar__link" href=/contributing/overview>Contributing</a><a class="navbar__item navbar__link" href=/community/overview>Community</a><a class="navbar__item navbar__link" href=/showcase>Showcase</a><a class="navbar__item navbar__link" href=/blog>Blog</a><a href=https://github.com/facebook/react-native target=_blank rel="noopener noreferrer" class="navbar__item navbar__link navbar-github-link" aria-label="GitHub repository"></a><div class="toggle_ki11 colorModeToggle_Hewu"><button class="clean-btn toggleButton_MMFG toggleButtonDisabled_Uw7m darkNavbarColorModeToggle_m8pZ" type=button disabled title="system mode" aria-label="Switch between dark and light mode (currently system mode)"><svg viewBox="0 0 24 24" width=24 height=24 aria-hidden=true class="toggleIcon_k9hJ lightToggleIcon_lgto"><path fill=currentColor d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"/></svg><svg viewBox="0 0 24 24" width=24 height=24 aria-hidden=true class="toggleIcon_k9hJ darkToggleIcon_U96C"><path fill=currentColor d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"/></svg><svg viewBox="0 0 24 24" width=24 height=24 aria-hidden=true class="toggleIcon_k9hJ systemToggleIcon_E5c0"><path fill=currentColor d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"/></svg></button></div><div class=navbarSearchContainer_bzqh><button type=button class="DocSearch DocSearch-Button" aria-label="Search (Command+K)"><span class=DocSearch-Button-Container><svg width=20 height=20 class=DocSearch-Search-Icon viewBox="0 0 20 20" aria-hidden=true><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke=currentColor fill=none fill-rule=evenodd stroke-linecap=round stroke-linejoin=round /></svg><span class=DocSearch-Button-Placeholder>Search</span></span><span class=DocSearch-Button-Keys></span></button></div></div></div><div role=presentation class=navbar-sidebar__backdrop></div></nav><div id=__docusaurus_skipToContent_fallback class="theme-layout-main main-wrapper mainWrapper_MB5r"><div class=docsWrapper__sE8><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_iEvu" type=button></button><div class=docRoot_DfVB><aside class="theme-doc-sidebar-container docSidebarContainer_c7NB"><div class=sidebarViewport_KYo0><div class=sidebar_CUen><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_jmj1 menuWithAnnouncementBar_YufC"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false href=/docs/getting-started>The Basics</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false href=/docs/environment-setup>Environment setup</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false href=/docs/running-on-device>Workflow</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false href=/docs/style>UI & Interaction</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false href=/docs/debugging>Debugging</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false href=/docs/testing-overview>Testing</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role=button aria-expanded=true href=/docs/performance>Performance</a></div><ul class=menu__list><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/docs/performance>Performance Overview</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current=page tabindex=0 href=/docs/build-speed>Speeding up your Build phase</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/docs/optimizing-flatlist-configuration>Optimizing Flatlist Configuration</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/docs/optimizing-javascript-loading>Optimizing JavaScript loading</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/docs/profiling>Profiling</a></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false href=/docs/javascript-environment>JavaScript Runtime</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false href=/docs/the-new-architecture/what-is-codegen>Codegen</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false href=/docs/native-platform>Native Development</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false href=/docs/headless-js-android>Android and iOS guides</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false href=/docs/legacy/native-modules-intro>Legacy Architecture</a></div></ul></nav></div></div></aside><main class=docMainContainer_a9sJ><div class="container padding-top--md padding-bottom--lg"><div class=row><div class="col docItemCol_Qr34"><div class=docItemContainer_tjFy><article><div class="tocCollapsible_wXna theme-doc-toc-mobile tocMobile_Ojys"><button type=button class="clean-btn tocCollapsibleButton_iI2p">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Speeding up your Build phase</h1></header><p>Building your React Native app could be <strong>expensive</strong> and take several minutes of developers time. 5This can be problematic as your project grows and generally in bigger organizations with multiple React Native developers.</p> 6<p>To mitigate this performance hit, this page shares some suggestions on how to <strong>improve your build time</strong>.</p> 7<div class="theme-admonition theme-admonition-info admonition_WCGJ alert alert--info"><div class=admonitionHeading_GCBg><span class=admonitionIcon_L39b><svg viewBox="0 0 14 16"><path fill-rule=evenodd d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"/></svg></span>info</div><div class=admonitionContent_pbrs><p>Please note that those suggestions are advanced feature that requires some amount of understanding of how the native build tools work.</div></div> 8<h2 class="anchor anchorWithStickyNavbar_JmGV" id=build-only-one-abi-during-development-android-only>Build only one ABI during development (Android-only)<a href=#build-only-one-abi-during-development-android-only class=hash-link aria-label="Direct link to Build only one ABI during development (Android-only)" title="Direct link to Build only one ABI during development (Android-only)"></a></h2> 9<p>When building your android app locally, by default you build all the 4 <a href=https://developer.android.com/ndk/guides/abis target=_blank rel="noopener noreferrer">Application Binary Interfaces (ABIs)</a> : <code>armeabi-v7a</code>, <code>arm64-v8a</code>, <code>x86</code> & <code>x86_64</code>.</p> 10<p>However, you probably don't need to build all of them if you're building locally and testing your emulator or on a physical device.</p> 11<p>This should reduce your <strong>native build time</strong> by a ~75% factor.</p> 12<p>If you're using the React Native CLI, you can add the <code>--active-arch-only</code> flag to the <code>run-android</code> command. This flag will make sure the correct ABI is picked up from either the running emulator or the plugged in phone. To confirm that this approach is working fine, you'll see a message like <code>info Detected architectures arm64-v8a</code> on console.</p> 13<div class="language-tsx codeBlockContainer_mQmQ theme-code-block" style=--prism-color:#FFFFFF;--prism-background-color:#282C34><div class=codeBlockContent_t_Hd><pre tabindex=0 class="prism-code language-tsx codeBlock_RMoD thin-scrollbar" style=color:#FFFFFF;background-color:#282C34><code class=codeBlockLines_AclH><span class=token-line style=color:#FFFFFF><span class="token plain">$ yarn react</span><span class="token operator" style=color:#fc929e>-</span><span class="token plain">native run</span><span class="token operator" style=color:#fc929e>-</span><span class="token plain">android </span><span class="token operator" style=color:#fc929e>--</span><span class="token plain">active</span><span class="token operator" style=color:#fc929e>-</span><span class="token plain">arch</span><span class="token operator" style=color:#fc929e>-</span><span class="token plain">only</span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"></span><span class="token punctuation" style=color:#657b83>[</span><span class="token plain"> </span><span class="token spread operator" style=color:#fc929e>...</span><span class="token plain"> </span><span class="token punctuation" style=color:#657b83>]</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain">info </span><span class="token maybe-class-name">Running</span><span class="token plain"> jetifier to migrate libraries to </span><span class="token maybe-class-name">AndroidX</span><span class="token punctuation" style=color:#657b83>.</span><span class="token plain"> </span><span class="token property-access maybe-class-name">You</span><span class="token plain"> can disable it using </span><span class="token string" style=color:#8dc891>"--no-jetifier"</span><span class="token plain"> flag</span><span class="token punctuation" style=color:#657b83>.</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"></span><span class="token property-access maybe-class-name">Jetifier</span><span class="token plain"> found </span><span class="token number" style=color:#5a9bcf>1037</span><span class="token plain"> </span><span class="token function" style=color:#79b6f2>file</span><span class="token punctuation" style=color:#657b83>(</span><span class="token plain">s</span><span class="token punctuation" style=color:#657b83>)</span><span class="token plain"> to forward</span><span class="token operator" style=color:#fc929e>-</span><span class="token plain">jetify</span><span class="token punctuation" style=color:#657b83>.</span><span class="token plain"> </span><span class="token property-access maybe-class-name">Using</span><span class="token plain"> </span><span class="token number" style=color:#5a9bcf>32</span><span class="token plain"> workers</span><span class="token spread operator" style=color:#fc929e>...</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain">info </span><span class="token constant" style=color:#5a9bcf>JS</span><span class="token plain"> server already running</span><span class="token punctuation" style=color:#657b83>.</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"></span><span class="token property-access">info</span><span class="token plain"> </span><span class="token maybe-class-name">Detected</span><span class="token plain"> architectures arm64</span><span class="token operator" style=color:#fc929e>-</span><span class="token plain">v8a</span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain">info </span><span class="token maybe-class-name">Installing</span><span class="token plain"> the app</span><span class="token spread operator" style=color:#fc929e>...</span><br></span></code></pre></div></div> 14<p>This mechanism relies on the <code>reactNativeArchitectures</code> Gradle property.</p> 15<p>Therefore, if you're building directly with Gradle from the command line and without the CLI, you can specify the ABI you want to build as follows:</p> 16<div class="language-tsx codeBlockContainer_mQmQ theme-code-block" style=--prism-color:#FFFFFF;--prism-background-color:#282C34><div class=codeBlockContent_t_Hd><pre tabindex=0 class="prism-code language-tsx codeBlock_RMoD thin-scrollbar" style=color:#FFFFFF;background-color:#282C34><code class=codeBlockLines_AclH><span class=token-line style=color:#FFFFFF><span class="token plain">$ </span><span class="token punctuation" style=color:#657b83>.</span><span class="token operator" style=color:#fc929e>/</span><span class="token plain">gradlew </span><span class="token operator" style=color:#fc929e>:</span><span class="token plain">app</span><span class="token operator" style=color:#fc929e>:</span><span class="token plain">assembleDebug </span><span class="token operator" style=color:#fc929e>-</span><span class="token maybe-class-name">PreactNativeArchitectures</span><span class="token operator" style=color:#fc929e>=</span><span class="token plain">x86</span><span class="token punctuation" style=color:#657b83>,</span><span class="token plain">x86_64</span><br></span></code></pre></div></div> 17<p>This can be useful if you wish to build your Android App on a CI and use a matrix to parallelize the build of the different architectures.</p> 18<p>If you wish, you can also override this value locally, using the <code>gradle.properties</code> file you have in the <a href=https://github.com/facebook/react-native/blob/19cf70266eb8ca151aa0cc46ac4c09cb987b2ceb/template/android/gradle.properties#L30-L33 target=_blank rel="noopener noreferrer">top-level folder</a> of your project:</p> 19<div class="language-tsx codeBlockContainer_mQmQ theme-code-block" style=--prism-color:#FFFFFF;--prism-background-color:#282C34><div class=codeBlockContent_t_Hd><pre tabindex=0 class="prism-code language-tsx codeBlock_RMoD thin-scrollbar" style=color:#FFFFFF;background-color:#282C34><code class=codeBlockLines_AclH><span class=token-line style=color:#FFFFFF><span class="token plain"># </span><span class="token maybe-class-name">Use</span><span class="token plain"> </span><span class="token keyword" style=color:#c5a5c5>this</span><span class="token plain"> property to specify which architecture you want to build</span><span class="token punctuation" style=color:#657b83>.</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"># </span><span class="token maybe-class-name">You</span><span class="token plain"> can also override it from the </span><span class="token constant" style=color:#5a9bcf>CLI</span><span class="token plain"> using</span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"># </span><span class="token punctuation" style=color:#657b83>.</span><span class="token operator" style=color:#fc929e>/</span><span class="token plain">gradlew </span><span class="token tag punctuation" style=color:#657b83>&lt;</span><span class="token tag" style=color:#fc929e>task</span><span class="token tag punctuation" style=color:#657b83>></span><span class="token plain-text"> -PreactNativeArchitectures=x86_64</span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain-text">reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64</span><br></span></code></pre></div></div> 20<p>Once you build a <strong>release version</strong> of your app, don't forget to remove those flags as you want to build an apk/app bundle that works for all the ABIs and not only for the one you're using in your daily development workflow.</p> 21<h2 class="anchor anchorWithStickyNavbar_JmGV" id=enable-configuration-caching-android-only>Enable Configuration Caching (Android-only)<a href=#enable-configuration-caching-android-only class=hash-link aria-label="Direct link to Enable Configuration Caching (Android-only)" title="Direct link to Enable Configuration Caching (Android-only)"></a></h2> 22<p>Since React Native 0.79, you can also enable Gradle Configuration Caching.</p> 23<p>When you’re running an Android build with <code>yarn android</code>, you will be executing a Gradle build that is composed by two steps (<a href=https://docs.gradle.org/current/userguide/build_lifecycle.html target=_blank rel="noopener noreferrer">source</a>):</p> 24<ul> 25<li>Configuration phase, when all the <code>.gradle</code> files are evaluated.</li> 26<li>Execution phase, when the tasks are actually executed so the Java/Kotlin code is compiled and so on.</li> 27</ul> 28<p>You will now be able to enable Configuration Caching, which will allow you to skip the Configuration phase on subsequent builds.</p> 29<p>This is beneficial when making frequent changes to the native code as it improves build times.</p> 30<p>For example here you can see how rebuilding faster it is to rebuild RN-Tester after a change in the native code:</p> 31<p><img decoding=async loading=lazy alt="gradle config caching" src=/assets/images/gradle-config-caching-9b21881523e612e959f5d6c68a3a3cb6.gif width=960 height=450 class=img_SS3x></p> 32<p>You can enable Gradle Configuration Caching by adding the following line in your <code>android/gradle.properties</code> file:</p> 33<div class="language-tsx codeBlockContainer_mQmQ theme-code-block" style=--prism-color:#FFFFFF;--prism-background-color:#282C34><div class=codeBlockContent_t_Hd><pre tabindex=0 class="prism-code language-tsx codeBlock_RMoD thin-scrollbar" style=color:#FFFFFF;background-color:#282C34><code class=codeBlockLines_AclH><span class=token-line style=color:#FFFFFF><span class="token plain">org</span><span class="token punctuation" style=color:#657b83>.</span><span class="token property-access">gradle</span><span class="token punctuation" style=color:#657b83>.</span><span class="token property-access">configuration</span><span class="token operator" style=color:#fc929e>-</span><span class="token plain">cache</span><span class="token operator" style=color:#fc929e>=</span><span class="token boolean" style=color:#ff8b50>true</span><br></span></code></pre></div></div> 34<p>Please refer to the <a href=https://docs.gradle.org/current/userguide/configuration_cache.html target=_blank rel="noopener noreferrer">official Gradle documentation</a> for more resources on Configuration Caching.</p> 35<h2 class="anchor anchorWithStickyNavbar_JmGV" id=use-a-compiler-cache>Use a compiler cache<a href=#use-a-compiler-cache class=hash-link aria-label="Direct link to Use a compiler cache" title="Direct link to Use a compiler cache"></a></h2> 36<p>If you're running frequent native builds (either C++ or Objective-C), you might benefit from using a <strong>compiler cache</strong>.</p> 37<p>Specifically you can use two type of caches: local compiler caches and distributed compiler caches.</p> 38<h3 class="anchor anchorWithStickyNavbar_JmGV" id=local-caches>Local caches<a href=#local-caches class=hash-link aria-label="Direct link to Local caches" title="Direct link to Local caches"></a></h3> 39<div class="theme-admonition theme-admonition-info admonition_WCGJ alert alert--info"><div class=admonitionHeading_GCBg><span class=admonitionIcon_L39b><svg viewBox="0 0 14 16"><path fill-rule=evenodd d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"/></svg></span>info</div><div class=admonitionContent_pbrs><p>The following instructions will work for <strong>both Android & iOS</strong>. 40If you're building only Android apps, you should be good to go. 41If you're building also iOS apps, please follow the instructions in the <a href=#xcode-specific-setup>XCode Specific Setup</a> section below.</div></div> 42<p>We suggest to use <a href=https://ccache.dev/ target=_blank rel="noopener noreferrer"><strong>ccache</strong></a> to cache the compilation of your native builds. 43Ccache works by wrapping the C++ compilers, storing the compilation results, and skipping the compilation 44if an intermediate compilation result was originally stored.</p> 45<p>Ccache is available in the package manager for most operating systems. On macOS, we can install ccache with <code>brew install ccache</code>. 46Or you can follow the <a href=https://github.com/ccache/ccache/blob/master/doc/INSTALL.md target=_blank rel="noopener noreferrer">official installation instructions</a> to install from source.</p> 47<p>You can then do two clean builds (e.g. on Android you can first run <code>yarn react-native run-android</code>, delete the <code>android/app/build</code> folder and run the first command once more). You will notice that the second build was way faster than the first one (it should take seconds rather than minutes). 48While building, you can verify that <code>ccache</code> works correctly and check the cache hits/miss rate <code>ccache -s</code></p> 49<div class="language-tsx codeBlockContainer_mQmQ theme-code-block" style=--prism-color:#FFFFFF;--prism-background-color:#282C34><div class=codeBlockContent_t_Hd><pre tabindex=0 class="prism-code language-tsx codeBlock_RMoD thin-scrollbar" style=color:#FFFFFF;background-color:#282C34><code class=codeBlockLines_AclH><span class=token-line style=color:#FFFFFF><span class="token plain">$ ccache </span><span class="token operator" style=color:#fc929e>-</span><span class="token plain">s</span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"></span><span class="token maybe-class-name">Summary</span><span class="token operator" style=color:#fc929e>:</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"> </span><span class="token maybe-class-name">Hits</span><span class="token operator" style=color:#fc929e>:</span><span class="token plain"> </span><span class="token number" style=color:#5a9bcf>196</span><span class="token plain"> </span><span class="token operator" style=color:#fc929e>/</span><span class="token plain"> </span><span class="token number" style=color:#5a9bcf>3068</span><span class="token plain"> </span><span class="token punctuation" style=color:#657b83>(</span><span class="token number" style=color:#5a9bcf>6.39</span><span class="token plain"> </span><span class="token operator" style=color:#fc929e>%</span><span class="token punctuation" style=color:#657b83>)</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"> </span><span class="token maybe-class-name">Direct</span><span class="token operator" style=color:#fc929e>:</span><span class="token plain"> </span><span class="token number" style=color:#5a9bcf>0</span><span class="token plain"> </span><span class="token operator" style=color:#fc929e>/</span><span class="token plain"> </span><span class="token number" style=color:#5a9bcf>3068</span><span class="token plain"> </span><span class="token punctuation" style=color:#657b83>(</span><span class="token number" style=color:#5a9bcf>0.00</span><span class="token plain"> </span><span class="token operator" style=color:#fc929e>%</span><span class="token punctuation" style=color:#657b83>)</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"> </span><span class="token maybe-class-name">Preprocessed</span><span class="token operator" style=color:#fc929e>:</span><span class="token plain"> </span><span class="token number" style=color:#5a9bcf>196</span><span class="token plain"> </span><span class="token operator" style=color:#fc929e>/</span><span class="token plain"> </span><span class="token number" style=color:#5a9bcf>3068</span><span class="token plain"> </span><span class="token punctuation" style=color:#657b83>(</span><span class="token number" style=color:#5a9bcf>6.39</span><span class="token plain"> </span><span class="token operator" style=color:#fc929e>%</span><span class="token punctuation" style=color:#657b83>)</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"> </span><span class="token maybe-class-name">Misses</span><span class="token operator" style=color:#fc929e>:</span><span class="token plain"> </span><span class="token number" style=color:#5a9bcf>2872</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"> </span><span class="token maybe-class-name">Direct</span><span class="token operator" style=color:#fc929e>:</span><span class="token plain"> </span><span class="token number" style=color:#5a9bcf>3068</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"> </span><span class="token maybe-class-name">Preprocessed</span><span class="token operator" style=color:#fc929e>:</span><span class="token plain"> </span><span class="token number" style=color:#5a9bcf>2872</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"> </span><span class="token maybe-class-name">Uncacheable</span><span class="token operator" style=color:#fc929e>:</span><span class="token plain"> </span><span class="token number" style=color:#5a9bcf>1</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"></span><span class="token maybe-class-name">Primary</span><span class="token plain"> storage</span><span class="token operator" style=color:#fc929e>:</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"> </span><span class="token maybe-class-name">Hits</span><span class="token operator" style=color:#fc929e>:</span><span class="token plain"> </span><span class="token number" style=color:#5a9bcf>196</span><span class="token plain"> </span><span class="token operator" style=color:#fc929e>/</span><span class="token plain"> </span><span class="token number" style=color:#5a9bcf>6136</span><span class="token plain"> </span><span class="token punctuation" style=color:#657b83>(</span><span class="token number" style=color:#5a9bcf>3.19</span><span class="token plain"> </span><span class="token operator" style=color:#fc929e>%</span><span class="token punctuation" style=color:#657b83>)</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"> </span><span class="token maybe-class-name">Misses</span><span class="token operator" style=color:#fc929e>:</span><span class="token plain"> </span><span class="token number" style=color:#5a9bcf>5940</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"> </span><span class="token maybe-class-name">Cache</span><span class="token plain"> </span><span class="token function" style=color:#79b6f2>size</span><span class="token plain"> </span><span class="token punctuation" style=color:#657b83>(</span><span class="token constant" style=color:#5a9bcf>GB</span><span class="token punctuation" style=color:#657b83>)</span><span class="token operator" style=color:#fc929e>:</span><span class="token plain"> </span><span class="token number" style=color:#5a9bcf>0.60</span><span class="token plain"> </span><span class="token operator" style=color:#fc929e>/</span><span class="token plain"> </span><span class="token number" style=color:#5a9bcf>20.00</span><span class="token plain"> </span><span class="token punctuation" style=color:#657b83>(</span><span class="token number" style=color:#5a9bcf>3.00</span><span class="token plain"> </span><span class="token operator" style=color:#fc929e>%</span><span class="token punctuation" style=color:#657b83>)</span><br></span></code></pre></div></div> 50<p>Note that <code>ccache</code> aggregates the stats over all builds. You can use <code>ccache --zero-stats</code> to reset them before a build to verify the cache-hit ratio.</p> 51<p>Should you need to wipe your cache, you can do so with <code>ccache --clear</code></p> 52<h4 class="anchor anchorWithStickyNavbar_JmGV" id=xcode-specific-setup>XCode Specific Setup<a href=#xcode-specific-setup class=hash-link aria-label="Direct link to XCode Specific Setup" title="Direct link to XCode Specific Setup"></a></h4> 53<p>To make sure <code>ccache</code> works correctly with iOS and XCode, you need to enable React Native support for ccache in <code>ios/Podfile</code>.</p> 54<p>Open <code>ios/Podfile</code> in your editor and uncomment the <code>ccache_enabled</code> line.</p> 55<div class="language-ruby codeBlockContainer_mQmQ theme-code-block" style=--prism-color:#FFFFFF;--prism-background-color:#282C34><div class=codeBlockTitle_kY6l>ruby</div><div class=codeBlockContent_t_Hd><pre tabindex=0 class="prism-code language-ruby codeBlock_RMoD thin-scrollbar" style=color:#FFFFFF;background-color:#282C34><code class=codeBlockLines_AclH><span class=token-line style=color:#FFFFFF><span class="token plain"> post_install </span><span class="token keyword" style=color:#c5a5c5>do</span><span class="token plain"> </span><span class="token operator" style=color:#fc929e>|</span><span class="token plain">installer</span><span class="token operator" style=color:#fc929e>|</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"> </span><span class="token comment" style=color:#93a1a1># https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"> react_native_post_install</span><span class="token punctuation" style=color:#657b83>(</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"> installer</span><span class="token punctuation" style=color:#657b83>,</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"> config</span><span class="token punctuation" style=color:#657b83>[</span><span class="token symbol" style=color:#5a9bcf>:reactNativePath</span><span class="token punctuation" style=color:#657b83>]</span><span class="token punctuation" style=color:#657b83>,</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"> </span><span class="token symbol" style=color:#5a9bcf>:mac_catalyst_enabled</span><span class="token plain"> </span><span class="token operator" style=color:#fc929e>=></span><span class="token plain"> </span><span class="token boolean" style=color:#ff8b50>false</span><span class="token punctuation" style=color:#657b83>,</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"> </span><span class="token comment" style=color:#93a1a1># TODO: Uncomment the line below</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"> </span><span class="token symbol" style=color:#5a9bcf>:ccache_enabled</span><span class="token plain"> </span><span class="token operator" style=color:#fc929e>=></span><span class="token plain"> </span><span class="token boolean" style=color:#ff8b50>true</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"> </span><span class="token punctuation" style=color:#657b83>)</span><span class="token plain"></span><br></span><span class=token-line style=color:#FFFFFF><span class="token plain"> </span><span class="token keyword" style=color:#c5a5c5>end</span><br></span></code></pre></div></div> 56<h4 class="anchor anchorWithStickyNavbar_JmGV" id=using-this-approach-on-a-ci>Using this approach on a CI<a href=#using-this-approach-on-a-ci class=hash-link aria-label="Direct link to Using this approach on a CI" title="Direct link to Using this approach on a CI"></a></h4> 57<p>Ccache uses the <code>/Users/$USER/Library/Caches/ccache</code> folder on macOS to store the cache. 58Therefore you could save & restore the corresponding folder also on CI to speedup your builds.</p> 59<p>However, there are a couple of things to be aware:</p> 60<ol> 61<li> 62<p>On CI, we recommend to do a full clean build, to avoid poisoned cache problems. If you follow the approach mentioned in the previous paragraph, you should be able to parallelize the native build on 4 different ABIs and you will most likely not need <code>ccache</code> on CI.</p> 63</li> 64<li> 65<p><code>ccache</code> relies on timestamps to compute a cache hit. This doesn't work well on CI as files are re-downloaded at every CI run. To overcome this, you'll need to use the <code>compiler_check content</code> option which relies instead on <a href=https://ccache.dev/manual/4.3.html target=_blank rel="noopener noreferrer">hashing the content of the file</a>.</p> 66</li> 67</ol> 68<h3 class="anchor anchorWithStickyNavbar_JmGV" id=distributed-caches>Distributed caches<a href=#distributed-caches class=hash-link aria-label="Direct link to Distributed caches" title="Direct link to Distributed caches"></a></h3> 69<p>Similar to local caches, you might want to consider using a distributed cache for your native builds. 70This could be specifically useful in bigger organizations that are doing frequent native builds.</p> 71<p>We recommend to use <a href=https://github.com/mozilla/sccache target=_blank rel="noopener noreferrer">sccache</a> to achieve this. 72We defer to the sccache <a href=https://github.com/mozilla/sccache/blob/main/docs/DistributedQuickstart.md target=_blank rel="noopener noreferrer">distributed compilation quickstart</a> for instructions on how to setup and use this tool.</div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class=editButtons_t0bR><a href=https://github.com/facebook/react-native-website/edit/main/docs/build-speed.md target=_blank rel="noopener noreferrer" class=theme-edit-this-page><svg fill=currentColor height=20 width=20 viewBox="0 0 40 40" class=iconEdit_bHB7 aria-hidden=true><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"/></g></svg>Edit page for next release</a><a href=https://github.com/facebook/react-native-website/edit/main/website/versioned_docs/version-0.79/build-speed.md target=_blank rel="noopener noreferrer" class=theme-edit-this-page><svg fill=currentColor height=20 width=20 viewBox="0 0 40 40" class=iconEdit_bHB7 aria-hidden=true><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"/></g></svg>Edit page for current release</a></div><div class=lastUpdated_VsjB><span class=theme-last-updated>Last updated<!-- --> on <b><time datetime=2025-04-14T14:14:17.000Z itemprop=dateModified>Apr 14, 2025</time></b></span></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href=/docs/performance><div class=pagination-nav__sublabel>Previous</div><div class=pagination-nav__label>Performance Overview</div></a><a class="pagination-nav__link pagination-nav__link--next" href=/docs/optimizing-flatlist-configuration><div class=pagination-nav__sublabel>Next</div><div class=pagination-nav__label>Optimizing Flatlist Configuration</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_XG6w thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href=#build-only-one-abi-during-development-android-only class="table-of-contents__link toc-highlight">Build only one ABI during development (Android-only)</a><li><a href=#enable-configuration-caching-android-only class="table-of-contents__link toc-highlight">Enable Configuration Caching (Android-only)</a><li><a href=#use-a-compiler-cache class="table-of-contents__link toc-highlight">Use a compiler cache</a><ul><li><a href=#local-caches class="table-of-contents__link toc-highlight">Local caches</a><li><a href=#distributed-caches class="table-of-contents__link toc-highlight">Distributed caches</a></ul></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class=footer__title>Develop</div><ul class="footer__items clean-list"><li class=footer__item><a class=footer__link-item href=/docs/getting-started>Guides</a><li class=footer__item><a class=footer__link-item href=/docs/components-and-apis>Components</a><li class=footer__item><a class=footer__link-item href=/docs/accessibilityinfo>APIs</a><li class=footer__item><a class=footer__link-item href=/architecture/overview>Architecture</a></ul></div><div class="theme-layout-footer-column col footer__col"><div class=footer__title>Participate</div><ul class="footer__items clean-list"><li class=footer__item><a class=footer__link-item href=/showcase>Showcase</a><li class=footer__item><a class=footer__link-item href=/contributing/overview>Contributing</a><li class=footer__item><a class=footer__link-item href=/community/overview>Community</a><li class=footer__item><a href=https://reactnative.directory/ target=_blank rel="noopener noreferrer" class=footer__link-item>Directory<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_2l9O><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a href=https://stackoverflow.com/questions/tagged/react-native target=_blank rel="noopener noreferrer" class=footer__link-item>Stack Overflow<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_2l9O><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a></ul></div><div class="theme-layout-footer-column col footer__col"><div class=footer__title>Find us</div><ul class="footer__items clean-list"><li class=footer__item><a class=footer__link-item href=/blog>Blog</a><li class=footer__item><a href=https://x.com/reactnative target=_blank rel="noopener noreferrer" class=footer__link-item>X<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_2l9O><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a href=https://bsky.app/profile/reactnative.dev target=_blank rel="noopener noreferrer" class=footer__link-item>Bluesky<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_2l9O><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a href=https://github.com/facebook/react-native target=_blank rel="noopener noreferrer" class=footer__link-item>GitHub<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_2l9O><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a></ul></div><div class="theme-layout-footer-column col footer__col"><div class=footer__title>Explore More</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://react.dev/ target=_blank rel="noopener noreferrer" class=footer__link-item>ReactJS<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_2l9O><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a href=https://opensource.fb.com/legal/privacy/ target=_blank rel="noopener noreferrer" class=footer__link-item>Privacy Policy<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_2l9O><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a href=https://opensource.fb.com/legal/terms/ target=_blank rel="noopener noreferrer" class=footer__link-item>Terms of Service<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_2l9O><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a></ul></div></div><div class="footer__bottom text--center"><div class=margin-bottom--sm><a href=https://opensource.fb.com/ rel="noopener noreferrer" class=footerLogoLink_tutC><img src=/img/oss_logo.svg alt="Meta Open Source Logo" class="footer__logo themedComponent_siVc themedComponent--light_hHel"><img src=/img/oss_logo.svg alt="Meta Open Source Logo" class="footer__logo themedComponent_siVc themedComponent--dark_yETr"></a></div><div class=footer__copyright>Copyright © 2025 Meta Platforms, Inc.</div></div></div></footer></div>