Introduction
OtaKit ships over-the-air updates for Capacitor apps. You build your web app, upload a bundle, and the plugin delivers that bundle to devices without waiting for a store review.
How it works
- Create an app in the OtaKit dashboard and copy its
appIdinto yourcapacitor.config.tsfile. - Call
notifyAppReady()when your app finishes loading, so newly activated updates can be confirmed healthy. - Build your web app and run
otakit upload --releaseto upload and publish a new bundle. - On device, the plugin checks for updates, verifies the downloaded bundle, and by default activates it on the next cold launch.
Features
One-command shipping
Build your web app, then release with otakit upload --release.
Channels & staged rollouts
Ship on the base channel by default, then add named channels when you need separate rollout tracks.
Automatic update delivery
The normal flow downloads updates in the background and activates them on the next cold launch.
Manual update control
Switch to manual mode when your app wants to show its own update prompt or control install timing.
Safe activation & rollback
A newly activated bundle must call notifyAppReady() or OtaKit rolls back automatically.
SHA-256 verification
Downloaded bundles are verified before activation so corrupted or tampered files are rejected.
Organization access & API keys
Manage apps, members, and scoped keys inside an organization.
Self-hosting
Run OtaKit on your own infrastructure when you need full control over delivery and trust.
Getting started
Setup
Connect the default hosted OtaKit flow to your Capacitor app.
Next.js Guide
Go from Next.js + Capacitor to your first OTA update.
Channels
Stay on the base channel first, then add named channels only when needed.
CI Automation
Build and ship bundles from GitHub Actions.
CLI Reference
Commands, options, and release workflows.
Plugin API
Default automatic flow, manual flow, events, and configuration.
Need help with setup, billing, or rollout issues? Email support@otakit.app or use the contact page.