CodePush alternative

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.

Microsoft retired Visual Studio App Center — including the hosted CodePush service — on March 31, 2025. Microsoft open-sourced a standalone CodePush server for self-hosting, but the managed cloud is gone. Teams now choose between running their own server, moving to Expo's EAS Update (React Native), or — if they build native iOS — adopting a tool made for native Swift.

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 stackReact Native / Cordova (JavaScript)Native Swift & SwiftUI
What ships over the airJavaScript bundle & assetsYour Swift, compiled to WebAssembly
On-device runtimeJavaScript engineWasmKit (no JS bridge, no web view)
Hosted serviceRetired March 31, 2025 (self-host only)Live & maintained
No App Store review for covered changesYesYes
Instant fleet-wide rollbackYesYes
Staged rollouts & targetingYesYes
Works for native iOSNoYes — that's the point

Which replacement is right for you?

We'll be honest about it — pick by the stack you actually ship.

If you build React Native

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.

If you build native Swift

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.

brew install patch-release/tap/patchcli · free to start · no card required