Skip to content

Migrate from AppFlow to Capgo

🚦 Ionic announced that AppFlow’s commercial products—including Live Updates—are winding down. Existing projects can run until 31 December 2027, but no new customers are accepted and no new features are planned. This guide walks you through the actions required to migrate to Capgo and highlights the native automation you gain.

Migration overview

Capgo handles channels, bundle retention, rollbacks, analytics, and CLI uploads for you. Migration boils down to installing the plugin, calling CapacitorUpdater.notifyAppReady(), and—if desired—configuring optional manual controls. The sections below walk through each task directly.

Step 0 – Capture your current AppFlow setup

  • Note your AppFlow App ID, existing channels, and signing keys.
  • Export any bundle history you want to archive.
  • If you are using GitHub Actions or another CI provider, keep those pipelines—they will keep working with Capgo.

Step 1 – Replace the AppFlow SDK with Capgo

Terminal window
npm uninstall @capacitor/live-updates
npm install @capgo/capacitor-updater
npx cap sync

That’s it. Capgo bundles the native code for both iOS and Android; no extra JavaScript helpers are required.

Step 2 – Minimal configuration (no manual fields)

The existing configuration block is extensive. Capgo auto-detects your project and channels, so the minimal configuration is:

capacitor.config.ts
import { CapacitorConfig } from '@capacitor/cli'
const config: CapacitorConfig = {
plugins: {
CapacitorUpdater: {
autoUpdate: true,
autoDeletePrevious: true,
},
},
}
export default config

Configuration quick reference

Ionic AppFlow settingCapgo equivalentDo you need to set it?
appIdManaged in the Capgo dashboardAutomatically supplied when you create the project
channel / defaultChannelChannel rules in the dashboard/APIOptional override; defaults come from the server
autoUpdateMethodautoUpdate: trueEnabled by default
maxVersionsRetention policyConfigured centrally (1 month default, 24 months max)
enabledNot requiredCapgo toggles availability per channel

Step 3 – Call notifyAppReady() (the only required hook)

In Ionic’s guide you wire sync, download, and reload, then hide the splash screen manually. Capgo performs those actions natively. You only need to confirm the app is ready:

import { CapacitorUpdater } from '@capgo/capacitor-updater'
CapacitorUpdater.notifyAppReady()

If the confirmation never arrives, Capgo rolls the bundle back automatically.

That’s it—Capgo handles the background checks, splash visibility, and rollbacks for you.

Optional: run logic before the splash screen hides
import { CapacitorUpdater } from '@capgo/capacitor-updater'
import { SplashScreen } from '@capacitor/splash-screen'
CapacitorUpdater.addListener('appReady', () => {
// Log diagnostics or run custom code if needed
SplashScreen.hide()
})
CapacitorUpdater.notifyAppReady()

Step 4 – Update strategies translated

AppFlow documents three strategies. Here is how they map to Capgo:

Background (default)

  • AppFlow: configure autoUpdateMethod = background, call sync() manually.
  • Capgo: enabled by default. No JavaScript required.

Always latest

  • AppFlow: add an App.addListener('resume') handler that downloads and reloads.
  • Capgo: auto-update runs on resume already. Add the handler only if you want a custom timing window.
Optional: manual resume check
import { App } from '@capacitor/app'
import { CapacitorUpdater } from '@capgo/capacitor-updater'
App.addListener('resume', async () => {
const bundle = await CapacitorUpdater.download()
if (bundle) {
await CapacitorUpdater.set({ id: bundle.id })
}
})

Force update

  • AppFlow: prompt the user and call reload().
  • Capgo: mark the bundle as “mandatory” in the dashboard. The SDK enforces it automatically after notifyAppReady().

Step 5 – Mapping API calls

AppFlow methodCapgo equivalentDo you need it?
LiveUpdates.sync()CapacitorUpdater.sync()Optional; native auto-update already syncs
LiveUpdates.download()CapacitorUpdater.download()Optional for custom flows
LiveUpdates.reload()CapacitorUpdater.set()Optional; dashboard toggles handle forced updates
LiveUpdates.getVersion()CapacitorUpdater.current()Optional diagnostics

Step 6 – Deploy using the Capgo CLI or API

Finish the migration by uploading bundles with the Capgo CLI or API. The workflow mirrors what you may have scripted before, but now includes native safeguards:

Terminal window
capgo login # authenticate once
capgo bundle upload \
--path dist \
--channel production # automatically tags platform/version

Capgo automatically:

  • Keeps device-level audit logs for every install.
  • Sends proactive emails when you approach plan limits.
  • Provides burst credits so you are never blocked mid-release.
  • Publishes latency metrics for 18 global regions at status.capgo.app/history.

Frequently asked questions

Why is AppFlow shutting down live updates?

Ionic is discontinuing commercial products, including AppFlow, to focus on their open-source framework. Existing customers can continue using live updates until 31 December 2027, but no new features or customers are accepted. Capgo fills that gap with a dedicated native OTA platform.

How long does migration take?

Most teams complete the move in under a day. Concepts such as channels, deployments, and release rules map directly, and our team provides documentation plus hands-on support. In many cases you simply install the plugin, call notifyAppReady(), and upload your first bundle.

Will we save money?

Yes. AppFlow live updates start at $499/mo. Capgo starts at $14/mo with usage-based pricing that drops to roughly $0.001 per MAU. You also gain encryption, automatic rollbacks, and worldwide latency monitoring.

When should we migrate?

Because AppFlow is now in maintenance mode, migrating sooner gives you access to ongoing Capgo innovation. We recommend switching when it fits your release schedule. Our engineering team will help you plan the changeover so your CI/CD and deployments keep running.

Need help?

Capgo is engineered for enterprises that need native delta updates, encrypted bundles, and continuous innovation. Once you migrate you can delete the AppFlow glue code, rely on native automation, and keep shipping without interruption.