The CodePush alternative for native Swift iOS apps.
App Center's hosted CodePush retired in March 2025. Patch brings the same over-the-air workflow to native Swift — ship code updates with no App Store review, roll the whole fleet back in one click, and never touch JavaScript or React Native.
CodePush was built for React Native. Patch is built for native Swift.
The same idea — push interpreted code over the air, skip the review queue — applied to the stack CodePush never covered.
CodePush updated the JavaScript bundle of a React Native or Cordova app. If your app is genuinely native — Swift and SwiftUI — there was never a JS bundle for CodePush to replace, so the whole category of instant OTA fixes simply wasn't available to you. You waited on App Store review for every one-line fix.
Patch closes that gap. You keep writing ordinary Swift. The Patch CLI compiles the parts of your code that changed to WebAssembly and ships them as a tiny patch; the on-device SDK runs that WebAssembly in the WasmKit runtime. Covered code updates without App Store review, and any release rolls back across your entire fleet instantly — the exact workflow CodePush popularized, now native to Swift with no JavaScript bridge and no web views.
CodePush vs. Patch
| CodePush (App Center) | Patch | |
|---|---|---|
| Target stack | React Native / Cordova (JavaScript) | Native Swift & SwiftUI |
| What ships over the air | JavaScript bundle & assets | Your Swift, compiled to WebAssembly |
| On-device runtime | JavaScript engine | WasmKit (no JS bridge, no web view) |
| Hosted service | Retired March 31, 2025 (self-host only) | Live & maintained |
| No App Store review for covered changes | Yes | Yes |
| Instant fleet-wide rollback | Yes | Yes |
| Staged rollouts & targeting | Yes | Yes |
| Works for native iOS | No | Yes — that's the point |
Which replacement is right for you?
We'll be honest about it — pick by the stack you actually ship.
Self-hosted CodePush or EAS Update
Your app has a JavaScript bundle, so a JS OTA tool is the natural fit. Run Microsoft's open-sourced CodePush server yourself, or move to Expo's EAS Update. Patch isn't for you — it doesn't ship JavaScript.
Patch
You write Swift and SwiftUI, not JavaScript. Patch is the only OTA tool that updates genuinely native iOS code — logic, async/await, and opt-in SwiftUI views — over the air, with instant rollback and no review queue.
Allowed by Apple. Imperceptible to users.
It's explicitly allowed by Apple's own rules. Apple's Developer Program License Agreement (section 3.3.2) expressly permits an app to download and run interpreted code, as long as it doesn't change the app's primary purpose, create a storefront for other code, or bypass the OS sandbox and code signing. Patch meets all three — your signed App Store binary never changes, only the interpreted WebAssembly layer updates. This is the exact same provision CodePush and Expo / EAS Update have relied on for nearly a decade, across tens of thousands of live App Store apps.
The performance overhead is negligible. Patched code runs in WasmKit at near-native speed; for the kind of code Patch ships — business logic, validation, pricing, view construction — the cost is measured in microseconds, far below anything a person could perceive. There's zero impact on launch (the SDK activates the cached module instantly, even offline), and anything genuinely performance-critical stays native automatically, so your hot paths are always compiled machine code.
CodePush migration, answered.
Microsoft retired Visual Studio App Center — including the hosted CodePush service — on March 31, 2025. Microsoft open-sourced a standalone CodePush server you can host yourself, but the managed cloud service is gone, which is why many teams are choosing a maintained, hosted alternative. For React Native, Expo's EAS Update is the common path; for native Swift apps, Patch is the modern OTA option.
No. CodePush updates the JavaScript bundle of a React Native (or Cordova) app — it has nothing to update in a native Swift/SwiftUI app, which has no JS bundle. Patch is built for exactly this case: it compiles your changed native Swift to WebAssembly and ships it over the air, so native iOS teams get the CodePush-style workflow without adopting React Native.
Yes — it's explicitly allowed by Apple's own rules. Apple's Developer Program License Agreement §3.3.2 expressly permits an app to download and run interpreted code, as long as it doesn't change the app's primary purpose, create a storefront for other code, or bypass the OS sandbox and code signing. Patch satisfies all three: your signed binary never changes, only the interpreted WebAssembly layer updates. It's the exact same provision CodePush and Expo / EAS Update have relied on for nearly a decade across tens of thousands of App Store apps.
No — the overhead is negligible. Patched code runs in the WasmKit runtime at near-native speed, and for the logic Patch ships the per-call cost is on the order of microseconds, far below anything a user could perceive. There's no launch penalty, and anything performance-critical stays native automatically, so your hot paths are always compiled machine code.
Install the CLI with brew install patch-release/tap/patchcli, then run patchcli init in your app — one command that registers the app, adds the PatchSDK Swift package, and inserts the startup code for you. That's the whole integration. Then run patchcli release to ship your first OTA patch behind a staged rollout. There's a free tier, and no React Native rewrite is involved.
Ship your first native Swift patch today.
Free to start. No App Store review. Instant rollback.