@capgo/capacitor-updater
Ship instant over-the-air JavaScript, HTML, and CSS updates to Capacitor iOS and Android apps without app-store review.
Repository Health
Technical Analysis
@capgo/capacitor-updater is a Capacitor plugin that delivers live, over-the-air (OTA) updates to installed mobile apps. Instead of waiting days for app-store review, you push new JavaScript, HTML, and CSS bundles directly to users, letting you fix bugs, A/B test features, and control your release cadence in minutes.
It is the most-starred Capacitor plugin and the leading open-source alternative to Appflow, CodePush, and Capawesome. Updates support delta downloads (only changed files), cryptographic signing and encryption, channel-based environments, and automatic rollback to the last working bundle. You can use the hosted Capgo Cloud or self-host the backend for full control.
What You Get
- A native OTA update engine for both Android and iOS behind one TypeScript API
- Delta updates that download only the files that changed between bundles
- Automatic rollback that reverts to the last working bundle when an update fails to become ready
- Channels for managing dev/staging/production and targeting specific devices for QA
- End-to-end encryption and signing of update bundles
- A choice of Capgo Cloud, a self-hosted backend, or fully manual bundle management
Common Use Cases
- Shipping critical bug fixes to production apps without waiting for app-store review
- A/B testing UI or feature changes by pushing different bundles to different channels
- Maintaining a controlled, self-hosted release pipeline for regulated or air-gapped deployments
- Rolling back a bad release instantly to keep users on a stable version
Under The Hood
Architecture - The plugin splits into a thin TypeScript layer (src/definitions.ts, src/index.ts, src/web.ts) that defines the public API and configuration surface, and native implementations under android/ (Java) and ios/ (Swift) that do the real work: fetching a bundle manifest, downloading changed files (delta), verifying signatures, unpacking to local storage, and pointing Capacitor’s webview at the new bundle path on the next reload. An app-ready handshake with a configurable timeout is what enables automatic rollback — if the JS never signals readiness, the engine reverts. Tech Stack - TypeScript API compiled with Rollup, distributed on both npm and JSR; native code in Java and Swift with a Package.swift/podspec for iOS and a Gradle module for Android. Its only peer dependency is @capacitor/core. Code Quality - Extensive native contract tests (native-contract-tests/), Maestro end-to-end tests, an example app, SonarCloud quality gates, ESLint/Prettier/SwiftLint, and Renovate-managed dependencies indicate a mature, heavily-CI’d project. API Design - The public API mirrors Capacitor plugin conventions with promise-based methods (download, set, reset, current, notifyAppReady, setChannel) and rich configuration via capacitor.config, plus generated api.md docs, making integration straightforward for existing Capacitor developers.