FAQ

Frequently Asked Questions

Everything you need to know about SwiftPatch, React Native OTA updates, migration, security, and compliance.

1

Getting Started

What is SwiftPatch?

SwiftPatch is a modern OTA (Over-The-Air) update platform for React Native. It lets you push JavaScript and asset updates directly to your users' devices instantly, without going through the App Store or Google Play review process. It's the best alternative to the deprecated Microsoft CodePush.

How do OTA updates work in React Native?

React Native apps have two parts: native code (compiled) and JavaScript bundles (interpreted). OTA updates replace the JavaScript bundle on the device with a newer version. When your app launches, the SwiftPatch SDK checks for updates, downloads the new bundle, and applies it—all without requiring a new App Store submission.

Is SwiftPatch free to use?

Yes! SwiftPatch offers a generous Free plan with 5,000 deploys per month and 2 apps. No credit card required. The Indie plan at $19/month includes 25,000 deploys and 5 apps. Team ($79/mo) and Business ($249/mo) plans scale up from there. Enterprise plans with self-hosting and SSO are available with custom pricing.

How long does it take to set up SwiftPatch?

Most teams get SwiftPatch running in under 5 minutes. Install the SDK with npm install swiftpatch, add the initialization code to your app entry point, and you're ready to push updates. If you're migrating from CodePush, our automated migration tool handles the conversion in under 30 minutes.

Does SwiftPatch work with both iOS and Android?

Yes, SwiftPatch fully supports both iOS and Android. You can deploy updates to both platforms simultaneously or target them individually. The SDK includes native modules for both platforms with CocoaPods (iOS) and Gradle (Android) integration.

2

CodePush Migration

Why was CodePush deprecated?

Microsoft deprecated CodePush as part of the Visual Studio App Center retirement on March 31, 2025. The service is no longer maintained, receives no security updates, and does not support React Native's New Architecture. All CodePush users need to migrate to an alternative solution.

How do I migrate from CodePush to SwiftPatch?

Migration takes under 30 minutes: 1) Run npm uninstall react-native-code-push && npm install swiftpatch, 2) Run npx swiftpatch migrate to automatically convert your configuration, 3) Update your app initialization code, 4) Deploy with swiftpatch release --platform all. Our migration script handles most of the work automatically.

Can I run SwiftPatch alongside CodePush during migration?

Yes, you can run both SDKs during your transition period. This allows for gradual migration and testing before fully switching. However, since CodePush is deprecated and no longer maintained, we recommend completing the migration as soon as possible.

Will my existing app binaries work with SwiftPatch?

You'll need to release a new binary that includes the SwiftPatch SDK instead of CodePush. However, once the new binary is in production, all subsequent JavaScript updates can be pushed via OTA without any more App Store submissions.

3

Security & Compliance

Is OTA updating safe and secure?

Yes, when implemented properly. SwiftPatch uses multiple layers of security: RSA/Ed25519 cryptographic bundle signing to prevent tampering, HTTPS-only delivery, SHA-256 hash verification, and optional certificate pinning. Every update is verified before being applied to ensure integrity.

Is SwiftPatch compliant with Apple App Store guidelines?

Yes. SwiftPatch is 100% compliant with Apple App Store Review Guidelines Section 3.3.2, which explicitly allows downloading and executing interpreted code (JavaScript) as long as it doesn't change the primary purpose of the app or create a store within the app. SwiftPatch only updates JavaScript bundles and assets—never native code.

Is SwiftPatch compliant with Google Play policies?

Yes. Google Play policies allow apps to update JavaScript code at runtime. SwiftPatch only modifies JavaScript bundles and assets, which is fully within Google Play's developer program policies.

What about HIPAA, SOC 2, and GDPR compliance?

SwiftPatch Enterprise includes features for regulated industries: self-hosted deployment for data residency, audit logging for compliance trails, SSO/SAML for access control, and cryptographic bundle signing for integrity. These help satisfy requirements for HIPAA, SOC 2, PCI DSS, and GDPR.

How does bundle signing work?

SwiftPatch uses public-key cryptography to sign all update bundles. You generate a key pair, embed the public key in your app, and sign releases with your private key in CI/CD. The SDK verifies the signature before applying any update—if verification fails, the update is rejected and the app continues with the current version.

