Skip to main content
Production Updates

Get every user on the latest fix

Upload a new web bundle from the CLI or CI. Devices download it in the background and run it the next time the app comes back to the foreground. Roll it out by percentage, watch it in Observe, and roll back if it misbehaves.

No credit card required
Automatic rollback built in
Web-layer updates only

The Problem

A store release is a slow way to ship a small fix

The store-only fix path

1

Find the bug

Monitoring or support reports a broken screen. The fix is a few lines of JavaScript or CSS.

2

Build a new binary

You bump the version, build for iOS and Android, and prepare two store submissions.

3

Wait for review

Store review is often 24–48 hours, sometimes much longer. A rejection starts the wait again.

4

Wait for users to update

After approval, each user still has to install the new version. Until then, they run the old code.

Each step adds time between the fix being ready and the fix running on your users' devices.

Why store fixes reach users slowly

24–48h+

Typical store review time

Apple and Google review every new binary. Review is often 24–48 hours, sometimes much longer, and a rejection means resubmitting.

Per user

Store updates depend on each device

A store update reaches a device only when the user, or their auto-update setting, installs it. Some devices stay on old builds for a long time.

2 stores

Two submissions for every fix

The same web fix goes through the App Store and Google Play separately, each with its own review and release.

The Solution

How a live update reaches your users

This is Capgo's default update behavior. No update prompts, no forced restarts, and no store submission for web-layer changes.

Default update flow

  1. The app checks for updates

    When the app comes to the foreground, and every 10 minutes while it stays open, the updater asks Capgo for the channel's latest bundle.

    On foreground

  2. It downloads in the background

    The new bundle downloads while the user keeps using the current version. With delta updates, only changed files download.

    No interruption

  3. It switches on the next resume

    When the user leaves the app, the updater installs the bundle. The next time they open it, they run the new version.

    Next foreground

Need users to see the new version as soon as they open the app? Direct update modes apply it at launch while the splash screen is shown.

See direct updates

Update behavior docs

How it works

How production teams ship a fix with Capgo

A typical release for a Capacitor app that is already in the stores. Every command below is from the Capgo CLI docs.

  1. Set up the updater once

    Run the setup wizard, then make sure your app calls notifyAppReady() after it starts. A bundle that never makes that call rolls back by itself.

    npx @capgo/cli@latest init
    # in your app start-up code
    await CapacitorUpdater.notifyAppReady()
    notifyAppReady() docs
  2. Upload the fix to a slice of production

    Use --delta so devices fetch only changed files, and --rollout to start with a small share of devices. Everyone else stays on the stable bundle.

    npx @capgo/cli@latest bundle upload --channel production --delta --rollout 5
    Progressive rollouts docs
  3. Let Capgo stop a bad rollout

    Turn on auto-pause with a failure-rate threshold (500 basis points is 5%). If failures pass it, Capgo rolls the rollout back. Check the new version in Observe while it runs.

    npx @capgo/cli@latest channel set production \
      --auto-pause-enabled \
      --auto-pause-failure-rate-bps 500 \
      --auto-pause-action rollback
    Observe docs
  4. Promote to everyone

    When the numbers look right, promote the bundle to every device on the channel. If not, send the rollout cohort back to stable.

    npx @capgo/cli@latest channel set production --rollout-promote
    # or, if something looks wrong
    npx @capgo/cli@latest channel set production --rollout-rollback
    Rollbacks docs

Built for production releases

The controls production teams use to ship often without surprising users.

Delta updates

Upload with --delta and devices download only the files that changed since their current bundle. Large assets that rarely change are downloaded once.

  • Smaller downloads for users on slow or metered networks
  • In the default mode, updates apply between sessions, not in the middle of one
Delta updates docs

--delta

Only changed files are downloaded

Progressive rollout with auto-pause

Send a new bundle to a random, sticky share of a channel while everyone else stays on the stable bundle. Raise the percentage, promote it, or roll it back from the CLI or console.

  • Auto-pause can pause or roll back a rollout when the failure rate passes your threshold
  • Observe compares the new version with the previous one before you raise exposure
Progressive rollouts docs

1–5%

A typical first rollout step

Automatic rollback

Every update has to prove it starts. If a new bundle does not call notifyAppReady() in time, the device goes back to the last working bundle and marks the new one as failed.

  • Rollback triggers if notifyAppReady() isn't called within appReadyTimeout (10 seconds by default)
  • Roll a whole channel back to any earlier bundle from its history
notifyAppReady() docs

10s

Default appReadyTimeout before automatic rollback

Store-review aware delivery

