Back to blog

Wednesday, June 4, 2025

React Native Stallion CI/CD and Testing Framework: Automate, Test, and Ship OTA Updates

cover

Introduction

Modern React Native development is incomplete without automation. CI/CD pipelines, instant testing, and faster rollouts define high-performance mobile teams.

React Native Stallion takes this further by providing first-class support for CI workflows and a blazing-fast testing system built right into your app.

This blog covers how to:

  • Automate OTA bundle releases via CI/CD
  • Use GitHub Actions to publish on every main merge
  • Slash dev-to-QA time using Stallion’s version switching UI

Let’s dive in.

🤖 Automate Releases with CI/CD Integration

Stallion supports CI/CD automation via CI tokens.

Step 1: Generate a CI Token

From your Stallion Console:

  1. Go to Project Settings
  2. Click Access Tokens
  3. Generate a CI Token

This token is safe for CI pipelines and scoped only for publishing bundles.

Step 2: Use the Token in CLI

npx stallion publish-bundle \
  --upload-path=org-name/project-name/bucket \
  --platform=android \
  --release-note="your release notes" \
  --ci-token="your-ci-token"

📦 Example: GitHub Action to Auto Publish on Main

name: Publish OTA with Stallion

on:
  push:
    branches:
      - main

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: "18"

      - name: Install dependencies
        run: npm ci

      - name: Publish OTA Update with Stallion
        run: |
          COMMIT_MSG=$(git log -1 --pretty=format:"%s")
          echo "Publishing with commit message: $COMMIT_MSG"
          npx stallion publish-bundle \
            --upload-path=my-org/my-project/prod \
            --platform=android \
            --release-note="$COMMIT_MSG" \
            --ci-token="${{ secrets.STALLION_CI_TOKEN }}"

Every push to main will trigger a new OTA release with the commit message as release note.

⚡️ Instant QA with Stallion Testing Framework

Shipping updates is half the battle. Testing them quickly is just as important.

Stallion Testing lets your team install any version of the app directly inside the released app using a built-in SDK modal.

No rebuilds. No TestFlight. No APK uploads. Just deploy, tap, and test.

Why Stallion Testing?

Instead of rebuilding for every JS tweak, simply push a new bundle and test it instantly. QA and devs can try builds within 60 seconds of code changes.

Integrate Stallion Modal

Use the useStallionModal() hook in any internal-only screen to open the modal.

import { useStallionModal } from "react-native-stallion";

const MyDebugScreen = () => {
  const { showModal } = useStallionModal();

  return <Button title="Open Stallion" onPress={showModal} />;
};
Stallion Modal Setup

Set Up Security Pin

Prevent unauthorized use by setting a security pin in your Stallion Console. Every internal tester must enter this pin to open the modal.

Stallion Security Pin

Test builds uploaded via CLI

After upload, the build shows up inside the Stallion modal. Anyone can install it by clicking the download release button and restarting the app.

Stallion Version Switching

Learn more about the full testing framework here: Stallion Testing Docs

Pro Tip:

Stallion lets you seamlessly switch between different versions of your app without ever modifying the native build. This accelerates dev & QA cycles significantly.

Conclusion

With React Native Stallion, you can fully automate OTA updates with GitHub Actions, enable real-time testing, and ship confidently.

From CI tokens to a fully integrated in-app testing modal, Stallion gives you the complete toolkit to modernize your mobile development workflow.

Looking to ship to production? :

Use this guide to ship React Native Stallion updates to real users: Production Usage Docs