---
description: Learn how snapAddy uses Capawesome Cloud to deploy instant updates to over 200,000 monthly active users across their mobile applications.
title: Case Study: snapAddy Delivers Live Updates to 200K+ Users - Capawesome
image: https://capawesome.io/docs/assets/images/social/blog/case-study-snapaddy-live-updates.png
---

[ Skip to content](#case-study-snapaddy-delivers-live-updates-to-200k-users) 

[ 🔐 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/)
* [  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

* [  Results ](#results)
* [  Get Started ](#get-started)
* [  Conclusion ](#conclusion)

# Case Study: snapAddy Delivers Live Updates to 200K+ Users[¶](#case-study-snapaddy-delivers-live-updates-to-200k-users "Permanent link")

snapAddy cut critical bug-fix deployment time from a week to under two hours — here's how they did it. [snapAddy GmbH](https://www.snapaddy.com/) builds AI-powered contact data capture tools for B2B sales and marketing teams, serving over 4,000 customers across five continents. With their mobile apps processing hundreds of thousands of business card scans and lead captures monthly, fast and reliable deployments are essential.

[ ![Build and deploy your Capacitor app with Capawesome Cloud](../../assets/external/cloud.capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.69628c3f.png) ](https://cloud.capawesome.io/) 

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

snapAddy's flagship mobile apps — [BusinessCards](https://apps.apple.com/de/app/businesscards-von-snapaddy/id1092176452) and [VisitReport](https://apps.apple.com/de/app/visitreport-von-snapaddy/id1209551735) — help sales professionals digitize business cards and capture leads at trade shows, with AI-powered recognition across 40+ languages. Built with Capacitor and deployed across iOS and Android, the apps have reached over 200,000 monthly active users.

With a 4.8-star App Store rating from over 4,000 reviews, snapAddy's apps are known for accuracy and reliability. Maintaining that reputation at scale means being able to respond quickly to bugs, ship feature improvements, and adapt to changing business requirements — without waiting on traditional app store review cycles.

## Pain Points[¶](#pain-points "Permanent link")

Before adopting [Capawesome Cloud Live Updates](https://cloud.capawesome.io/live-updates/), snapAddy faced several challenges:

**Slow Time-to-Market**: Even minor bug fixes required native updates through the App Store and Google Play, delaying fixes by several days to over a week. For issues affecting business operations, that delay was a blocker.

**Version Fragmentation**: Users spread across many app versions, and slow adoption of new releases meant critical fixes often took weeks to reach the full user base.

**Resource Constraints**: Every native release required coordination across development, QA, and release management, consuming engineering time better spent on features.

**Release Risk**: Bundling many changes into infrequent native releases increased regression risk, with limited ability to roll back problematic updates quickly.

## Why Capawesome Cloud[¶](#why-capawesome-cloud "Permanent link")

snapAddy evaluated several over-the-air update solutions before choosing Capawesome Cloud for its reliability, security features, and developer experience.

**Enterprise-Grade Security**: Code signing with RSA keypairs ensures only authorized updates reach production apps. Private keys are stored in Capawesome Cloud so signing is handled centrally during every deployment, without distributing secrets to CI systems.

**Automatic Rollback Protection**: Built-in rollback mechanisms protect users from broken updates by reverting to the last known working version if an app fails to initialize.

**Flexible Deployment Options**: Channel-based distribution lets snapAddy maintain separate update streams for different app versions and customer segments, enabling gradual rollouts and targeted testing.

**Developer-Friendly Workflow**: The Capawesome CLI integrates cleanly into existing CI/CD pipelines, and GitHub Actions integration keeps automated deployments simple.

**Cost-Effective Scaling**: Transparent pricing based on monthly active users makes scaling predictable as the user base grows.

## Technical Implementation[¶](#technical-implementation "Permanent link")

snapAddy's setup combines security, reliability, and a smooth user experience.

### Plugin Configuration[¶](#plugin-configuration "Permanent link")

The [Live Update](/docs/plugins/live-update.md) plugin is configured in `capacitor.config.json`:

`[](#%5F%5Fcodelineno-0-1){
[](#%5F%5Fcodelineno-0-2)  "plugins": {
[](#%5F%5Fcodelineno-0-3)    "LiveUpdate": {
[](#%5F%5Fcodelineno-0-4)      "appId": "8d016ef9-...",
[](#%5F%5Fcodelineno-0-5)      "autoBlockRolledBackBundles": true,
[](#%5F%5Fcodelineno-0-6)      "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A...\n-----END PUBLIC KEY-----",
[](#%5F%5Fcodelineno-0-7)      "readyTimeout": 10000
[](#%5F%5Fcodelineno-0-8)    }
[](#%5F%5Fcodelineno-0-9)  }
[](#%5F%5Fcodelineno-0-10)}
`

**Key configuration highlights**:

* **Code Signing**: The `publicKey` verifies that all bundles are signed with snapAddy's private key, preventing unauthorized updates
* **Automatic Rollback Protection**: `autoBlockRolledBackBundles` permanently blocks bundles that fail initialization, preventing repeated rollback loops
* **Ready Timeout**: A 10-second timeout ensures the app initializes successfully before disabling rollback protection

### App Initialization[¶](#app-initialization "Permanent link")

At app startup, [ready()](/docs/plugins/live-update.md#ready) signals that the app has initialized successfully, so no automatic rollback is performed:

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

### Checking for Updates[¶](#checking-for-updates "Permanent link")

snapAddy's update flow balances user experience with fast delivery. It supports both user-initiated and silent background updates through custom properties:

`[](#%5F%5Fcodelineno-2-1)import { LiveUpdate } from '@capawesome/capacitor-live-update';
[](#%5F%5Fcodelineno-2-2)
[](#%5F%5Fcodelineno-2-3)const checkForUpdates = async () => {
[](#%5F%5Fcodelineno-2-4)  const latest = await LiveUpdate.fetchLatestBundle();
[](#%5F%5Fcodelineno-2-5)  if (!latest.bundleId) return;
[](#%5F%5Fcodelineno-2-6)
[](#%5F%5Fcodelineno-2-7)  const current = await LiveUpdate.getCurrentBundle();
[](#%5F%5Fcodelineno-2-8)  if (latest.bundleId === current.bundleId) return;
[](#%5F%5Fcodelineno-2-9)
[](#%5F%5Fcodelineno-2-10)  const isSilent = latest.customProperties?.silentUpdate === 'true';
[](#%5F%5Fcodelineno-2-11)  const shouldDownload = isSilent || confirm('A new update is available. Download now?');
[](#%5F%5Fcodelineno-2-12)  if (!shouldDownload) return;
[](#%5F%5Fcodelineno-2-13)
[](#%5F%5Fcodelineno-2-14)  await LiveUpdate.downloadBundle({
[](#%5F%5Fcodelineno-2-15)    artifactType: latest.artifactType,
[](#%5F%5Fcodelineno-2-16)    bundleId: latest.bundleId,
[](#%5F%5Fcodelineno-2-17)    url: latest.downloadUrl
[](#%5F%5Fcodelineno-2-18)  });
[](#%5F%5Fcodelineno-2-19)  await LiveUpdate.setNextBundle({ bundleId: latest.bundleId });
[](#%5F%5Fcodelineno-2-20)
[](#%5F%5Fcodelineno-2-21)  if (!isSilent && confirm('Update downloaded. Apply now? The app will restart.')) {
[](#%5F%5Fcodelineno-2-22)    await LiveUpdate.reload();
[](#%5F%5Fcodelineno-2-23)  }
[](#%5F%5Fcodelineno-2-24)};
`

Highlights of this flow:

* **Custom Properties**: The `silentUpdate` custom property controls update behavior on a per-bundle basis — set via [fetchLatestBundle()](/docs/plugins/live-update.md#fetchlatestbundle)
* **User Control**: For non-silent updates, users are prompted before [downloadBundle(...)](/docs/plugins/live-update.md#downloadbundle) runs and before the update is applied
* **Deferred Application**: Silent updates are downloaded in the background and only applied on the next app restart via [setNextBundle(...)](/docs/plugins/live-update.md#setnextbundle), avoiding disruption

### Automated Deployment[¶](#automated-deployment "Permanent link")

snapAddy uses GitHub Actions to trigger deployments via Capawesome Cloud Runners. Because the build, signing, and distribution all happen in the cloud, secrets and environment variables only need to be managed in one place:

`[](#%5F%5Fcodelineno-3-1)name: Deploy Live Update
[](#%5F%5Fcodelineno-3-2)on:
[](#%5F%5Fcodelineno-3-3)  workflow_dispatch:
[](#%5F%5Fcodelineno-3-4)    inputs:
[](#%5F%5Fcodelineno-3-5)      channels:
[](#%5F%5Fcodelineno-3-6)        required: true
[](#%5F%5Fcodelineno-3-7)      custom_property_silent_update:
[](#%5F%5Fcodelineno-3-8)        type: choice
[](#%5F%5Fcodelineno-3-9)        options: [false, true]
[](#%5F%5Fcodelineno-3-10)jobs:
[](#%5F%5Fcodelineno-3-11)  deploy:
[](#%5F%5Fcodelineno-3-12)    runs-on: ubuntu-latest
[](#%5F%5Fcodelineno-3-13)    steps:
[](#%5F%5Fcodelineno-3-14)      - run: |
[](#%5F%5Fcodelineno-3-15)          npx @capawesome/cli apps:liveupdates:create \
[](#%5F%5Fcodelineno-3-16)            --app-id 8d016ef9-... \
[](#%5F%5Fcodelineno-3-17)            --git-ref ${{ github.head_ref || github.ref_name }} \
[](#%5F%5Fcodelineno-3-18)            --channel ${{ github.event.inputs.channels }} \
[](#%5F%5Fcodelineno-3-19)            --custom-property "silentUpdate=${{ github.event.inputs.custom_property_silent_update }}"
`

**Deployment workflow highlights**:

* **Manual Trigger**: `workflow_dispatch` allows controlled deployments with custom parameters
* **Channel Selection**: Runtime channel selection enables deployment to different environments or app versions
* **Single Source of Truth for Secrets**: Build variables and signing keys live in Capawesome Cloud only, so they don't need to be duplicated as GitHub Secrets
* **Cloud-Side Build and Signing**: Capawesome Cloud Runners check out the commit, build the web assets, and sign the bundle with the stored private key
* **Custom Properties**: The `silentUpdate` flag is set during deployment to control update behavior

## Results[¶](#results "Permanent link")

Since adopting Capawesome Cloud Live Updates, snapAddy has seen meaningful improvements across deployment speed, user experience, and team efficiency:

**Dramatically Faster Deployment**: Critical bug fixes that previously took 5–7 days through App Store review now reach all 200,000+ users in under 2 hours. The team has seen around a 40% drop in related support tickets as a result.

**Higher Release Frequency**: The team now ships updates 3–4 times per week instead of roughly once a month, enabling rapid iteration without adding operational overhead.

**Reduced Version Fragmentation**: With live updates, 95%+ of users run the latest version within 48 hours — compared to around 30% adoption after 2 weeks with native updates. The team now maintains compatibility with 2–3 versions instead of 15–20, simplifying development and QA.

**Seamless User Experience**: Silent updates deliver roughly 80% of improvements transparently in the background, while user-prompted updates handle the remaining 20% of more significant changes. Internal surveys show high satisfaction with the update experience, with effectively zero disruption to daily workflows.

**Improved Engineering Efficiency**: Automated deployment pipelines have eliminated 15+ hours per month of manual release coordination, freeing the team to focus on feature work. CI/CD integration has also brought deployment errors close to zero, compared to the 10–15% failure rates they saw with manual processes.

## Get Started[¶](#get-started "Permanent link")

Want to see how Capawesome Cloud Live Updates can accelerate releases for your Capacitor app? Book a demo to learn more.

[Book a Capawesome Cloud Demo](https://cal.com/team/capawesome/cloud-demo)

## Conclusion[¶](#conclusion "Permanent link")

snapAddy's story shows how live updates can change the shape of a release process at scale. By combining code signing, automatic rollback protection, and flexible deployment options through channels and custom properties, the team built a pipeline that supports rapid iteration while keeping the trust of over 4,000 enterprise customers. The takeaway for other teams: invest in security, automate the pipeline, and give yourself configuration knobs (like silent vs. prompted updates) so you can tune the experience over time.

For another perspective on moving fast with Capawesome Cloud, check out the [StoryHunt case study](/blog/case-study-storyhunt/) on replacing custom-built solutions to ship updates in hours instead of days. Have questions or want to connect with other Capacitor developers? Join the [Capawesome Discord server](https://discord.gg/VCXxSVjefW). And to stay updated on new guides and features, subscribe to the [Capawesome newsletter](https://cloud.capawesome.io/newsletter).

June 10, 2026 

 Back to top 