{"id":77221,"date":"2026-02-18T17:47:56","date_gmt":"2026-02-18T12:17:56","guid":{"rendered":"https:\/\/www.tothenew.com\/blog\/?p=77221"},"modified":"2026-02-26T19:40:59","modified_gmt":"2026-02-26T14:10:59","slug":"how-to-enable-over-the-air-ota-updates-in-react-native-using-stallion","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/how-to-enable-over-the-air-ota-updates-in-react-native-using-stallion\/","title":{"rendered":"How to Enable Over-the-Air (OTA) Updates in React Native Using Stallion"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p>Keeping your app users up-to-date instantly is easier than ever with Stallion, a powerful tool for Over-the-Air (OTA) updates in React Native. Forget waiting for app store approvals; push updates directly to your users with zero friction. \ud83d\ude4c<\/p>\n<hr \/>\n<h2>Why Use Stallion?<\/h2>\n<p>\u2705 <strong>Built-in Testing Framework to validate updates before production<\/strong><br \/>\n\ud83d\udd01 <strong>Switch Between App Versions without rebuilding native code<\/strong><br \/>\n\ud83d\udce6 <strong>Publish Bundles Instantly using Stallion CLI<\/strong><br \/>\n\ud83d\udcf2 <strong>Apply Updates In-App using the Stallion SDK<\/strong><br \/>\n\ud83d\udd04 <strong>Manual + Automatic Rollbacks with real-time rollback insights<\/strong><br \/>\n\ud83d\udcca <strong>Detailed Analytics for update adoption and performance tracking<\/strong><br \/>\n\ud83c\udff7\ufe0f <strong>Extensive Free Plan for indie devs and small teams<\/strong><br \/>\n\u2705 <strong>Production-Ready and trusted by teams shipping millions of updates<\/strong><\/p>\n<hr \/>\n<h3>Step 1: Set Up Your Stallion Account<\/h3>\n<p>To get started with Stallion, you&#8217;ll first need to create a free account and set up your project.<\/p>\n<p><strong>Create Your Stallion Account<\/strong><\/p>\n<ol>\n<li>\ud83d\udc49\u00a0<a href=\"https:\/\/console.stalliontech.io\/dashboard\/orgs\">Go to the Stallion Dashboard<\/a><\/li>\n<li>Sign up or log in to your account.<\/li>\n<\/ol>\n<hr \/>\n<p><strong>Create a New Project<\/strong><\/p>\n<p>Once you&#8217;re signed in, you&#8217;ll be guided through the process of creating your first project.<\/p>\n<p><strong>Dashboard View<\/strong><br \/>\nYou&#8217;ll land on the dashboard after logging in:<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-77201\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/12\/1.webp\" alt=\"Dashboard View\" width=\"800\" height=\"195\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/12\/1.webp 800w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/1-300x73.webp 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/1-768x187.webp 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/1-624x152.webp 624w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<hr \/>\n<p><strong>Click \u201cCreate Project\u201d<\/strong><br \/>\nHit the <strong>&#8220;Create Project&#8221;<\/strong>\u00a0button to get started:<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-77202\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/12\/2.webp\" alt=\"Create Project\" width=\"800\" height=\"270\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/12\/2.webp 800w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/2-300x101.webp 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/2-768x259.webp 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/2-624x211.webp 624w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>&nbsp;<\/p>\n<hr \/>\n<p><strong>Fill in Your Project Details<\/strong><br \/>\nEnter your project name and description, then click\u00a0<strong>&#8220;Create&#8221;<\/strong>:<\/p>\n<div id=\"attachment_77203\" style=\"width: 810px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-77203\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-77203\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/12\/3.webp\" alt=\"Project Details\" width=\"800\" height=\"505\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/12\/3.webp 800w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/3-300x189.webp 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/3-768x485.webp 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/3-624x394.webp 624w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><p id=\"caption-attachment-77203\" class=\"wp-caption-text\">Project Details<\/p><\/div>\n<hr \/>\n<p><strong>Project Successfully Created<\/strong><br \/>\nYou&#8217;ll now see your new project listed in the dashboard, Now Click on the project card to proceed.<\/p>\n<div id=\"attachment_77204\" style=\"width: 810px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-77204\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-77204\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/12\/4.webp\" alt=\"Project Successfully\" width=\"800\" height=\"292\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/12\/4.webp 800w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/4-300x110.webp 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/4-768x280.webp 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/4-624x228.webp 624w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><p id=\"caption-attachment-77204\" class=\"wp-caption-text\">Project Successfully<\/p><\/div>\n<hr \/>\n<p><strong>\ud83d\uddc2\ufe0f Create a New Bucket<\/strong><br \/>\nNow, let\u2019s set up a storage bucket for your project.<\/p>\n<p><strong>Bucket View \u2013 Click &#8220;Create Bucket&#8221;<\/strong><br \/>\nNavigate to the\u00a0<strong>Buckets<\/strong>\u00a0section and click on\u00a0<strong>&#8220;Create Bucket&#8221;:<\/strong><\/p>\n<div id=\"attachment_77205\" style=\"width: 810px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-77205\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-77205\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/12\/5.webp\" alt=\"Create Bucket\" width=\"800\" height=\"208\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/12\/5.webp 800w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/5-300x78.webp 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/5-768x200.webp 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/5-624x162.webp 624w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><p id=\"caption-attachment-77205\" class=\"wp-caption-text\">Create Bucket<\/p><\/div>\n<hr \/>\n<p><strong>Create New Bucket<\/strong><\/p>\n<p>Fill in the necessary details to create your new bucket:<\/p>\n<div id=\"attachment_77206\" style=\"width: 810px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-77206\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-77206\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/12\/6.webp\" alt=\"details to create your new bucket\" width=\"800\" height=\"471\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/12\/6.webp 800w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/6-300x177.webp 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/6-768x452.webp 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/6-624x367.webp 624w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><p id=\"caption-attachment-77206\" class=\"wp-caption-text\">details to create your new bucket<\/p><\/div>\n<p style=\"text-align: center;\"><strong>You&#8217;re now ready to start integrating your application with Stallion! \ud83c\udf89<\/strong><\/p>\n<hr \/>\n<p><strong>Step 2: Install the Stallion CLI<br \/>\n<\/strong>Install the CLI to interact with Stallion from your terminal.<\/p>\n<p>Using npm<br \/>\nnpm install &#8211;save-dev stallion-cli<br \/>\nusing Yarn<br \/>\nyarn add -D stallion-cli<\/p>\n<div id=\"attachment_77207\" style=\"width: 635px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-77207\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-77207 size-large\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.12.40\u202fPM-1024x369.png\" alt=\"Install the CLI \" width=\"625\" height=\"225\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.12.40\u202fPM-1024x369.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.12.40\u202fPM-300x108.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.12.40\u202fPM-768x277.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.12.40\u202fPM-624x225.png 624w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.12.40\u202fPM.png 1072w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><p id=\"caption-attachment-77207\" class=\"wp-caption-text\">Install the CLI<\/p><\/div>\n<hr \/>\n<p><strong>\ud83d\udcf2 Step 3: Install the Stallion SDK<\/strong><br \/>\nAdd the Stallion SDK to your React Native project:<\/p>\n<p>Using npm<br \/>\nnpm install react-native-stallion<br \/>\nusing Yarn<br \/>\nyarn add react-native-stallion<\/p>\n<div id=\"attachment_77208\" style=\"width: 656px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-77208\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-77208 \" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.14.32\u202fPM.png\" alt=\"Stallion SDK\" width=\"646\" height=\"242\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.14.32\u202fPM.png 994w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.14.32\u202fPM-300x112.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.14.32\u202fPM-768x287.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.14.32\u202fPM-624x234.png 624w\" sizes=\"(max-width: 646px) 100vw, 646px\" \/><p id=\"caption-attachment-77208\" class=\"wp-caption-text\">Stallion SDK<\/p><\/div>\n<p>Then, install CocoaPods for iOS:<\/p>\n<p>npx pod-install<\/p>\n<hr \/>\n<h2>Step 4: Configure Native Projects<\/h2>\n<p>\ud83e\udd16 Android Configuration<br \/>\n\u2139\ufe0f For React Native &lt; 0.76<br \/>\nIn\u00a0MainApplication.java, update\u00a0getJSBundleFile:<\/p>\n<p>&nbsp;<\/p>\n<div id=\"attachment_77209\" style=\"width: 874px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-77209\" decoding=\"async\" loading=\"lazy\" class=\" wp-image-77209\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.18.25\u202fPM.png\" alt=\"MainApplication\" width=\"864\" height=\"381\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.18.25\u202fPM.png 1488w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.18.25\u202fPM-300x132.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.18.25\u202fPM-1024x451.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.18.25\u202fPM-768x339.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.18.25\u202fPM-624x275.png 624w\" sizes=\"(max-width: 864px) 100vw, 864px\" \/><p id=\"caption-attachment-77209\" class=\"wp-caption-text\">MainApplication<\/p><\/div>\n<hr \/>\n<h2>\u2139\ufe0f For React Native &gt; 0.76<\/h2>\n<p>In MainApplication.kt, update the reactNativeHost:<\/p>\n<div id=\"attachment_77210\" style=\"width: 671px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-77210\" decoding=\"async\" loading=\"lazy\" class=\" wp-image-77210\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.24.09\u202fPM.png\" alt=\"MainApplication\" width=\"661\" height=\"368\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.24.09\u202fPM.png 1416w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.24.09\u202fPM-300x167.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.24.09\u202fPM-1024x570.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.24.09\u202fPM-768x427.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.24.09\u202fPM-624x347.png 624w\" sizes=\"(max-width: 661px) 100vw, 661px\" \/><p id=\"caption-attachment-77210\" class=\"wp-caption-text\">MainApplication<\/p><\/div>\n<hr \/>\n<h2>\ud83c\udf4e iOS Configuration<\/h2>\n<p>\u2139\ufe0f For React Native &lt; 0.76<br \/>\nIn\u00a0AppDelegate.mm, update the\u00a0sourceURLForBridge\u00a0method:<\/p>\n<div id=\"attachment_77211\" style=\"width: 677px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-77211\" decoding=\"async\" loading=\"lazy\" class=\" wp-image-77211\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.25.30\u202fPM.png\" alt=\"AppDelegate\" width=\"667\" height=\"361\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.25.30\u202fPM.png 1482w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.25.30\u202fPM-300x162.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.25.30\u202fPM-1024x554.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.25.30\u202fPM-768x416.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.25.30\u202fPM-624x338.png 624w\" sizes=\"(max-width: 667px) 100vw, 667px\" \/><p id=\"caption-attachment-77211\" class=\"wp-caption-text\">AppDelegate<\/p><\/div>\n<hr \/>\n<p>\u2139\ufe0f For React Native &gt; 0.76<br \/>\nIn\u00a0AppDelegate.swift, update the\u00a0bundleURL()\u00a0method:<\/p>\n<div id=\"attachment_77212\" style=\"width: 700px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-77212\" decoding=\"async\" loading=\"lazy\" class=\" wp-image-77212\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.26.35\u202fPM.png\" alt=\"AppDelegate\" width=\"690\" height=\"328\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.26.35\u202fPM.png 1422w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.26.35\u202fPM-300x143.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.26.35\u202fPM-1024x487.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.26.35\u202fPM-768x365.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.26.35\u202fPM-624x297.png 624w\" sizes=\"(max-width: 690px) 100vw, 690px\" \/><p id=\"caption-attachment-77212\" class=\"wp-caption-text\">AppDelegate<\/p><\/div>\n<hr \/>\n<h2>\ud83d\udd10 Step 5: Add Project ID and App Token<\/h2>\n<p>Add your Stallion credentials to platform-specific config files.<\/p>\n<p>iOS\u00a0(Info.plist):<br \/>\nAdd below code on\u00a0Info.plist\u00a0file<\/p>\n<p>&lt;key&gt;StallionProjectId&lt;\/key&gt;<br \/>\n&lt;string&gt;your_project_id&lt;\/string&gt;<br \/>\n&lt;key&gt;StallionAppToken&lt;\/key&gt;<br \/>\n&lt;string&gt;your_app_token&lt;\/string&gt;<\/p>\n<hr \/>\n<h2>Android\u00a0(res\/values\/strings.xml):<\/h2>\n<p>Add below code on strings.xml file<\/p>\n<p>&lt;string name=&#8221;StallionProjectId&#8221;&gt;your_project_id&lt;\/string&gt;<br \/>\n&lt;string name=&#8221;StallionAppToken&#8221;&gt;your_app_token&lt;\/string&gt;<\/p>\n<hr \/>\n<p>You can generate your app token in the Stallion dashboard:<\/p>\n<p>Click on\u00a0Generate App Token\u00a0button in order to get app token<\/p>\n<div id=\"attachment_77213\" style=\"width: 996px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-77213\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-77213 \" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_dj8n1lzfpkcp4gygajmp.webp\" alt=\"Generate App Token\" width=\"986\" height=\"455\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_dj8n1lzfpkcp4gygajmp.webp 800w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_dj8n1lzfpkcp4gygajmp-300x138.webp 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_dj8n1lzfpkcp4gygajmp-768x354.webp 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_dj8n1lzfpkcp4gygajmp-624x288.webp 624w\" sizes=\"(max-width: 986px) 100vw, 986px\" \/><p id=\"caption-attachment-77213\" class=\"wp-caption-text\">Generate App Token<\/p><\/div>\n<hr \/>\n<p>\ud83d\udd0d Find your Project ID and App Token under Project Settings in the Stallion Dashboard.<\/p>\n<div id=\"attachment_77214\" style=\"width: 810px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-77214\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-77214\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_z8xlvy2y1y4z9y3lz7t9.webp\" alt=\"Dashboard\" width=\"800\" height=\"313\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_z8xlvy2y1y4z9y3lz7t9.webp 800w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_z8xlvy2y1y4z9y3lz7t9-300x117.webp 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_z8xlvy2y1y4z9y3lz7t9-768x300.webp 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_z8xlvy2y1y4z9y3lz7t9-624x244.webp 624w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><p id=\"caption-attachment-77214\" class=\"wp-caption-text\">Dashboard<\/p><\/div>\n<hr \/>\n<h2>\ud83e\uddf5 Step 6: Wrap Your App Component<\/h2>\n<p>In your App.js or App.tsx, wrap your root component with the withStallion HOC:<\/p>\n<p>import { withStallion } from &#8216;react-native-stallion&#8217;;<br \/>\n\/\/ rest of your code<br \/>\nexport default withStallion(App);<\/p>\n<hr \/>\n<h2>Step 7: Create a Release Build<\/h2>\n<p>Install the build on a device or emulator to test.<\/p>\n<hr \/>\n<h2>Step 8: Make a Code Change<\/h2>\n<p>Modify your app\u2019s logic or UI\u2014for example, update some text\u2014and save your changes.<\/p>\n<hr \/>\n<h2>Step 9: Publish the OTA Update<\/h2>\n<p>1. Login to Stallion CLI:<\/p>\n<p>npx stallion login<\/p>\n<p>This will open a browser window for authentication. Once logged in, copy and paste the token back into your terminal.<\/p>\n<p>2. Publish the update:<br \/>\nUse the appropriate command below to publish your update for Android or iOS.<\/p>\n<hr \/>\n<p>\ud83e\udd16 Android Command<\/p>\n<p>npx stallion publish-bundle \\<br \/>\n&#8211;upload-path=orgname\/project-name\/bucket-name \\<br \/>\n&#8211;platform=android<\/p>\n<hr \/>\n<p>\ud83c\udf4e iOS Command<\/p>\n<p>npx stallion publish-bundle \\<br \/>\n&#8211;upload-path=orgname\/project-name\/bucket-name \\<br \/>\n&#8211;platform=ios<\/p>\n<p>\ud83d\udd0d Replace\u00a0orgname,\u00a0project-name, and\u00a0bucket-name\u00a0with your actual values.<\/p>\n<p>Or use &#8220;Copy Bundle Path&#8221; from the dashboard in order to get the orgname\/project-name\/bucket-name:<\/p>\n<hr \/>\n<h2>Step 10: Promote and Release the Bundle<\/h2>\n<p>Follow these steps to promote your Android (and iOS) bundle from staging to production.<\/p>\n<p><strong>Step 1: Access the Bundle Details<\/strong><\/p>\n<div id=\"attachment_77215\" style=\"width: 810px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-77215\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-77215\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_x6p43pvbm7dakiha3pq7.webp\" alt=\"Bundle Details\" width=\"800\" height=\"310\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_x6p43pvbm7dakiha3pq7.webp 800w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_x6p43pvbm7dakiha3pq7-300x116.webp 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_x6p43pvbm7dakiha3pq7-768x298.webp 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_x6p43pvbm7dakiha3pq7-624x242.webp 624w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><p id=\"caption-attachment-77215\" class=\"wp-caption-text\">Bundle Details<\/p><\/div>\n<hr \/>\n<p><strong>Step 2: Open the Android Bundles Tab<\/strong><\/p>\n<div id=\"attachment_77216\" style=\"width: 810px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-77216\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-77216\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_nk9t0xxla9x5yl2r889l.webp\" alt=\"Android Bundles\" width=\"800\" height=\"212\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_nk9t0xxla9x5yl2r889l.webp 800w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_nk9t0xxla9x5yl2r889l-300x80.webp 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_nk9t0xxla9x5yl2r889l-768x204.webp 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_nk9t0xxla9x5yl2r889l-624x165.webp 624w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><p id=\"caption-attachment-77216\" class=\"wp-caption-text\">Android Bundles<\/p><\/div>\n<hr \/>\n<p><strong>Step 3: Add Release Notes and Promote<\/strong><\/p>\n<div id=\"attachment_77217\" style=\"width: 810px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-77217\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-77217\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_2s7k6t4wqu5xa0oi5nte.webp\" alt=\"Promote\" width=\"800\" height=\"515\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_2s7k6t4wqu5xa0oi5nte.webp 800w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_2s7k6t4wqu5xa0oi5nte-300x193.webp 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_2s7k6t4wqu5xa0oi5nte-768x494.webp 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/https___dev-to-uploads.s3.amazonaws.com_uploads_articles_2s7k6t4wqu5xa0oi5nte-624x402.webp 624w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><p id=\"caption-attachment-77217\" class=\"wp-caption-text\">Promote<\/p><\/div>\n<hr \/>\n<p><strong>Step 4: Select Target Version &amp; Finalize Promotion<\/strong><\/p>\n<div id=\"attachment_77218\" style=\"width: 706px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-77218\" decoding=\"async\" loading=\"lazy\" class=\" wp-image-77218\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.46.08\u202fPM.png\" alt=\"Finalize Promotion\" width=\"696\" height=\"606\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.46.08\u202fPM.png 1996w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.46.08\u202fPM-300x261.png 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.46.08\u202fPM-1024x891.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.46.08\u202fPM-768x668.png 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.46.08\u202fPM-1536x1336.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/Screenshot-2025-12-29-at-6.46.08\u202fPM-624x543.png 624w\" sizes=\"(max-width: 696px) 100vw, 696px\" \/><p id=\"caption-attachment-77218\" class=\"wp-caption-text\">Finalize Promotion<\/p><\/div>\n<hr \/>\n<p><strong>Step 5: Manage the Release<\/strong><\/p>\n<p>Once promoted, click on the\u00a0Manage Release\u00a0button.<\/p>\n<div id=\"attachment_77219\" style=\"width: 810px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-77219\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-77219\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/12\/8.webp\" alt=\"Manage Release\" width=\"800\" height=\"470\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/12\/8.webp 800w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/8-300x176.webp 300w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/8-768x451.webp 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/8-624x367.webp 624w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><p id=\"caption-attachment-77219\" class=\"wp-caption-text\">Manage Release<\/p><\/div>\n<hr \/>\n<p><strong>Step 6: Publish to Production<\/strong><\/p>\n<div id=\"attachment_77220\" style=\"width: 810px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-77220\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-77220\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2025\/12\/9.webp\" alt=\"Publish to Production\" width=\"800\" height=\"1041\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2025\/12\/9.webp 800w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/9-231x300.webp 231w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/9-787x1024.webp 787w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/9-768x999.webp 768w, \/blog\/wp-ttn-blog\/uploads\/2025\/12\/9-624x812.webp 624w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><p id=\"caption-attachment-77220\" class=\"wp-caption-text\">Publish to Production<\/p><\/div>\n<p style=\"text-align: center;\"><strong>\ud83c\udf4e The same steps should be followed for iOS as well.<\/strong><\/p>\n<hr \/>\n<h2>\ud83c\udf89 All Done!<\/h2>\n<p>Your bundle has been successfully promoted and released.<\/p>\n<ul>\n<li>To view the latest changes in the app:<\/li>\n<li>Kill (close) the app completely, then<\/li>\n<li>Reopen the app to load the updated JS bundle.<\/li>\n<li>This ensures the latest changes are reflected properly.\ud83d\udd01 If not, try staying in the app for at least a minute before closing it. Then reopen it \u2014 your changes should now be visible.<\/li>\n<\/ul>\n<hr \/>\n<h2>\u2705 Final Thoughts<\/h2>\n<p>Stallion makes the OTA update process seamless and efficient. With minimal setup and a powerful CLI, you can roll out bug fixes, feature updates, or UI tweaks instantly\u2014keeping your app fresh and users happy.<\/p>\n<p>Ready to streamline your React Native deployment?<br \/>\nStart using Stallion today and revolutionize your mobile development workflow.<\/p>\n<hr \/>\n<h2>\ud83d\udcda Reference Documentation<\/h2>\n<ul>\n<li><a href=\"https:\/\/learn.stalliontech.io\/docs\/introduction\">Stallion Docs (Official)<\/a><\/li>\n<li><a href=\"https:\/\/console.stalliontech.io\/auth\/login\">Stallion Console Dashboard<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Keeping your app users up-to-date instantly is easier than ever with Stallion, a powerful tool for Over-the-Air (OTA) updates in React Native. Forget waiting for app store approvals; push updates directly to your users with zero friction. \ud83d\ude4c Why Use Stallion? \u2705 Built-in Testing Framework to validate updates before production \ud83d\udd01 Switch Between App [&hellip;]<\/p>\n","protected":false},"author":1816,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":346},"categories":[5881],"tags":[4845,4848,5853],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/77221"}],"collection":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/users\/1816"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/comments?post=77221"}],"version-history":[{"count":3,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/77221\/revisions"}],"predecessor-version":[{"id":77997,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/77221\/revisions\/77997"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=77221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=77221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=77221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}