FAQs
FAQs
Short answers to common questions. For setup steps and deeper topics, follow the links.
What is Codemagic Patch?
- React Native
- Capacitor
Self-hosted over-the-air (OTA) updates for React Native. You run the server, publish JS bundle updates with the CLI or dashboard, and installed apps pull those updates through the Patch SDK. See How it works.
Self-hosted over-the-air (OTA) updates for Capacitor and Ionic apps. You run the server, publish web asset updates with the CLI or dashboard, and installed apps download them through the Capacitor SDK. See How it works.
Do I need Codemagic CI?
No. Patch works with any CI (GitHub Actions, Bitrise, your laptop). Codemagic is the vendor behind Patch, not a required platform. See CI integration.
Is Patch free?
You can self-host under the Codemagic Server License at no charge while you stay at or below one million monthly active users. Above that, you need a commercial license from Codemagic. See Pricing.
How is Patch different from CodePush forks?
- React Native
- Capacitor
CodePush forks keep the familiar apps, deployments, and release-react-style flows, as hosted SaaS or a self-hosted CodePush-compatible server. Patch is a separate self-host product with its own API, CDN-oriented manifests, dashboard, and metrics. See Comparison or Migrating from CodePush.
CodePush-compatible clients support React Native only. For Capacitor apps, see the comparison with Appflow Live Updates in How Patch compares, or Migrating from Appflow.
Does Patch work with Expo?
- React Native
- Capacitor
Yes. Patch supports bare React Native and Expo projects (including the prebuild plugin). You point the SDK at your Patch server instead of EAS Update. See Migrating from Expo Updates.
Expo is a React Native toolchain and does not apply to Capacitor apps. To set up a Capacitor or Ionic app, see Native setup. If you use Appflow Live Updates, see Migrating from Appflow.
What can I ship over the air?
- React Native
- Capacitor
JavaScript, React components, and bundled assets that stay compatible with the native binary already on the device. Native code changes, new permissions, and SDK upgrades still need a store release. See Core concepts.
The contents of webDir (HTML, JS, CSS, and images), as long as they remain compatible with the native binary on the device. New Capacitor plugins, native configuration changes, and permission changes require a store release. See Core concepts.
Do users need to update from the app store for every release?
- React Native
- Capacitor
Only when the native layer changed. Routine JS fixes and UI updates can roll out OTA; the SDK checks your server on launch or resume. Users typically restart the app to apply the new bundle.
Only when the native layer changes. Web fixes and UI updates can ship over the air. The SDK checks for updates on launch or resume and, by default, applies them on the next restart.
Do I have to run my own server?
Patch is self-hosted. For a quick try on your laptop, see Local quickstart. For production you need a host with Docker, two hostnames (typically two subdomains of a domain you already own), and a GitHub, Bitbucket Cloud, or GitLab OAuth app. See Install.
Where do bundles get downloaded from?
The SDK reads manifests and downloads bundles from your storage domain (or a CDN in front of it), not from the API. The API is the control plane for publishing, auth, and metrics. See How it works.
Can Staging and Production use different sync behavior?
Yes, but only on the client, not from the server. installMode and related options are set in your app code. The usual approach is separate native builds (Staging key vs Production key) and branch sync() options by build flavor. See Preparing for production.
Something isn't working. Where do I start?
Check Troubleshooting for cmpatch doctor, log commands, and common failure modes (version targeting, SDK integration, bundle errors).