Migrate from Capawesome Cloud to Capgo
Questo contenuto non ĆØ ancora disponibile nella tua lingua.
ā”ļø Capgo automates channels, bundle cleanup, rollbacks, analytics, and CLI uploads natively. Use this guide to perform the minimal steps required to migrate and optionally recreate any custom behaviour you still need.
Overview
- Gather your existing Capawesome Cloud configuration (App ID, channels, signing keys, CLI tokens) so you can archive or audit it later.
- Install the Capgo plugin, remove the Capawesome SDK, and call
CapacitorUpdater.notifyAppReady()
. - Configure optional behaviour (manual downloads, pinning bundles, reloads) if you rely on those flows today.
With Capgo you only need to install our plugin and call CapacitorUpdater.notifyAppReady()
. Everything elseāchannels, bundle cleanup, rollbacks, analytics, and CLI automationāis handled natively. The sections below walk through each task directly.
Before you start
- Make sure your project is already using CapacitorĀ 5 or later.
- Install the Capgo CLI (
npm install -g @capgo/cli
) if you plan to push bundles from CI/CD.
StepĀ 1Ā ā Install Capgo and remove the Capawesome SDK
npm uninstall @capawesome/capacitor-live-updatenpm install @capgo/capacitor-updaternpx cap sync
That is the only mandatory swap. Capgoās native code ships with the plugin; no extra JavaScript helpers are required.
StepĀ 2Ā ā Minimal configuration
The previous setup required mapping dozens of options in capacitor.config
. Capgo recognises your project automatically, so the minimal configuration looks like this:
import { CapacitorConfig } from '@capacitor/cli'
const config: CapacitorConfig = { plugins: { CapacitorUpdater: { autoUpdate: true, autoDeletePrevious: true, periodCheckDelay: 10 * 60 * 1000, // optional: check every 10 minutes }, },}
export default config
Everything Capawesome lists as manual flags (defaultChannel
, autoDeleteBundles
, retention policies, etc.) is managed through the Capgo dashboard or API. You only need to override these keys if you want behaviour that differs from Capgoās defaults.
Configuration quick reference
Capawesome option | Capgo equivalent | Do you need to set it? |
---|---|---|
appId | Taken from the Capgo dashboard once you create a project | Only if you use multiple projects in one binary |
defaultChannel | Channel rules managed in the dashboard/API | Optional; most teams set this server-side |
autoDeleteBundles | autoDeletePrevious: true (default) | Already enabled |
publicKey | Managed in Capgo console | Only if you rotate keys manually |
maxVersions / retention | Bundle retention policy | Configured centrally in Capgo (1Ā month default, 24Ā months max) |
StepĀ 3Ā ā Call notifyAppReady()
(the only required hook)
The old workflow introduced custom listeners (checkForUpdates()
, retryDownload()
, hiding the splash screen, etc.). Capgo performs those steps natively. The only API you must call is:
import { CapacitorUpdater } from '@capgo/capacitor-updater'
CapacitorUpdater.notifyAppReady()
This confirms the app booted successfully. If the confirmation never arrives, Capgo automatically rolls back the bundleāno extra JavaScript needed.
Thatās itāCapgo handles background checks, splash visibility, and rollbacks natively.
Optional: run custom logic before the splash screen hides
import { CapacitorUpdater } from '@capgo/capacitor-updater'import { SplashScreen } from '@capacitor/splash-screen'
CapacitorUpdater.addListener('appReady', () => { // Run diagnostics or logging if you need to SplashScreen.hide()})
CapacitorUpdater.notifyAppReady()
StepĀ 4Ā ā Map API calls (mostly optional)
In Capgo you normally let the auto-updater run; manual APIs remain available if you want full control.
Capawesome Cloud | Capgo equivalent | Do you need it? |
---|---|---|
LiveUpdate.fetchLatestBundle() | CapacitorUpdater.getLatest() | Only when implementing your own download workflow |
LiveUpdate.downloadBundle() | CapacitorUpdater.download() | Optional: native auto-update already downloads |
LiveUpdate.setNextBundle() | CapacitorUpdater.next() | Optional: dashboard pins bundles automatically |
LiveUpdate.reload() | CapacitorUpdater.reload() | Optional; Capgo enforces mandatory bundles after notifyAppReady() |
LiveUpdate.getCurrentBundle() | CapacitorUpdater.current() | Optional diagnostics |
If you stick with the native auto-update behaviour you can delete the Capawesome JavaScript entirely.
Manual control examples
Download the latest bundle
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const downloadUpdate = async () => { const latest = await CapacitorUpdater.getLatest() if (latest?.url) { const bundle = await CapacitorUpdater.download({ url: latest.url, version: latest.version, }) console.log('Bundle downloaded', bundle?.id) }}
import { LiveUpdate } from '@capawesome/capacitor-live-update'
const downloadUpdate = async () => { const result = await LiveUpdate.fetchLatestBundle() if (result.downloadUrl) { await LiveUpdate.downloadBundle({ bundleId: result.bundleId, url: result.downloadUrl, }) console.log('Bundle downloaded') }}
Set the next bundle
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const setNextBundle = async () => { await CapacitorUpdater.next({ id: 'bundle-id-123' })}
import { LiveUpdate } from '@capawesome/capacitor-live-update'
const setNextBundle = async () => { await LiveUpdate.setNextBundle({ bundleId: 'bundle-id-123' })}
Apply the downloaded bundle immediately
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const applyUpdate = async () => { await CapacitorUpdater.reload()}
import { LiveUpdate } from '@capawesome/capacitor-live-update'
const applyUpdate = async () => { await LiveUpdate.reload()}
StepĀ 5Ā ā Update strategies: how Capgo handles them
Capawesome documents three strategies. Hereās how they translate:
Background updates
- Previous workflow: configure in code and schedule downloads manually.
- Capgo: enabled by default (
autoUpdate: true
). No additional code required.
Always latest
- Previous workflow: add an
App.resume
listener, calldownload
, thenset
. - Capgo: background auto-update already performs the check after resume. You only need the manual listener if you want a custom interval.
Optional: manual resume check
import { App } from '@capacitor/app'import { CapacitorUpdater } from '@capgo/capacitor-updater'
App.addListener('resume', async () => { const latest = await CapacitorUpdater.getLatest() if (latest?.url) { const downloaded = await CapacitorUpdater.download({ url: latest.url, version: latest.version, }) if (downloaded) { await CapacitorUpdater.next({ id: downloaded.id }) } }})
Force update
- Previous workflow: wire prompt logic and enforce reload.
- Capgo: mark the bundle as āmandatoryā in the dashboard. The SDK enforces it automatically after
notifyAppReady()
.
StepĀ 6Ā ā Deploying bundles
If you previously relied on capawesome live-update deploy
, Capgo offers a similar CLI workflow, and you can also automate deployments entirely via API.
# Authenticate once (stores a token in your CI environment)capgo login
# Upload a new bundle (auto-detects platform/version)capgo bundle upload --path dist --channel production
Because Capgo tracks bundle health automatically, you also get:
- Device-level audit logs for every install.
- Automatic retention (one month by default) with configurable limits up to 24Ā months.
- Real-time latency metrics at status.capgo.app/history.
Migration timeline
- Inventory & install: 10Ā minutes (
npm install
, remove old plugin). - Config & readiness: 5Ā minutes (
notifyAppReady
). - Sanity checks: 15Ā minutes (optional manual tests or listeners).
- First deployment: 10Ā minutes with Capgo CLI or CI integration.
In practice teams finish in under an hour. If you provide Capawesome project details we can even import channels and device lists for you.
Capgo support
- Migration concierge: book a session at cal.com/team/capgo/demo.
- Community: join the Capgo Discord.
- Issue tracker: github.com/Cap-go/capacitor-updater/issues.
Capgo is built for long-term reliability: native delta updates, encrypted bundles, automatic rollbacks, and analytics that do not require custom JavaScript. Once you migrate you can delete the maintenance-heavy glue and let the platform run updates automatically.