Frequently Asked Questions
General
What is SwiftPatch?
SwiftPatch is an OTA (over-the-air) deployment platform for React Native. It lets you push JavaScript bundle updates directly to your users' devices -- no app store review, no waiting.
Which platforms are supported?
iOS and Android.
What can I update with OTA?
You can update:
- JavaScript code
- Images and assets bundled with JS
- JSON configuration files
You cannot update:
- Native modules (Objective-C, Swift, Java, Kotlin)
- Native dependencies (CocoaPods for iOS, Gradle for Android)
- App icons, splash screens, or other native resources
- The React Native version itself
A good rule of thumb: if it is written in JavaScript, you can update it OTA. If it requires pod install or a Gradle sync, you need an app store update.
Is SwiftPatch a CodePush replacement?
Yes. SwiftPatch is a modern alternative to Microsoft CodePush, which has been retired with AppCenter. See the Migration Guide.
Does SwiftPatch comply with App Store guidelines?
Yes. Both Apple and Google allow over-the-air JavaScript updates as long as they do not change the app's primary purpose. SwiftPatch only updates the JavaScript bundle, which is explicitly allowed.
Technical
How large are updates?
SwiftPatch uses differential patching. Updates are typically 98% smaller than the full bundle -- a typical patch is 50KB-500KB.
How fast are updates delivered?
Most updates download in under 1 second on a good connection. The patch applies locally in milliseconds.
What happens if an update crashes the app?
SwiftPatch has built-in crash detection. If the app crashes after an update, it automatically rolls back to the previous working version on the next launch. No user action needed.
Does SwiftPatch work offline?
Yes. The app runs with its current bundle when offline. Updates are checked when connectivity returns.
Can I target specific app versions?
Yes. Each release can specify a target binary version range using semver (e.g., >=1.0.0 <2.0.0 targets all 1.x versions).
How does bundle signing work?
Bundle signing uses RSA key pairs to verify updates come from an authorized source. The CLI signs bundles with your private key, and the SDK verifies them with your public key. See Bundle Signing.
Billing
What plans are available?
| Plan | Price | MAU | Apps |
|---|---|---|---|
| Free | $0/mo | 5,000 | 2 |
| Indie | $19/mo | 25,000 | 5 |
| Team | $79/mo | 200,000 | 15 |
| Business | $249/mo | 750,000 | 50 |
| Enterprise | Custom | Unlimited | Unlimited |
See Limits for a full comparison.
Is there a free plan?
Yes. The Free plan includes 2 apps, 5,000 MAU, 3 team members, and 1 GB of storage. No credit card required.
What counts as MAU?
A monthly active user (MAU) is any unique device that checks for or downloads a deploy within a billing cycle.
What happens if I exceed my plan limits?
You receive a warning email at 80% of your MAU quota. At 100%, new deploy checks return "up to date" until the next billing cycle or until you upgrade. Existing installs continue to work normally.
Support
How do I get help?
- Documentation: You are reading it
- Discord: Community Discord
- GitHub Issues: Report bugs
- Email: Indie, Team, and Business plans include email support at support@swiftpatch.io
- Priority Support: Available on Business and Enterprise plans