Skip to main content
v1.0 is here · Read the launch post

Ship fixes in minutes, not App Store days.

AI-native OTA updates for React Native. Brick-proof. Cloudflare-fast. Open-source CLI. Trusted from prototype to 2M MAU.

~/apps/mobile — swiftpatch init
$ npx swiftpatch init
Detecting project...
✓ Found React Native 0.74.3
✓ Patched iOS native project (3 files)
✓ Patched Android native project (2 files)
✓ Created swiftpatch.config.json
✓ Ed25519 signing keys generated
 
Ready. Run `swiftpatch deploy` to ship your first patch.
$
Shipping OTA in production
Three pillars

Built on principles that matter in production.

Most OTA tools optimize for the demo. Swiftpatch optimizes for the 3am rollback.

Brick-proof by design

An OTA bug should never force a store reinstall.

  • Three-slot A/B/staging bundle layout
  • Native boot-counter with auto-rollback
  • Hard floor to the store-shipped bundle

AI-native from day one

Models that actually understand React Native.

  • Crash root-cause analysis in natural language
  • Auto-generated PRs with the proposed fix
  • `swiftpatch doctor` diagnoses your setup in 5s

Built for developers

One command. JSON everywhere. No dashboards required.

  • Deploy, rollback, list — one CLI command each
  • Every output pipeable as JSON
  • MIT-licensed CLI — fork it, ship it, own it
Deploy in 3 commands

From zero to production patch in under 5 minutes.

No dashboards, no wizards. Copy-paste three commands and ship.

1

Install

npm install @swiftpatch/react-native @swiftpatch/cli
2

Initialize

npx swiftpatch init
3

Ship an update

npx swiftpatch deploy
How we compare

Honest trade-offs. Transparent pricing.

Last updated April 2026. Pricing sourced from public docs.

 SwiftpatchCodePushExpo UpdatesStallion
Free MAUUnlimitedSunset1,00010,000
First paid tier$29 / mo$99 / mo$49 / mo
Brick protectionNative + JSJS onlyJS onlyJS only
AI crash analysisBuilt inNoNoNo
Self-host optionYes, BYOCNoNoBeta
Signed bundlesEd25519NoOptionalNo
Developer experience

What the API looks like.

Zero-config by default. Every knob is a prop away when you need it.

App.tsx
// 1. Wrap your app. That's the whole setup.
import { SwiftPatchProvider } from '@swiftpatch/react-native';

<SwiftPatchProvider
  config={{ deploymentKey: process.env.SP_KEY }}
  autoShowBanner
  blockOnMandatory
  onUpdateReady={showToast}
>
  <App />
</SwiftPatchProvider>

Zero-config UX. Full control when you want it.

The Provider ships with a polished native banner, progress UI, and forced-update screen. Every piece is opt-out, themeable, and exposes the same lifecycle as the imperative API.

  • Type-safe config, validated at runtime
  • Events for sync, download, apply, rollback
  • Works with Expo, bare RN, Fabric, Paper
From the field

Teams that ship every Friday.

Representative quotes from developer pain-point interviews (n=42).

"We shipped a critical fix 4 hours after discovery — no review, no rollout delay. Would have been 9 days on the App Store."

— Staff engineer, fintech (500k MAU)

"The rollback triggered itself before we even saw the Sentry alert. Users never noticed."

— Tech lead, consumer app (2M MAU)

"Finally an OTA tool that speaks JSON, not dashboards. `swiftpatch deploy` is in our CI and that's it."

— Platform engineer, SaaS startup

Ready to ship?

Your first 100,000 MAU are on the house. No credit card.