Push native iOS updates instantly.
Over-the-air (OTA) code updates for native Swift apps — no waiting for App Store review. No ugly web views. No slow React Native code.
One command. We handle the rest.
A native-Swift alternative to Expo / CodePush — your React Native friends will be jealous.
Install the CLI (once per machine)
brew install patch-release/tap/patchcli, then patchcli setup to install the Swift→WebAssembly toolchain.
Run patchcli init in your app
One command registers the app (sign in in your browser — the key lands in .Patch.yml automatically), adds the Swift package, and proposes the startup diff. You press y. Under 2 minutes.
Write Swift like always
No annotations to maintain. Patch supports async/await concurrency and coverage for SwiftUI views — up to 98.5% of SwiftUI view elements — over the air. See the Swift OTA quickstart.
Mobile development at the speed of web. Finally.
Rollback with 1 click
Something off? Roll the whole fleet back to any prior version in one click — instant rollback with no App Store review. Your users will be none the wiser.
Monitor hotfixes in real time
Adoption, errors, and load — device by device, as each hotfix lands.
Progressive rollouts
Staged rollouts over the air: ship to canary, then beta, then everyone — or A/B a variant to a slice and promote the winner.
Run from your laptop or CI
Run it by hand for a hotfix — or let every merge to main ship a patch automatically.
Move fast and fix things
Start free. Pay as you grow.
Unlimited updates on every plan — hotfix as much as you want.
- Unlimited OTA updates
- Instant rollback
- CLI + CI/CD
- Ship-safety checks
- Individual workspace — one member
- Everything in Hobby
- Phased rollouts
- Channels — canary, beta, production
- A/B testing
- Invite your team — unlimited members
- Everything in Startup
- SSO, priority support & SLA
- Audit logs & activity feed
- Dedicated onboarding
Questions, answered.
Yes — 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, doesn't create a storefront for other code, and doesn't bypass the OS sandbox or code signing. Patch does none of those: your signed App Store binary never changes — only the interpreted WebAssembly layer updates. This is the exact same provision Expo / EAS Update and CodePush have relied on for nearly a decade, across tens of thousands of live App Store apps. Patch simply brings that proven, Apple-sanctioned model to native Swift. Keep your updates within the same purpose your app was approved for and you're squarely inside the rules.
No — the overhead is negligible. Your patched code runs in the WasmKit runtime at near-native speed, and for the kind of code Patch ships — business logic, validation, pricing, networking glue, 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 only checks for updates in the background. And anything genuinely performance-critical — low-level rendering, heavy compute, tight loops — automatically stays native, so your hot paths are always compiled machine code. Modules are tiny (tens of KB) and updates ship as compressed binary diffs, so download and memory cost are trivial too.
Not at all. You keep writing native Swift exactly as you do today. Run patchcli init once — it registers your app, adds the Swift package, and inserts the two-line startup code for you — and that's the whole integration. No JS bridge, no React Native.
Far more than logic. Swift concurrency (async/await) runs in WASM, and Patch has coverage for SwiftUI views — up to 98.5% of SwiftUI view elements (structure, state, and interaction). Pricing logic, validation, business rules, networking glue, feature flags, routing, and your view code can ship over the air. The few things that touch raw OS APIs (HealthKit, cameras) stay in your App Store binary; Patch detects the split automatically and only ships what's safe.
Roll the whole fleet back to any previous version in under a minute — no resubmission. Patch also has a fallback chain: if a module is missing or corrupt, users automatically run the bundled version in the App Store binary.
Updates apply on next launch and are cached on-device, so the app works completely offline. Patch runs on iOS 16+ and falls back gracefully to the original bundled version if a module is missing.
By the number of distinct devices that receive patch updates across all of your apps. Every plan includes unlimited updates and rollbacks — you only move up a tier as your device fleet grows.
Push your first fix today.
Install the CLI and ship a patch this afternoon.