4

Features & Capabilities

What does '98% smaller patches' mean?

Traditional OTA solutions (like CodePush) send the entire JavaScript bundle on every update—typically 15-20MB. SwiftPatch uses binary-level differential patching (BSDIFF algorithm) to send only the bytes that changed between versions. This reduces a typical 20MB update to just 200KB—a 98% reduction. This means faster downloads, less data usage for your users, and lower bandwidth costs for you.

How does automatic rollback work?

When a user downloads and applies an update, SwiftPatch monitors the app's health for a configurable window (default 30 seconds). If the app crashes during this period, SwiftPatch automatically reverts to the previous stable version in under 3 seconds. The user's app continues working normally, and you're notified of the rollback with error details.

What are staged rollouts?

Staged rollouts let you deploy an update to a percentage of your users first (e.g., 1%), monitor for issues, then gradually increase to 10%, 50%, and 100%. This limits the blast radius if something goes wrong. SwiftPatch supports both manual and automatic rollout expansion based on health metrics.

What can I update via OTA?

You can update: JavaScript code, TypeScript code (compiled to JS), images and assets bundled with your app, CSS/styles, and configuration files. You CANNOT update: native modules (Swift, Kotlin, Objective-C, Java), native UI components, app permissions, or anything that requires recompilation.

Does SwiftPatch support React Native New Architecture?

Yes, SwiftPatch fully supports React Native's New Architecture including the Fabric renderer, TurboModules, and JSI. It works with React Native 0.73+ and bridgeless mode. This is a key advantage over CodePush, which never added New Architecture support.

Can I use SwiftPatch without Expo?

Yes! SwiftPatch was built for bare React Native projects from day one. Unlike some competitors that require Expo modules, SwiftPatch works with any React Native project—bare workflow, Expo managed, or Expo bare. No Expo dependency required.

5

Pricing & Plans

How does SwiftPatch pricing compare to competitors?

SwiftPatch offers competitive pricing: Free (5,000 deploys/mo), Indie at $19/mo (25,000 deploys/mo), Team at $79/mo (200,000 deploys/mo), and Enterprise (custom). Compared to Expo EAS Update ($99/mo for 30,000 deploys), SwiftPatch offers far more deploys at a fraction of the price. Compared to Stallion ($64/mo for 100,000 MAU), SwiftPatch is more affordable with similar features.

What counts as a 'deploy'?

A 'deploy' is counted each time a device successfully downloads and applies a new version of your JavaScript bundle. If a user has your app on two devices, that counts as two deploys. Re-downloading the same version does not count as an additional deploy.

Is there a self-hosted option?

Yes, SwiftPatch Enterprise includes a self-hosted deployment option. You can run the entire SwiftPatch infrastructure on your own servers using Docker/Kubernetes, giving you full control over data residency, security, and compliance.

6

Technical Questions

What happens if a user is offline when an update is pushed?

The app continues working with the current version. When the user comes back online, the SwiftPatch SDK will check for and download the update in the background. The update is applied on the next app restart.

Does SwiftPatch affect app performance?

No. The SwiftPatch SDK is lightweight (< 100KB) and performs update checks asynchronously in the background. There is no impact on app startup time or runtime performance. Updates are downloaded in the background and applied on the next restart.

How do I integrate SwiftPatch with CI/CD?

SwiftPatch integrates with any CI/CD platform. We provide ready-to-use configurations for GitHub Actions, CircleCI, GitLab CI, and Bitbucket Pipelines. Simply add swiftpatch release --platform all to your deployment workflow and set your access key as a CI/CD secret.

Can I target specific app versions or platforms?

Yes. SwiftPatch supports targeting by platform (iOS/Android), app version, and deployment channel. You can maintain separate update tracks for different app versions and push platform-specific updates.

What SDKs and tools does SwiftPatch provide?

SwiftPatch provides: a React Native SDK (@swiftpatch/react-native) for iOS and Android, a CLI tool (swiftpatch-cli) for deployments, a web dashboard for monitoring and management, and REST APIs for custom integrations.

Still have questions?

Our team is here to help. Get started for free or reach out for enterprise inquiries.