Your First Update
Deploy a live OTA update to your React Native app, see it in the dashboard, and verify it on a real device -- all without touching the App Store or Google Play.
- SwiftPatch SDK installed and configured (Quick Start)
- A release build running on a device or simulator
- SwiftPatch CLI installed and authenticated:
npm install -g @swiftpatch/cli
swiftpatch login
Step 1: Make a Visible Change
Edit something you can see on screen:
function HomeScreen() {
return (
<View style={styles.container}>
<Text style={styles.heading}>Hello from SwiftPatch!</Text>
<Text style={styles.subtitle}>This update was delivered over the air.</Text>
</View>
);
}
A single text change is ideal for your first update. Confirm the pipeline works before shipping bigger changes.
Step 2: Deploy
iOS:
swiftpatch deploy -p ios --hermes -n "First OTA update - updated welcome message"
Android:
swiftpatch deploy -p android --hermes -n "First OTA update - updated welcome message"
--hermes for Hermes appsReact Native 0.70+ enables Hermes by default. Deploying without --hermes causes a crash loop.
The CLI bundles your JavaScript, compiles to Hermes bytecode, and uploads it. You'll see output like:
✔ Bundle created (1.2 MB)
✔ Hermes bytecode compiled
✔ Uploaded to SwiftPatch
✔ Release v1.0.0-1 is now live
Step 3: Check the Dashboard
Open the dashboard and go to your project's Releases tab. Your release shows its status, version, and adoption percentage.
SwiftPatch matches releases to devices using an exact match on the native binary version. If your release targets 1.0.0, only devices running 1.0.0 receive it.
Step 4: Verify on Your Device
- Open the app -- this triggers the update check and download.
- Background and reopen, or force-quit and relaunch.
- Your updated text should appear.
Call SwiftPatch.checkForUpdate() in your code to trigger an immediate check. See the SDK Reference.
Step 5: Check Analytics
In the dashboard, go to Analytics. You'll see adoption rate, download success rate, and rollback events within minutes.
Troubleshooting
| Symptom | Fix |
|---|---|
| Old content after relaunch | Ensure you're on a release build. Debug builds ignore OTA updates. |
| 0% adoption | Verify SwiftPatchAppId matches your dashboard App ID. |
| Device not targeted | Check that --app-version matches your native binary version exactly. |
| App crashes after update | Redeploy with --hermes. The SDK auto-rolls back after 2 crashes within 10 seconds. |
| Slow downloads | The first update downloads the full bundle. Subsequent updates use smaller differential patches. |
What You Did
You made a code change, deployed it with one CLI command, confirmed it in the dashboard, and watched it arrive on your device. Every future update follows this same pattern.
Next Steps
- Phased Rollouts -- Release to 5% of users before going to 100%
- Custom Update UI -- Show download progress or prompt users
- CI/CD Integration -- Automate deploys from GitHub Actions or Bitrise