---
description: Choose the right OTA update strategy for your Capacitor or Cordova app — background, always-latest, force update, and instant update modes.
title: Live Update Strategies - Capawesome
image: https://capawesome.io/docs/assets/images/social/cloud/live-updates/update-strategies.png
---

[ Skip to content](#update-strategies) 

[ 🔐 Introducing the **Capacitor Vault** plugin — store secrets behind biometrics or a device passcode.](/blog/announcing-the-capacitor-vault-plugin/) 

* [  SDKs ](/docs/sdks/)
* [  Formbricks ](/docs/sdks/capacitor/formbricks/)
* [  Geocoder ](/docs/sdks/capacitor/geocoder/)
* [  Google Sign-In ](/docs/sdks/capacitor/google-sign-in/)
* [  Grafana Faro ](/docs/sdks/capacitor/grafana-faro/)
* [  libSQL ](/docs/sdks/capacitor/libsql/)
* [  Live Update ](/docs/sdks/capacitor/live-update/)
* [  Managed Configurations ](/docs/sdks/capacitor/managed-configurations/)
* [  Media Session ](/docs/sdks/capacitor/media-session/)
* [  ML Kit ](/docs/sdks/capacitor/mlkit/)
* [  Navigation Bar ](/docs/sdks/capacitor/navigation-bar/)
* [  NFC ](/docs/sdks/capacitor/nfc/)
* [  OAuth ](/docs/sdks/capacitor/oauth/)
* [  Pedometer ](/docs/sdks/capacitor/pedometer/)
* [  Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [  PostHog ](/docs/sdks/capacitor/posthog/)
* [  Printer ](/docs/sdks/capacitor/printer/)
* [  Purchases ](/docs/sdks/capacitor/purchases/)
* [  RealtimeKit ](/docs/sdks/capacitor/realtimekit/)
* [  Screen Orientation ](/docs/sdks/capacitor/screen-orientation/)
* [  Screenshot ](/docs/sdks/capacitor/screenshot/)
* [  Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [  Speech Recognition ](/docs/sdks/capacitor/speech-recognition/)
* [  Speech Synthesis ](/docs/sdks/capacitor/speech-synthesis/)
* [  Share Target ](/docs/sdks/capacitor/share-target/)
* [  Square Mobile Payments ](/docs/sdks/capacitor/square-mobile-payments/)
* [  SQLite ](/docs/sdks/capacitor/sqlite/)
* [  Superwall ](/docs/sdks/capacitor/superwall/)
* [  Torch ](/docs/sdks/capacitor/torch/)
* [  Vault ](/docs/sdks/capacitor/vault/)
* [  Wifi ](/docs/sdks/capacitor/wifi/)
* [  Zip ](/docs/sdks/capacitor/zip/)
* [  Cordova ](/docs/sdks/cordova/)
* [  Cloud ](/docs/cloud/)
* [  Subscribe to a Channel ](/docs/cloud/live-updates/channel-subscription/)
* [  Download and Apply Updates ](/docs/cloud/live-updates/manual-updates/)
* [  Manage Channels ](/docs/cloud/live-updates/channels/)
* [  Sign Your Bundles ](/docs/cloud/live-updates/code-signing/)
* [  Reduce Update Size ](/docs/cloud/live-updates/bundle-size/)
* [  Self-Host Bundles ](/docs/cloud/live-updates/self-hosting/)
* [  Manage Devices ](/docs/cloud/live-updates/devices/)
* [  Integrations ](/docs/cloud/live-updates/integrations/)
* Concepts
* Reference
* [  Troubleshooting ](/docs/cloud/live-updates/troubleshooting/)
* [  FAQ ](/docs/cloud/live-updates/faq/)
* [  Native Builds ](/docs/cloud/native-builds/)
* [  Set Up Environments ](/docs/cloud/native-builds/environments/)
* [  Overwrite Native Configurations ](/docs/cloud/native-builds/native-configurations/)
* [  Auto-Increment Build Numbers ](/docs/cloud/native-builds/auto-incrementing-build-numbers/)
* [  Configure the Web Build Script ](/docs/cloud/native-builds/web-build-script/)
* [  Build from a Monorepo ](/docs/cloud/native-builds/monorepo/)
* [  Use pnpm or Yarn ](/docs/cloud/native-builds/package-managers/)
* [  Install Private npm Packages ](/docs/cloud/native-builds/npm-private-registry/)
* [  Override the Java Version ](/docs/cloud/native-builds/override-java-version/)
* [  Custom iOS Provisioning Profiles ](/docs/cloud/native-builds/custom-ios-provisioning-profiles/)
* [  Build without Git ](/docs/cloud/native-builds/build-without-git/)
* [  Access Git Behind a Firewall ](/docs/cloud/native-builds/firewall-access/)
* [  Integrations ](/docs/cloud/native-builds/integrations/)
* Reference
* [  Troubleshooting ](/docs/cloud/native-builds/troubleshooting/)
* [  FAQ ](/docs/cloud/native-builds/faq/)
* [  App Store Publishing ](/docs/cloud/app-store-publishing/)
* [  Submit a Build ](/docs/cloud/app-store-publishing/submit-a-build/)
* [  Submit Automatically After a Build ](/docs/cloud/app-store-publishing/submit-automatically/)
* [  Troubleshooting ](/docs/cloud/app-store-publishing/troubleshooting/)
* [  FAQ ](/docs/cloud/app-store-publishing/faq/)
* [  Automations ](/docs/cloud/automations/)
* [  Reference ](/docs/cloud/automations/reference/)
* [  Troubleshooting ](/docs/cloud/automations/troubleshooting/)
* [  FAQ ](/docs/cloud/automations/faq/)
* [  Assist ](/docs/cloud/assist/)
* [  CLI ](/docs/cloud/cli/)
* APIs and SDKs
* [  Webhooks ](/docs/cloud/webhooks/)
* [  Integrations ](/docs/cloud/integrations/)
* Account
* [  Organization ](/docs/cloud/organizations/)
* [  Two-Factor Enforcement ](/docs/cloud/organizations/two-factor-authentication/)
* [  Audit Logs ](/docs/cloud/organizations/audit-logs/)
* [  Billing ](/docs/cloud/organizations/billing/)
* [  License Keys ](/docs/cloud/license-keys/)
* [  AI ](/docs/ai/)
* [  Insiders ](/docs/insiders/)
* [  Billing & Plans ](/docs/insiders/billing-and-plans/)
* [  FAQ ](/docs/insiders/faq/)
* [  License ](https://capawesome.io/legal/eula/)
* [  Support ](/docs/support/)
* [  Contributing ](/docs/contributing/)
* Contributing code
* [  Code of Conduct ](/docs/contributing/code-of-conduct/)
* [  Questions ](https://docs.github.com/en/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion#creating-a-discussion)
* [  Blog ](/blog/)
* Categories

# Update Strategies[¶](#update-strategies "Permanent link")

An update _strategy_ decides **when** an update is downloaded, **when** it's applied, and **whether the user is involved**. The SDK supports four patterns, from "set it once and forget it" to "push an update on demand". Pick the default that fits your app.

## Background[¶](#background "Permanent link")

The simplest option, with no app-side code. Set the `autoUpdateStrategy` option to `background` in your configuration:

CapacitorCordova

capacitor.config.ts

`[](#%5F%5Fcodelineno-0-1)const config: CapacitorConfig = {
[](#%5F%5Fcodelineno-0-2)  plugins: {
[](#%5F%5Fcodelineno-0-3)    LiveUpdate: {
[](#%5F%5Fcodelineno-0-4)      autoUpdateStrategy: "background",
[](#%5F%5Fcodelineno-0-5)      autoBlockRolledBackBundles: true // recommended
[](#%5F%5Fcodelineno-0-6)    }
[](#%5F%5Fcodelineno-0-7)  }
[](#%5F%5Fcodelineno-0-8)};
`

config.xml

`[](#%5F%5Fcodelineno-1-1)<preference name="AUTO_UPDATE_STRATEGY" value="background" />
[](#%5F%5Fcodelineno-1-2)<preference name="AUTO_BLOCK_ROLLED_BACK_BUNDLES" value="true" />
`

This checks for the latest bundle **at app start and on resume** (throttled to once every 15 minutes), downloads it in the background, and applies it on the next launch — no code required. It's the easiest way to keep users up to date.

## Always Latest (recommended)[¶](#always-latest-recommended "Permanent link")

Get the background strategy's silent download, but prompt the user to apply the update as soon as it's ready instead of waiting for the next cold start. Keep `autoUpdateStrategy` set to `background` and listen for the `nextBundleSet` event:

CapacitorCordova

`[](#%5F%5Fcodelineno-2-1)import { LiveUpdate } from "@capawesome/capacitor-live-update";
[](#%5F%5Fcodelineno-2-2)
[](#%5F%5Fcodelineno-2-3)LiveUpdate.addListener("nextBundleSet", async ({ bundleId }) => {
[](#%5F%5Fcodelineno-2-4)  if (!bundleId) return;
[](#%5F%5Fcodelineno-2-5)  if (confirm("A new version is available. Install it now?")) {
[](#%5F%5Fcodelineno-2-6)    await LiveUpdate.reload();
[](#%5F%5Fcodelineno-2-7)  }
[](#%5F%5Fcodelineno-2-8)});
`

`[](#%5F%5Fcodelineno-3-1)cordova.plugins.LiveUpdate.addListener("nextBundleSet", async ({ bundleId }) => {
[](#%5F%5Fcodelineno-3-2)  if (!bundleId) return;
[](#%5F%5Fcodelineno-3-3)  if (confirm("A new version is available. Install it now?")) {
[](#%5F%5Fcodelineno-3-4)    await cordova.plugins.LiveUpdate.reload();
[](#%5F%5Fcodelineno-3-5)  }
[](#%5F%5Fcodelineno-3-6)});
`

The download happens in the background, so the prompt only appears once the bundle is fully on disk — there's no waiting when the user taps "install".

## Force Update[¶](#force-update "Permanent link")

The "users must be on the latest version before they can use the app" strategy. Keep the splash screen visible while the update check runs, then `sync()` on app start and either `reload()` (if there's an update) or hide the splash:

CapacitorCordova

`[](#%5F%5Fcodelineno-4-1)import { SplashScreen } from "@capacitor/splash-screen";
[](#%5F%5Fcodelineno-4-2)import { LiveUpdate } from "@capawesome/capacitor-live-update";
[](#%5F%5Fcodelineno-4-3)
[](#%5F%5Fcodelineno-4-4)const { nextBundleId } = await LiveUpdate.sync();
[](#%5F%5Fcodelineno-4-5)if (nextBundleId) {
[](#%5F%5Fcodelineno-4-6)  await LiveUpdate.reload();
[](#%5F%5Fcodelineno-4-7)} else {
[](#%5F%5Fcodelineno-4-8)  await SplashScreen.hide();
[](#%5F%5Fcodelineno-4-9)}
`

Disable the splash screen's auto-hide via `SplashScreen: { launchAutoHide: false }` in your config.

`[](#%5F%5Fcodelineno-5-1)const { nextBundleId } = await cordova.plugins.LiveUpdate.sync();
[](#%5F%5Fcodelineno-5-2)if (nextBundleId) {
[](#%5F%5Fcodelineno-5-3)  await cordova.plugins.LiveUpdate.reload();
[](#%5F%5Fcodelineno-5-4)} else {
[](#%5F%5Fcodelineno-5-5)  navigator.splashscreen.hide();
[](#%5F%5Fcodelineno-5-6)}
`

Keep the splash screen visible with `AutoHideSplashScreen=false` in your `config.xml`.

This guarantees freshness, but every cold start on a slow connection makes the user wait while the bundle downloads. Reserve it for apps where running a stale version is genuinely unsafe. Set `autoUpdateStrategy` to `none` to avoid running two update mechanisms at once.

## Instant[¶](#instant "Permanent link")

For critical updates, trigger an update with a **silent push notification** that tells the app to check for an update _now_. When the silent notification arrives, call `sync()` and `reload()`. This requires push infrastructure (such as Firebase Cloud Messaging) and is meant as a break-glass tool, not an everyday flow. Set `autoUpdateStrategy` to `none`.

## Further reading[¶](#further-reading "Permanent link")

Want to combine Live Updates with native app store updates? See [Capacitor App Updates: The Complete Guide](/blog/capacitor-app-update-guide/).

June 8, 2026 

 Back to top 