---
description: Share a native iOS or Android build from Capawesome Cloud via a public link, so external testers can view and install it without an account.
title: Share a Native Build - Capawesome
image: https://capawesome.io/docs/assets/images/social/cloud/native-builds/share-a-build.png
---

<!doctype html> 

[Skip to content ](#share-a-build) 

[📲 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 Signing Certificates ](/docs/cloud/native-builds/certificates/)
* [ 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

# Share a Build[¶](#share-a-build "Permanent link")

Sometimes the people who need to test a build don't have a [Capawesome Cloud](/) account — a client, a beta tester, or a colleague on another team. Build sharing lets you hand them a single public link where they can view the build and install it on their device, no login required.

Sharing produces a public **share page** at `https://console.cloud.capawesome.io/app-build-shares/<id>`. Anyone with the link can open it — so share it only with people you trust. Build logs are never exposed, and you can [revoke a link](#revoke-a-share) at any time.

Only **succeeded** builds can be shared.

## Share a build[¶](#share-a-build%5F1 "Permanent link")

CLIConsole

Use the [apps:builds:share](/docs/cloud/cli/commands/#appsbuildsshare) command to create a share for a build (or return the existing one):

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

Add an optional `--description` with instructions for testers (for example, what to test) and an optional `--expires-in-days` to have the link stop working after a number of days:

`[](#%5F%5Fcodelineno-1-1)npx @capawesome/cli apps:builds:share \
[](#%5F%5Fcodelineno-1-2)  --app-id <app-id> \
[](#%5F%5Fcodelineno-1-3)  --build-id <build-id> \
[](#%5F%5Fcodelineno-1-4)  --description "Please test the new checkout flow" \
[](#%5F%5Fcodelineno-1-5)  --expires-in-days 7
`

Pass `--json` to get the share details as machine-readable output — including a `qrCodeUrl` you can embed anywhere:

`[](#%5F%5Fcodelineno-2-1){
[](#%5F%5Fcodelineno-2-2)  "id": "00000000-0000-0000-0000-000000000000",
[](#%5F%5Fcodelineno-2-3)  "qrCodeUrl": "https://...",
[](#%5F%5Fcodelineno-2-4)  "webUrl": "https://console.cloud.capawesome.io/app-build-shares/00000000-0000-0000-0000-000000000000",
[](#%5F%5Fcodelineno-2-5)  "expiresAt": "2026-01-01T00:00:00.000Z"
[](#%5F%5Fcodelineno-2-6)}
`

The `qrCodeUrl` points to a PNG image of a QR code for the share page, so you can drop it straight into a Slack message, a GitHub comment, or a pull request description.

To revoke a share, use the [apps:builds:unshare](/docs/cloud/cli/commands/#appsbuildsunshare) command — see [Revoke a share](#revoke-a-share).

Open the build's detail page and click **Share** to open the **Share Build** dialog. Turn on the toggle to enable sharing, and optionally add a **Description** (shown to testers, e.g. what to test) and an **Expiration**. Click **Save**.

![Share Build dialog in Capawesome Cloud](/docs/assets/images/screenshots/cloud-share-build.png)

After saving, a dialog shows the **share link** so you can copy it right away. To copy the link again or to change the description or expiration later, reopen the dialog and save your changes — the link stays the same.

## The share page[¶](#the-share-page "Permanent link")

The share page is public and requires no account. It shows:

* The build details: app, platform, type, build number, version, share date, and link expiration.
* The description you provided, if any.
* An **Installation** section with a QR code and a **Download** button for the build's artifact (APK for Android, IPA for iOS, ZIP for web builds).

Android testers scan the QR code with their device to download and install the APK directly. For iOS builds of type [ad-hoc, development, or enterprise](/docs/cloud/native-builds/build-types/), the QR code installs the build over-the-air on the device — see [Install on a device](/docs/cloud/native-builds/install-on-device/) for the device requirements. All other builds offer the download only.

The QR code and download links are short-lived — a QR code is valid for 15 minutes, after which reloading the page generates a new one. **Build logs are never shown on the share page.**

## Share automatically after a build[¶](#share-automatically-after-a-build "Permanent link")

You can share a build automatically as soon as it succeeds, without a separate command or click.

CLIGitHub Action

Add `--share` to [apps:builds:create](/docs/cloud/cli/commands/#appsbuildscreate) to share the build once it succeeds. Use `--share-description` and `--share-expires-in-days` to set the description and expiration:

`[](#%5F%5Fcodelineno-3-1)npx @capawesome/cli apps:builds:create \
[](#%5F%5Fcodelineno-3-2)  --platform ios \
[](#%5F%5Fcodelineno-3-3)  --type ad-hoc \
[](#%5F%5Fcodelineno-3-4)  --git-ref main \
[](#%5F%5Fcodelineno-3-5)  --share \
[](#%5F%5Fcodelineno-3-6)  --share-description "Please test the new checkout flow" \
[](#%5F%5Fcodelineno-3-7)  --share-expires-in-days 7
`

With `--json`, the output includes an `appBuildShare` object with the share `id`, `qrCodeUrl`, `webUrl`, and `expiresAt`. `--share` waits for the build to finish, so it cannot be combined with `--detached`.

The official [cloud-build-action](https://github.com/capawesome-team/cloud-build-action) exposes sharing via the `share`, `shareDescription`, and `shareExpiresInDays` inputs, and returns the `shareWebUrl`, `shareQrCodeUrl`, and `shareExpiresAt` outputs. A common pattern is to post a pull request comment with the QR code and link after the build:

`` [](#%5F%5Fcodelineno-4-1)- uses: capawesome-team/cloud-build-action@v0.1.2
[](#%5F%5Fcodelineno-4-2)  id: build
[](#%5F%5Fcodelineno-4-3)  with:
[](#%5F%5Fcodelineno-4-4)    appId: "00000000-0000-0000-0000-000000000000"
[](#%5F%5Fcodelineno-4-5)    platform: ios
[](#%5F%5Fcodelineno-4-6)    type: ad-hoc
[](#%5F%5Fcodelineno-4-7)    gitRef: ${{ github.sha }}
[](#%5F%5Fcodelineno-4-8)    token: ${{ secrets.CAPAWESOME_TOKEN }}
[](#%5F%5Fcodelineno-4-9)    share: true
[](#%5F%5Fcodelineno-4-10)    shareDescription: "Please test this pull request"
[](#%5F%5Fcodelineno-4-11)    shareExpiresInDays: 7
[](#%5F%5Fcodelineno-4-12)- uses: actions/github-script@v7
[](#%5F%5Fcodelineno-4-13)  with:
[](#%5F%5Fcodelineno-4-14)    script: |
[](#%5F%5Fcodelineno-4-15)      const sha = context.payload.pull_request?.head?.sha || context.sha;
[](#%5F%5Fcodelineno-4-16)      const commitUrl = `${context.serverUrl}/${context.repo.owner}/${context.repo.repo}/commit/${sha}`;
[](#%5F%5Fcodelineno-4-17)      const expiresAt = '${{ steps.build.outputs.shareExpiresAt }}'.slice(0, 10);
[](#%5F%5Fcodelineno-4-18)      const body = [
[](#%5F%5Fcodelineno-4-19)        '### 📱 iOS build ready to test',
[](#%5F%5Fcodelineno-4-20)        '',
[](#%5F%5Fcodelineno-4-21)        '| Build | Commit | Expires |',
[](#%5F%5Fcodelineno-4-22)        '| --- | --- | --- |',
[](#%5F%5Fcodelineno-4-23)        `| [#${{ steps.build.outputs.buildNumber }}](${{ steps.build.outputs.buildUrl }}) | [\`${sha.slice(0, 7)}\`](${commitUrl}) | ${expiresAt} |`,
[](#%5F%5Fcodelineno-4-24)        '',
[](#%5F%5Fcodelineno-4-25)        `[<img src="${{ steps.build.outputs.shareQrCodeUrl }}" width="140" alt="QR code" />](${{ steps.build.outputs.shareWebUrl }})`,
[](#%5F%5Fcodelineno-4-26)        '',
[](#%5F%5Fcodelineno-4-27)        `**[Open share page →](${{ steps.build.outputs.shareWebUrl }})**`,
[](#%5F%5Fcodelineno-4-28)      ].join('\n');
[](#%5F%5Fcodelineno-4-29)      await github.rest.issues.createComment({
[](#%5F%5Fcodelineno-4-30)        issue_number: context.issue.number,
[](#%5F%5Fcodelineno-4-31)        owner: context.repo.owner,
[](#%5F%5Fcodelineno-4-32)        repo: context.repo.repo,
[](#%5F%5Fcodelineno-4-33)        body,
[](#%5F%5Fcodelineno-4-34)      });
 ``

See the [action README](https://github.com/capawesome-team/cloud-build-action) for the full example and [Native Builds with GitHub Actions](/docs/cloud/native-builds/integrations/github-actions/) for the workflow basics.

## Revoke a share[¶](#revoke-a-share "Permanent link")

CLIConsole

Use the [apps:builds:unshare](/docs/cloud/cli/commands/#appsbuildsunshare) command to revoke the share link of a build:

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

Open the build's detail page, open the **Share Build** dialog, turn the toggle off, and click **Save**.

The link is invalidated immediately and the share page stops working.

Re-enabling sharing creates a **new** link — the previous link stays permanently disabled, even if you turn sharing back on. There is no way to restore an old link, so anyone still holding it loses access for good.

## Privacy[¶](#privacy "Permanent link")

Build sharing is designed to keep sensitive information out of reach:

* **Anyone with the link can access the share page.** Treat the link like a password and share it only with people you trust.
* **Build logs are never exposed** on the share page — only the metadata and installable artifacts.
* **Revoking a link takes effect immediately**, and re-enabling always mints a brand-new link that replaces the old one for good.

## Next steps[¶](#next-steps "Permanent link")

* [Install on a device](/docs/cloud/native-builds/install-on-device/) — device requirements for installing shared iOS and Android builds.
* [Build types](/docs/cloud/native-builds/build-types/) — which iOS types support the on-device **Install** button.
* [apps:builds:share reference](/docs/cloud/cli/commands/#appsbuildsshare) — every option for sharing from the CLI.

July 12, 2026 

Back to top

```json
{"@context": "https://schema.org", "@graph": [{"@type": "TechArticle", "@id": "https://capawesome.io/docs/cloud/native-builds/share-a-build/#article", "headline": "Share a Native Build", "name": "Share a Native Build", "description": "Share a native iOS or Android build from Capawesome Cloud via a public link, so external testers can view and install it without an account.", "inLanguage": "en", "url": "https://capawesome.io/docs/cloud/native-builds/share-a-build/", "mainEntityOfPage": "https://capawesome.io/docs/cloud/native-builds/share-a-build/", "author": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "publisher": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}}]}
```
