Setup

This is the most simple, default hosted setup path.

1. Create your app in the dashboard

Sign in to the OtaKit dashboard, create an app, and copy its OtaKit appId.

2. Install the Capacitor plugin

npm install @otakit/capacitor-updater
npx cap sync

3. Configure the plugin

Add the OtaKit plugin to capacitor.config.ts and paste in the appId from the dashboard.

// capacitor.config.ts
import type { CapacitorConfig } from "@capacitor/cli";

const config: CapacitorConfig = {
  appId: "com.example.myapp",
  appName: "My App",
  webDir: "out",
  plugins: {
    OtaKit: {
      appId: "YOUR_OTAKIT_APP_ID",
      appReadyTimeout: 10000,
    }
  }
};

export default config;

4. Add notifyAppReady()

Call notifyAppReady() once your app has loaded. If the new bundle is activated and your app never confirms that it started successfully, OtaKit rolls back automatically.

import { OtaKit } from "@otakit/capacitor-updater";

await OtaKit.notifyAppReady();

For React-style apps, wrap it in a client-side effect:

"use client";
import { useEffect } from "react";
import { Capacitor } from "@capacitor/core";
import { OtaKit } from "@otakit/capacitor-updater";

export function AppReadyProvider() {
  useEffect(() => {
    if (Capacitor.isNativePlatform()) {
      OtaKit.notifyAppReady();
    }
  }, []);

  return null;
}

5. Install the CLI and sign in

npm install -g @otakit/cli
otakit login

6. Build and release

npm run build
otakit upload --release

That publishes the bundle to the base channel. By default, devices download it in the background and activate it on the next cold app launch.

Next, continue with the Next.js guide or the React guide if you want a full walkthrough. Use the Plugin API and CLI reference for advanced flows and exact command details.