FAQs
FAQs
Short answers to common questions. For setup steps and deeper topics, follow the links.
What is Codemagic Patch?
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.
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?
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.
Does Patch work with Expo?
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.
What can I ship over the air?
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.
Do users need to update from the app store for every release?
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.
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 domains, and a GitHub or Bitbucket 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).