Skip to content

Update Types

Capgo supports several types of over-the-air (OTA) updates. This page lists and explains all of them so you can choose the right combination for your app.

Controls when an update is applied after it is downloaded.

TypeDescriptionUse Case
autoUpdate: atBackgroundDownload in background, apply when user backgrounds or kills the appMost apps; minimal disruption
autoUpdate: atInstallApply immediately only on fresh install or app store updateNew users get latest; existing users use default flow
autoUpdate: onLaunchApply immediately on install, store update, or after app killBalance between freshness and session stability
autoUpdate: alwaysApply immediately whenever an update is downloaded (including on resume)Critical fixes, apps with simple state
autoUpdate: onlyDownloadDownload automatically and emit updateAvailable, but never apply or set the next bundle automaticallyApps that show their own update prompt or control exactly when to call set()

Configure in capacitor.config.ts:

plugins: {
CapacitorUpdater: {
autoUpdate: 'atBackground', // default; true is still accepted
// or: 'off' | 'atInstall' | 'onLaunch' | 'always' | 'onlyDownload'
}
}

Conditions that must be met before an update is installed. Use setMultiDelay to combine them (all conditions must be satisfied).

ConditionDescriptionExample
dateWait until after a specific date/timeCoordinate with server-side release
backgroundWait a minimum duration (ms) after app is backgroundedAvoid applying during quick app switches
nativeVersionRequire a minimum native binary versionBlock updates on incompatible native code
killWait until the next app kill eventApply only on full restart
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setMultiDelay({
delayConditions: [
{ kind: 'date', value: '2023-06-01T00:00:00.000Z' },
{ kind: 'background', value: '60000' },
],
});

Controls which semver updates a channel will auto-deliver. Set via --disable-auto-update on channels.

StrategyBlocksAllowsUse Case
noneNothingAll updatesDefault; full auto-update
major0.0.0 → 1.0.0Same major (e.g. 1.x → 1.y)Prevent breaking changes from reaching old native
minor0.0.0 → 1.1.0, 1.1.0 → 1.2.0Same minor (e.g. 1.2.x → 1.2.y)Stricter control within major
patchAny change except patch bumpOnly 0.0.311 → 0.0.314Very strict; patch-only updates
metadataUpdates without min_update_versionUpdates with explicit compatibility metadataCustom compatibility rules per bundle
Terminal window
npx @capgo/cli channel set production --disable-auto-update major

How the bundle is transferred to the device.

TypeDescriptionWhen to Use
Full bundleEntire JS bundle is downloadedFirst install, large changes, or when delta is unavailable
Delta (manifest)Only changed files are downloadedMost updates; faster and bandwidth-friendly
Terminal window
# Full bundle (default)
npx @capgo/cli bundle upload --channel production
# Delta updates
npx @capgo/cli bundle upload --channel production --delta
CategoryTypes
Apply timingoff, atBackground, atInstall, onLaunch, always, onlyDownload
Delay conditionsdate, background, nativeVersion, kill
Version blockingnone, major, minor, patch, metadata
DeliveryFull bundle, Delta (manifest)

If you are using Update Types to plan live update delivery, connect it with Capgo Live Updates for the product workflow in Capgo Live Updates, Overview for the implementation detail in Overview, Features for the implementation detail in Features, Update Behavior for the implementation detail in Update Behavior, and Getting Started for the implementation detail in Getting Started.