---
title: Share Mobile App Builds with Testers via Link & QR Code
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."
date:
  created: 2026-07-12
  updated: 2026-07-14
authors:
  - robingenz
categories:
  - Announcements
  - Cloud
faq: true
---

# Share Mobile App Builds with Testers via Link & QR Code

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/){:target="_blank"}, 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.

<!-- more -->

<figure>
  <video controls allowfullscreen autoplay loop muted playsinline>
    <source src="/docs/assets/videos/posts/share-mobile-app-builds-with-testers/build-sharing.mp4" type="video/mp4">
  </video>
  <figcaption>Build sharing in action: from Share button to installed app in seconds.</figcaption>
</figure>

## Why we built this

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

### Enable sharing

On the detail page of any successful build in the [Capawesome Cloud Console](https://console.cloud.capawesome.io/){:target="_blank"}, 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

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

Build sharing is built for the everyday [beta testing](https://capawesome.io/solutions/beta-testing/){:target="_blank"} 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 or [Diawi](https://capawesome.io/alternatives/diawi/){:target="_blank"}, 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](../../cloud/app-store-publishing/index.md) is for.

## Automate it from your CI/CD

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

```bash
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:

```bash
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](../../cloud/native-builds/integrations/github-actions.md), 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:

```yaml
name: Share Build
on:
  pull_request:
jobs:
  build:
    runs-on: ubuntu-latest
    permissions:
      pull-requests: write
    steps:
      - uses: capawesome-team/cloud-build-action@v0.1.2
        id: build
        with:
          appId: ${{ secrets.CAPAWESOME_APP_ID }}
          platform: 'android'
          type: 'debug'
          gitRef: ${{ github.event.pull_request.head.sha }}
          share: true
          shareExpiresInDays: 7
          token: ${{ secrets.CAPAWESOME_TOKEN }}
      - uses: actions/github-script@v7
        with:
          script: |
            await github.rest.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: `📱 **Install this build**\n\n![QR code](${{ steps.build.outputs.shareQrCodeUrl }})\n\n[Open share page](${{ steps.build.outputs.shareWebUrl }})`,
            });
```

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:

<figure markdown>
  ![GitHub pull request comment with a build share link and QR code](../../assets/images/posts/20260712_cloud-build-sharing-pr-comment.png)
  <figcaption>A pull request comment with the share link and QR code, posted automatically by the GitHub Action.</figcaption>
</figure>

## You stay in control

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`](../../cloud/cli/commands.md#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

### Do testers need a Capawesome Cloud account?

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?

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?

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/){:target="_blank"} makes collecting device UDIDs a one-scan job. Enterprise-signed builds install without device registration.

### What happens when a link expires?

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?

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

## Get started

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

[Try Capawesome Cloud Free](https://capawesome.io){ .md-button .md-button--primary }

## Conclusion

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](./how-to-distribute-ios-and-android-apps-to-testers.md). If you have any questions or feedback, join the [Capawesome Discord server](https://discord.gg/VCXxSVjefW){:target="_blank"} or subscribe to the [Capawesome newsletter](https://capawesome.io/newsletter/){:target="_blank"} to stay up to date. We can't wait to see what you share!
