---
description: Announcing build sharing in Capawesome Cloud: send any iOS or Android build to testers with a public link and QR code — no account required.
title: Share Mobile App Builds with Testers via Link & QR Code - Capawesome
image: https://capawesome.io/docs/assets/images/social/blog/share-mobile-app-builds-with-testers.png
---

<!doctype html> 

[Skip to content ](#share-mobile-app-builds-with-testers-via-link-qr-code) 

[📲 Introducing **Build Sharing** — get your builds onto testers' devices with a link & QR code. No account required. ](/blog/share-mobile-app-builds-with-testers/) 

* [ 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/)
* [ Gyroscope ](/docs/sdks/capacitor/gyroscope/)
* [ Haptics ](/docs/sdks/capacitor/haptics/)
* [ Home Indicator ](/docs/sdks/capacitor/home-indicator/)
* [ In-App Browser ](/docs/sdks/capacitor/in-app-browser/)
* [ Install Referrer ](/docs/sdks/capacitor/install-referrer/)
* [ Keep Awake ](/docs/sdks/capacitor/keep-awake/)
* [ libSQL ](/docs/sdks/capacitor/libsql/)
* [ Light Sensor ](/docs/sdks/capacitor/light-sensor/)
* [ Live Update ](/docs/sdks/capacitor/live-update/)
* [ Localization ](/docs/sdks/capacitor/localization/)
* [ Mail Composer ](/docs/sdks/capacitor/mail-composer/)
* [ Managed Configurations ](/docs/sdks/capacitor/managed-configurations/)
* [ Maps Launcher ](/docs/sdks/capacitor/maps-launcher/)
* [ Media Session ](/docs/sdks/capacitor/media-session/)
* [ ML Kit ](/docs/sdks/capacitor/mlkit/)
* [ Navigation Bar ](/docs/sdks/capacitor/navigation-bar/)
* [ Network ](/docs/sdks/capacitor/network/)
* [ NFC ](/docs/sdks/capacitor/nfc/)
* [ Node.js ](/docs/sdks/capacitor/nodejs/)
* [ OAuth ](/docs/sdks/capacitor/oauth/)
* [ Passkeys ](/docs/sdks/capacitor/passkeys/)
* [ Password Autofill ](/docs/sdks/capacitor/password-autofill/)
* [ PDF Generator ](/docs/sdks/capacitor/pdf-generator/)
* [ PDF Viewer ](/docs/sdks/capacitor/pdf-viewer/)
* [ Pedometer ](/docs/sdks/capacitor/pedometer/)
* [ Permissions ](/docs/sdks/capacitor/permissions/)
* [ Phone Dialer ](/docs/sdks/capacitor/phone-dialer/)
* [ Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [ Photo Manipulator ](/docs/sdks/capacitor/photo-manipulator/)
* [ PixLive ](/docs/sdks/capacitor/pixlive/)
* [ PostHog ](/docs/sdks/capacitor/posthog/)
* [ Printer ](/docs/sdks/capacitor/printer/)
* [ Privacy Screen ](/docs/sdks/capacitor/privacy-screen/)
* [ Proximity Sensor ](/docs/sdks/capacitor/proximity-sensor/)
* [ Purchases ](/docs/sdks/capacitor/purchases/)
* [ RealtimeKit ](/docs/sdks/capacitor/realtimekit/)
* [ Root Detection ](/docs/sdks/capacitor/root-detection/)
* [ Screen Brightness ](/docs/sdks/capacitor/screen-brightness/)
* [ Screen Orientation ](/docs/sdks/capacitor/screen-orientation/)
* [ Screen Reader ](/docs/sdks/capacitor/screen-reader/)
* [ Screenshot ](/docs/sdks/capacitor/screenshot/)
* [ Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [ Settings Launcher ](/docs/sdks/capacitor/settings-launcher/)
* [ Shake ](/docs/sdks/capacitor/shake/)
* [ Silent Mode ](/docs/sdks/capacitor/silent-mode/)
* [ SIM ](/docs/sdks/capacitor/sim/)
* [ SMS Composer ](/docs/sdks/capacitor/sms-composer/)
* [ 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/)
* [ System WebView ](/docs/sdks/capacitor/system-webview/)
* [ Text Interaction ](/docs/sdks/capacitor/text-interaction/)
* [ Text Zoom ](/docs/sdks/capacitor/text-zoom/)
* [ Thermal State ](/docs/sdks/capacitor/thermal-state/)
* [ Toast ](/docs/sdks/capacitor/toast/)
* [ Torch ](/docs/sdks/capacitor/torch/)
* [ Vault ](/docs/sdks/capacitor/vault/)
* [ Volume ](/docs/sdks/capacitor/volume/)
* [ Wallet ](/docs/sdks/capacitor/wallet/)
* [ 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, Yarn, or bun ](/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

* [ Where build sharing fits ](#where-build-sharing-fits)
* [ Automate it from your CI/CD ](#automate-it-from-your-cicd)
* [ You stay in control ](#you-stay-in-control)
* [ FAQ ](#faq)
* [ Get started ](#get-started)
* [ Conclusion ](#conclusion)

# Share Mobile App Builds with Testers via Link & QR Code[¶](#share-mobile-app-builds-with-testers-via-link-qr-code "Permanent link")

Getting a build onto a tester's phone is one of those things that should take seconds but usually doesn't. Today, we're changing that: with **build sharing** in [Capawesome Cloud](https://capawesome.io/cloud/), you can turn any successful build into a public share link. Testers open the link, scan a QR code, and install the build on their device — no Capawesome Cloud account, no app store review, no waiting. It works for Capacitor and Cordova apps as well as native Android (Kotlin/Java) and iOS (Swift/Objective-C) apps — with support for more frameworks on the way.

Build sharing in action: from Share button to installed app in seconds.

## Why we built this[¶](#why-we-built-this "Permanent link")

If you've ever distributed a test build, you know the drill: TestFlight reviews that take hours (or days), device registration ceremonies, or the classic "can you send me the APK?" email thread. External testers, clients, and stakeholders don't want to create an account in your build platform — they just want to try the app.

Build sharing removes every step between "the build is green" and "it's running on someone's phone".

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

### Enable sharing[¶](#enable-sharing "Permanent link")

On the detail page of any successful build in the [Capawesome Cloud Console](https://console.cloud.capawesome.io/), you'll find a new **Share** button. It opens a dialog where you can:

* **Enable sharing** with a single toggle.
* Add a **description** for your testers — for example, what to test in this build.
* Set an optional **expiration**, after which the link stops working automatically.

After saving, you get a unique share link that you can send to anyone.

### What testers see[¶](#what-testers-see "Permanent link")

The share page shows everything a tester needs — and nothing more:

* The app name, build number, version, and platform.
* Your description, so testers know what to look for.
* A **QR code** and a **Download** button to install the build: Android testers install the APK directly, and iOS testers with Ad Hoc, Development, or Enterprise builds install over-the-air with a single tap.

Build logs and other internals are never exposed on the share page.

## Where build sharing fits[¶](#where-build-sharing-fits "Permanent link")

Build sharing is built for the everyday moments where a build needs to reach someone quickly:

* **QA on every pull request** — post a QR code into the pull request and let reviewers test the actual build, not just the diff.
* **Client and stakeholder previews** — send a link at the end of the sprint; they can see the build details in the browser and install the build in seconds.
* **Quick device testing** — grab a test device, scan the QR code, and see your build running on real hardware.

Compared to a TestFlight upload, there is no review wait and no tester onboarding — the share link exists the moment your build turns green. Compared to services like Firebase App Distribution, your testers don't need accounts or invitations, and sharing lives in the same platform that builds your app. And once a build is ready for a broader audience, the app stores take over — that's what [App Store Publishing](/docs/cloud/app-store-publishing/) is for.

## Automate it from your CI/CD[¶](#automate-it-from-your-cicd "Permanent link")

Sharing is also built into the [Capawesome CLI](/docs/cloud/cli/commands/), so you can generate share links right from your pipeline:

`[](#%5F%5Fcodelineno-0-1)npx @capawesome/cli apps:builds:share --app-id <app-id> --build-number 42 --json
`

The `--json` output includes the share URL and a ready-to-embed QR code image URL. You can even create the share automatically as part of the build:

`[](#%5F%5Fcodelineno-1-1)npx @capawesome/cli apps:builds:create --platform android --share --share-description "Please test the new checkout flow." --json
`

If you're using our [GitHub Action](/docs/cloud/native-builds/integrations/github-actions/), the new `share` input does the same — and with the `shareWebUrl` and `shareQrCodeUrl` outputs, you can post the QR code straight into a pull request comment or a Slack message. Every pull request gets a build that anyone on the team can install in seconds:

`` [](#%5F%5Fcodelineno-2-1)name: Share Build
[](#%5F%5Fcodelineno-2-2)on:
[](#%5F%5Fcodelineno-2-3)  pull_request:
[](#%5F%5Fcodelineno-2-4)jobs:
[](#%5F%5Fcodelineno-2-5)  build:
[](#%5F%5Fcodelineno-2-6)    runs-on: ubuntu-latest
[](#%5F%5Fcodelineno-2-7)    permissions:
[](#%5F%5Fcodelineno-2-8)      pull-requests: write
[](#%5F%5Fcodelineno-2-9)    steps:
[](#%5F%5Fcodelineno-2-10)      - uses: capawesome-team/cloud-build-action@v0.1.2
[](#%5F%5Fcodelineno-2-11)        id: build
[](#%5F%5Fcodelineno-2-12)        with:
[](#%5F%5Fcodelineno-2-13)          appId: ${{ secrets.CAPAWESOME_APP_ID }}
[](#%5F%5Fcodelineno-2-14)          platform: 'android'
[](#%5F%5Fcodelineno-2-15)          type: 'debug'
[](#%5F%5Fcodelineno-2-16)          gitRef: ${{ github.event.pull_request.head.sha }}
[](#%5F%5Fcodelineno-2-17)          share: true
[](#%5F%5Fcodelineno-2-18)          shareExpiresInDays: 7
[](#%5F%5Fcodelineno-2-19)          token: ${{ secrets.CAPAWESOME_TOKEN }}
[](#%5F%5Fcodelineno-2-20)      - uses: actions/github-script@v7
[](#%5F%5Fcodelineno-2-21)        with:
[](#%5F%5Fcodelineno-2-22)          script: |
[](#%5F%5Fcodelineno-2-23)            await github.rest.issues.createComment({
[](#%5F%5Fcodelineno-2-24)              issue_number: context.issue.number,
[](#%5F%5Fcodelineno-2-25)              owner: context.repo.owner,
[](#%5F%5Fcodelineno-2-26)              repo: context.repo.repo,
[](#%5F%5Fcodelineno-2-27)              body: `📱 **Install this build**\n\n![QR code](${{ steps.build.outputs.shareQrCodeUrl }})\n\n[Open share page](${{ steps.build.outputs.shareWebUrl }})`,
[](#%5F%5Fcodelineno-2-28)            });
 ``

The comment body is plain Markdown, so you can style it however you like — here's what one of our own pull request comments looks like:

![GitHub pull request comment with a build share link and QR code](/docs/assets/images/posts/20260712_cloud-build-sharing-pr-comment.png) 

A pull request comment with the share link and QR code, posted automatically by the GitHub Action.

## You stay in control[¶](#you-stay-in-control "Permanent link")

A public link is only as good as the control you have over it:

* **Expiration**: set an optional lifetime for the link — it stops working automatically.
* **Revocation**: disable sharing at any time — in the Console or with the [apps:builds:unshare](/docs/cloud/cli/commands/#appsbuildsunshare) CLI command — and the link is invalidated immediately. Re-enabling creates a new link; old links never come back to life.
* **Short-lived downloads**: the actual download links on the share page are freshly signed and valid for a few minutes only — the share page renews them automatically.
* **Privacy**: build logs are never exposed, and the share page only shows the metadata testers actually need.

## FAQ[¶](#faq "Permanent link")

### Do testers need a Capawesome Cloud account?[¶](#do-testers-need-a-capawesome-cloud-account "Permanent link")

No. The share page is public — testers just open the link or scan the QR code. No account, no invitation, no extra app to install first.

### Which platforms are supported?[¶](#which-platforms-are-supported "Permanent link")

Android (APK), iOS (IPA), and web builds (ZIP). Build sharing works for Capacitor and Cordova apps as well as native Android (Kotlin/Java) and iOS (Swift/Objective-C) apps — with more frameworks on the way.

### How do testers install iOS builds?[¶](#how-do-testers-install-ios-builds "Permanent link")

They open the share page on their iPhone — for example by scanning the QR code — and tap **Install**. For ad-hoc and development builds, the tester's device must be registered in the build's provisioning profile; the free [iOS UDID finder](https://capawesome.io/tools/ios-udid-finder/) makes collecting device UDIDs a one-scan job. Enterprise-signed builds install without device registration.

### What happens when a link expires?[¶](#what-happens-when-a-link-expires "Permanent link")

The share page stops working and shows that the link is no longer available. You can re-enable sharing at any time, which creates a fresh link.

### Can I revoke a link?[¶](#can-i-revoke-a-link "Permanent link")

Yes — turn sharing off in the Console or run `apps:builds:unshare` in the CLI. Revocation takes effect immediately.

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

Build sharing is available today for all Capawesome Cloud users. Check out the [Share a Build](/docs/cloud/native-builds/share-a-build/) guide to share your first build in under a minute.

[Try Capawesome Cloud Free](https://capawesome.io)

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

Getting a build into someone's hands should never be the slowest part of shipping. With build sharing, the moment a build turns green it is one link — or one QR code — away from your testers, clients, and teammates, with expiration and revocation keeping you in control. For the bigger picture on distributing test builds, read our guide on [how to distribute iOS and Android apps to testers](/blog/how-to-distribute-ios-and-android-apps-to-testers/). If you have any questions or feedback, join the [Capawesome Discord server](https://discord.gg/VCXxSVjefW) or subscribe to the [Capawesome newsletter](https://capawesome.io/newsletter) to stay up to date. We can't wait to see what you share!

July 12, 2026 

Back to top

```json
{
      "@context": "https://schema.org",
      "@type": "BlogPosting",
      "headline": "Share Mobile App Builds with Testers via Link \u0026 QR Code",
      "description": "Announcing build sharing in Capawesome Cloud: send any iOS or Android build to testers with a public link and QR code \u2014 no account required.",
      "image": "https://capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.png",
      "datePublished": "2026-07-13T00:00:00+00:00",
      "dateModified": "2026-07-13T00:00:00+00:00",
      "author": [
        {
          "@type": "Person",
          "name": "Robin Genz",
          "url": "https://github.com/robingenz"
        }
      ],
      "publisher": {
        "@type": "Organization",
        "name": "Capawesome",
        "url": "https://capawesome.io",
        "logo": {
          "@type": "ImageObject",
          "url": "https://capawesome.io/assets/images/logo.svg"
        }
      },
      "articleSection": "Announcements",
      "keywords": ["Announcements", "Cloud"],
      "isPartOf": {
        "@type": "Blog",
        "@id": "https://capawesome.io/blog/#blog"
      },
      "mainEntityOfPage": "https://capawesome.io/blog/share-mobile-app-builds-with-testers/",
      "url": "https://capawesome.io/blog/share-mobile-app-builds-with-testers/"
    }
{
      "@context": "https://schema.org",
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "https://capawesome.io/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Blog",
          "item": "https://capawesome.io/blog/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Share Mobile App Builds with Testers via Link \u0026 QR Code",
          "item": "https://capawesome.io/blog/share-mobile-app-builds-with-testers/"
        }
      ]
    }
```
