Live updates for Ionic apps with Capacitor and OtaKit
Ionic apps run on Capacitor, so they can update over the air. How to add live updates to an Ionic Angular, React, or Vue app with OtaKit — the affordable Appflow Live Updates alternative.
Ionic apps run on Capacitor, which means they can update over the air — ship a bug fix or a new screen straight to installed devices without a store review. Ionic's own answer is Appflow Live Updates, but it's bundled into a broader paid platform. If you just want live updates for your Ionic app, OtaKit does exactly that, for a fraction of the cost.
This guide adds live updates to an Ionic app — Angular, React, or Vue — with OtaKit.
Mental model: your Ionic app is already a Capacitor app. Adding OtaKit is a plugin install plus one CLI command, not a migration.
Confirm your Capacitor setup
Modern Ionic projects already use Capacitor. Check that you have the native platforms and know your web output directory — it's www for Ionic Angular and dist for Ionic React/Vue:
ionic build # produces www/ (Angular) or dist/ (React/Vue) npx cap sync
If you're still on Cordova, migrate to Capacitor first — it's the supported path and unlocks the modern plugin ecosystem.
Install OtaKit
npm install @otakit/capacitor-updater npx cap sync
// capacitor.config.ts
import type { CapacitorConfig } from "@capacitor/cli";
const config: CapacitorConfig = {
appId: "com.example.myapp",
appName: "My App",
webDir: "www", // or "dist" for Ionic React/Vue
plugins: {
OtaKit: { appId: "YOUR_OTAKIT_APP_ID" },
},
};
export default config;Signal a successful boot
Call notifyAppReady() once your app has loaded so OtaKit can roll back a broken release automatically. In Ionic Angular:
import { Component } from "@angular/core";
import { Capacitor } from "@capacitor/core";
import { OtaKit } from "@otakit/capacitor-updater";
@Component({ selector: "app-root", templateUrl: "app.component.html" })
export class AppComponent {
constructor() {
if (Capacitor.isNativePlatform()) OtaKit.notifyAppReady();
}
}In Ionic React or Vue, place the same call in your root component's mount effect.
Release your first live update
npm install -g @otakit/cli otakit login ionic build otakit upload --release
Publish the app to the stores once with the plugin configured. After that, every otakit upload --release reaches installed devices on their next launch. Bundles are signed, hash-verified, CDN-delivered, and optionally end-to-end encrypted — with no monthly-active-user or bandwidth metering.
Why teams move off Appflow for this
- Pricing. Appflow is a platform subscription; OtaKit doesn't meter MAUs or bandwidth, so most apps pay $0–25/mo.
- No lock-in. OtaKit's stack is open source and self-hostable.
- Same capability. Signed, rollback-safe live updates with channels and runtime versions.
Comparing options directly? See the best Appflow alternative and Capacitor + OtaKit vs Appflow.
Where to go next
Read staged rollouts to ship safely, and how OTA works for the full delivery model.