---
description: Learn how to use the new Capacitor Live Update plugin to deliver real-time updates to your app without resubmitting to app stores.
title: Announcing the Live Update Plugin for Capacitor - Capawesome
image: https://capawesome.io/docs/assets/images/social/blog/announcing-the-capacitor-live-update-plugin.png
---

[ Skip to content](#announcing-the-capacitor-live-update-plugin) 

[ 🎉 Introducing **Capawesome Platform** — one platform for Live Updates, Native Builds, App Store Publishing, and Insider SDKs.](https://capawesome.io) 

* [  Formbricks ](/docs/plugins/formbricks/)
* [  Geocoder ](/docs/plugins/geocoder/)
* [  Google Sign-In ](/docs/plugins/google-sign-in/)
* [  libSQL ](/docs/plugins/libsql/)
* [  Live Update ](/docs/plugins/live-update/)
* [  Managed Configurations ](/docs/plugins/managed-configurations/)
* [  Media Session ](/docs/plugins/media-session/)
* [  ML Kit ](/docs/plugins/mlkit/)
* [  NFC ](/docs/plugins/nfc/)
* [  OAuth ](/docs/plugins/oauth/)
* [  Pedometer ](/docs/plugins/pedometer/)
* [  Photo Editor ](/docs/plugins/photo-editor/)
* [  PostHog ](/docs/plugins/posthog/)
* [  Printer ](/docs/plugins/printer/)
* [  Purchases ](/docs/plugins/purchases/)
* [  RealtimeKit ](/docs/plugins/realtimekit/)
* [  Screen Orientation ](/docs/plugins/screen-orientation/)
* [  Screenshot ](/docs/plugins/screenshot/)
* [  Secure Preferences ](/docs/plugins/secure-preferences/)
* [  Speech Recognition ](/docs/plugins/speech-recognition/)
* [  Speech Synthesis ](/docs/plugins/speech-synthesis/)
* [  Share Target ](/docs/plugins/share-target/)
* [  Square Mobile Payments ](/docs/plugins/square-mobile-payments/)
* [  SQLite ](/docs/plugins/sqlite/)
* [  Superwall ](/docs/plugins/superwall/)
* [  Torch ](/docs/plugins/torch/)
* [  Wifi ](/docs/plugins/wifi/)
* [  Zip ](/docs/plugins/zip/)
* [  Cloud ](/docs/cloud/)
* [  Live Updates ](/docs/cloud/live-updates/)
* Advanced
* Integrations
* [  Native Builds ](/docs/cloud/native-builds/)
* [  Configuration ](/docs/cloud/native-builds/configuration/)
* [  Environments ](/docs/cloud/native-builds/environments/)
* Guides
* [  Sample Projects ](/docs/cloud/native-builds/sample-projects/)
* [  Troubleshooting ](/docs/cloud/native-builds/troubleshooting/)
* [  Automations ](/docs/cloud/automations/)
* Account
* Organizations
* [  Organization and User Management ](/docs/cloud/organizations/memberships/)
* [  Single Sign-On (SSO) ](/docs/cloud/organizations/sso/)
* [  Teams ](/docs/cloud/organizations/teams/)
* [  Two-Factor Authentication ](/docs/cloud/organizations/two-factor-authentication/)
* [  Integrations ](/docs/cloud/integrations/)
* [  License Keys ](/docs/cloud/license-keys/)
* [  Webhooks ](/docs/cloud/webhooks/)
* [  Pricing ](https://capawesome.io/pricing/)
* [  FAQ ](/docs/cloud/faq/)
* [  Support ](/docs/cloud/support/)
* [  Contributing ](/docs/contributing/)
* [  LLMs ](/docs/llms/)
* [  Insiders ](/docs/insiders/)
* [  License ](https://capawesome.io/legal/eula/)
* [  Support ](/docs/insiders/support/)
* [  FAQ ](/docs/insiders/faq/)
* [  Blog ](/blog/)
* Categories

* [  Testing ](#testing)
* [  Closing Thoughts ](#closing-thoughts)

* Related links

# Announcing the Capacitor Live Update Plugin[¶](#announcing-the-capacitor-live-update-plugin "Permanent link")

One of the biggest advantages of Capacitor over other runtimes is the ability to deliver updates in real-time without having to resubmit your app to the app stores, so-called Over-the-Air (OTA) updates. For this reason, we are very excited to introduce you today to our brand new [Capacitor Live Update](/docs/plugins/live-update/) plugin. In this blog post, you will learn everything about the new plugin and how you can implement it in your Capacitor app.

Deprecated 

This guide is deprecated. Please refer to the [Getting Started](/docs/cloud/live-updates/setup/) guide for the most up-to-date instructions and best practices.

## How it works[¶](#how-it-works "Permanent link")

Live updates are a powerful feature that allows you to deliver small bug fixes and updates to your Capacitor app in real-time. For this, it is important to understand the different layers of a Capacitor app and how they interact with each other.

![Layers](/docs/assets/images/diagrams/live-update-layers-light.png#only-light) ![Layers](/docs/assets/images/diagrams/live-update-layers-dark.png#only-dark) 

Capacitor App Layers

As you can see in the image above, a Capacitor app basically consists of a web layer and a native layer. The web layer consists of the HTML, CSS, and JavaScript files that are loaded into the web view. The native layer consists of the native code that is compiled into the app.

Limitation

Live updates only allow you to update the web layer of your app.

So as long as you only make changes to your web application, you can deploy live updates without having to resubmit your app to the app stores. As soon as you make a change to the native code, such as adding a plugin, you must resubmit your app to the app stores.

## Installation[¶](#installation "Permanent link")

First you need to install the package and sync your Capacitor project:

`[](#%5F%5Fcodelineno-0-1)npm install @capawesome/capacitor-live-update
[](#%5F%5Fcodelineno-0-2)npx cap sync
`

## Usage[¶](#usage "Permanent link")

To distribute live updates to your users, we recommend using [Capawesome Cloud](/docs/cloud/live-updates/). Capawesome Cloud provides a complete solution for managing and distributing your bundles with advanced features like [Channels](/docs/cloud/live-updates/channels/), [Rollouts](/docs/cloud/live-updates/advanced/rollouts/), and [Analytics](/docs/cloud/).

### Getting Started with Capawesome Cloud[¶](#getting-started-with-capawesome-cloud "Permanent link")

Getting Started Guide 

For the most up-to-date instructions and best practices, check out our comprehensive [Getting Started guide](/docs/cloud/live-updates/setup/). It includes the latest features like automatic update strategies and streamlined setup steps.

To get started, you need to create an account on the [Capawesome Cloud Console](https://console.cloud.capawesome.io).

After you have created an account, we recommend that you install the [Capawesome CLI](/docs/cloud/cli/) to manage your apps and bundles from the command line.

`[](#%5F%5Fcodelineno-1-1)npm install -g @capawesome/cli
`

First, you need to log in to Capawesome Cloud:

`[](#%5F%5Fcodelineno-2-1)npx @capawesome/cli login
`

Then you can create a new app:

`[](#%5F%5Fcodelineno-3-1)npx @capawesome/cli apps:create --name "My App"
`

After you have created an app, you need to configure the [Capacitor Live Update](/docs/plugins/live-update/#configuration) plugin. To do this, simply add the ID of the app you have just created to the Capacitor configuration file:

capacitor.config.json

`[](#%5F%5Fcodelineno-4-1){
[](#%5F%5Fcodelineno-4-2)  "plugins": {
[](#%5F%5Fcodelineno-4-3)    "LiveUpdate": {
[](#%5F%5Fcodelineno-4-4)      "appId": "00000000-0000-0000-0000-000000000000"
[](#%5F%5Fcodelineno-4-5)    }
[](#%5F%5Fcodelineno-4-6)  }
[](#%5F%5Fcodelineno-4-7)}
`

Sync your Capacitor project to apply the changes:

`[](#%5F%5Fcodelineno-5-1)npx cap sync
`

Next, you can upload a new bundle to the Capawesome Cloud. For this, you simply need to specify the path to the bundle (e.g. `www` or `dist`) and the ID of the app (see previous step):

`[](#%5F%5Fcodelineno-6-1)npx @capawesome/cli apps:liveupdates:upload --app-id <app-id> --path www
`

Upload to a channel 

We recommend that you also specify a [Channel](/docs/cloud/live-updates/channels/) when uploading the bundle:

`[](#%5F%5Fcodelineno-7-1)npx @capawesome/cli apps:liveupdates:upload --app-id <app-id> --path www --channel production-1.0.0
`

This way you can easily [restrict live updates to native versions](/blog/how-to-restrict-capacitor-live-updates-to-native-versions/) of your app and prevent incompatible updates.

The Capawesome CLI then automatically creates a zip archive of the bundle and uploads it to the Capawesome Cloud where it becomes immediately available for download.

All that's left to do is to call the [sync()](/docs/plugins/live-update/#sync) method in your app to check for new updates and apply them if necessary.

`[](#%5F%5Fcodelineno-8-1)import { LiveUpdate } from '@capawesome/capacitor-live-update';
[](#%5F%5Fcodelineno-8-2)
[](#%5F%5Fcodelineno-8-3)const sync = async () => {
[](#%5F%5Fcodelineno-8-4)    const result = await LiveUpdate.sync();
[](#%5F%5Fcodelineno-8-5)    if (result.nextBundleId) {
[](#%5F%5Fcodelineno-8-6)        await LiveUpdate.reload();
[](#%5F%5Fcodelineno-8-7)    }
[](#%5F%5Fcodelineno-8-8)};
`

The new bundle becomes available only after restarting the app. Therefore, if you want to apply the new bundle immediately, you should call the [reload()](/docs/plugins/live-update/#reload) method to reload the web view.

Again, make sure to call the [ready()](/docs/plugins/live-update/#ready) method as soon as the the app is ready to prevent a rollback:

`[](#%5F%5Fcodelineno-9-1)import { LiveUpdate } from '@capawesome/capacitor-live-update';
[](#%5F%5Fcodelineno-9-2)
[](#%5F%5Fcodelineno-9-3)const ready = async () => {
[](#%5F%5Fcodelineno-9-4)    await LiveUpdate.ready();
[](#%5F%5Fcodelineno-9-5)};
`

## Testing[¶](#testing "Permanent link")

When testing the plugin, you must make sure that you do not use the [Live Reload](https://ionicframework.com/docs/cli/livereload) option, as in this case a development server is used to load the bundle.

Therefore, simply start your app without the live reload option, for example with the following command:

`[](#%5F%5Fcodelineno-10-1)npx cap run android
`

As soon as you have installed a live update, the app will use the live update bundle and no longer the default bundle. So if you make local changes to your app and execute `npx cap run`, for example, these changes will apply to the default bundle, which is not currently in use. You then have three options to get back to the default bundle:

1. **Reset**: Call the [reset()](#reset) method to reset the app to the default bundle.
2. **Reinstall**: Reinstall the app to use the default bundle.
3. **Update**: Increase the `versionCode`/`CFBundleVersion` so that the plugin automatically performs a reset.

However, this is only a problem during development. It is not a problem in production, as the `versionCode`/`CFBundleVersion` is always incremented during a native update and the plugin automatically resets to the default bundle.

## Closing Thoughts[¶](#closing-thoughts "Permanent link")

We hope you are as excited as we are about the new [Capacitor Live Update](/docs/plugins/live-update/) plugin. We are already working on new features and improvements, such as automatic update modes and partial updates. Be sure to check out the [API Reference](/docs/plugins/live-update/#api) to see what else you can do with this plugin. If you have any questions, just [create a discussion](https://github.com/capawesome-team/capacitor-plugins/discussions/new/choose) in the [GitHub repository](https://github.com/capawesome-team/capacitor-plugins). Make sure you follow us on [X](https://twitter.com/capawesomeio) so you don't miss any future updates.

March 18, 2026 

 Back to top 