Capgo delivers the Capacitor web layer: JavaScript, CSS, and assets. It does not change the native binary, plugins, permissions, entitlements, or app-store metadata. Store review is app-specific, so you remain responsible for policy compliance and approval.

  • Use a native store release when native capabilities, plugins, permissions, or app-store metadata change
  • Keep reviewer notes clear about the app’s intended functionality and web-layer update path
  • Review the current Apple and Google policies before each submission

What production teams do with it

Day-to-day release work once live updates are in place. Each card links to the docs.

Critical bug fixes

A broken checkout or login screen gets a web-layer fix. Upload it and devices pick it up on their next update check.

Update behavior docs

Copy and content changes

Fix wording, update help text, or replace images and other bundled assets without building a new binary.

Native compatibility docs

Release health in Observe

Compare a new bundle with the previous one: issue-free rate, launch and WebView timing, and deployment markers per version.

Observe docs

Faster pickup with update notifications

After you change a channel's bundle, send a silent update notification so devices check now instead of on their next foreground.

Send update notification

Protect older native builds

Block major updates on a channel so a bundle that needs new native code never reaches an older binary.

Version targeting docs

Roll back from channel history

Pick any earlier bundle in the channel's History tab to make it live again for every device on that channel.

Rollbacks docs

Infrastructure that already serves production apps

Capgo has delivered live updates to production apps since 2021.

Updates per month
1B+
Devices reached
90M+
Apps using Capgo
4.7K+
Typical API latency
~50ms

Apps built with Capacitor

High-traffic apps need reliable UI changes in production

Weather, public health, and telecom apps depend on accurate interfaces, alerts, and navigation. Production updates help ship approved interface fixes while monitoring adoption before expanding further.

Windy.com - Weather Forecast app icon WEATHER

Windy.com - Weather Forecast

Weather app where maps, alerts, and navigation fixes need careful production expansion.

Google Play installs
32.9M
Store rating
4.7
Conecte SUS app icon MEDICAL

Conecte SUS

Public health app where guidance and service information require fast, trusted updates.

Google Play installs
27.7M
Store rating
4.6
Mi Orange app icon TOOLS

Mi Orange

Telecom account app where alerts and account surfaces change frequently.

Google Play installs
9.3M
Store rating
4.2

Customer proof

What teams shipping with Capgo say

5.0/5 rated by developer teams 9,400+ teams Read reviews
Portrait of Sergiu S

Sergiu S

Lead Developer, drivolino GmbH

“The Capgo Capacitor Updater plugin completely transformed how we ship updates. What used to take days now takes just minutes.”

Kapil

Founder, NuTriQ

“Being able to push production OTA updates instantly without waiting for full App Store review cycles has been a massive operational advantage.”

Portrait of Michael Haberler

Michael Haberler

nethead emeritors

“Great job on the updater plugin. It works flawlessly for me, and live updates are a super accelerator for quick testing turnaround.”

FAQ

Questions production teams ask

How updates reach devices, and what to do when one goes wrong.

When do users get a live update?

By default, the app checks for updates when it comes to the foreground and every 10 minutes while it stays open. It downloads the new bundle in the background, installs it when the user leaves the app, and runs it the next time they open it. The autoUpdate setting changes this behavior.

Update behavior docs

Can devices pick up an urgent fix faster?

Yes. After you change a channel's bundle, send an update notification from the console, or add --send-update-notification to bundle upload. Devices get a silent push and check right away. This needs Capgo Notifications with iOS and Android push credentials. Delivery is best effort: an offline or force-quit app checks on its next launch.

Send update notification

What happens if an update breaks the app?

If a new bundle does not call notifyAppReady() within 10 seconds (the default appReadyTimeout), the device returns to the last working bundle and marks the new one as failed. For bugs that do not stop the app from starting, roll back the progressive rollout or pick an earlier bundle from the channel history.

Rollbacks docs

How do we release to a few users first?

Upload with --rollout to send the bundle to a random, sticky share of the channel while everyone else stays on stable. Raise the percentage, promote, or roll back from the CLI or console. Auto-pause can stop exposure when the failure rate passes a threshold.

Progressive rollouts docs

What can't a live update change?

Live updates replace the web layer: JavaScript, HTML, CSS, and assets. Native plugins, Capacitor upgrades, capacitor.config changes, and iOS or Android project files need a store release. Capgo checks bundles for native compatibility on upload, and channels can block updates to older binaries.

Native compatibility docs

Ship your next fix as a live update

Try the full flow on your own app during the trial: upload a bundle, roll it out to a few devices, and roll it back.