AppForShareGet started

Docs

Coming from BetaDrop

Most of what you use on BetaDrop has a place here: the publish line in your pipeline, standing links, the GitHub Action, the device registry, feedback, webhooks and followers. This guide maps each one and says which plan it needs.

  1. Step 1, Pro and Team

    Replace betadrop publish

    Make an API token in Dashboard, Settings, API tokens and store it as APPFORSHARE_TOKEN where BETADROP_TOKEN was. A token can be full, upload only or read only, with an end date of 1 to 365 days, like the read and publish tokens you may have used. Release notes and a channel are flags of the same upload command; --json prints the result for scripts.

    betadrop inspect has a counterpart too: npx appforshare check reads the build on your computer or runner and prints the store readiness check and why a phone would refuse it. Nothing is uploaded, and it needs no account.

    # before
    betadrop publish ./app.ipa --standing-link acmebeta --notes "Login fix"
    
    # after
    npx --yes appforshare upload ./app.ipa --channel beta --notes "Login fix"
    
    # check first, nothing uploaded
    npx appforshare check ./app.ipa --fail-on review
    CI guides for each service
  2. Step 2, One channel on Free, more on Pro and Team

    Standing links become channels

    A standing link that always opens the newest build is a channel here, such as Beta or Live: one link and QR code per channel, iPhones get the iOS build and Android phones the Android build. On Pro and Team you can pick your own address such as /c/acme-beta and put an older build back if a release goes wrong.

    Free accounts get one channel without a custom address or rollback, and the builds in it still expire after 7 days, so between uploads the link says there is no build. On Pro and Team builds stay live while you subscribe.

    npx appforshare upload app.apk --channel beta
    npx appforshare channel-address acme-beta --channel beta --app com.example.shop
    Beta and Live channels
  3. Step 3, Pro and Team

    The GitHub Action

    Swap betadrop-app/upload-action@v1 for appforshare/appforshare-action@v1. standing-link maps to channel, comment-on-pr to pr-comment (with GITHUB_TOKEN), notes to release-notes and inspect to check. The install-url output is url here, and standing-link-url is channel-url. fail-on: blocked stops the job when the store readiness check finds a blocker; the build stays uploaded.

    - uses: appforshare/appforshare-action@v1
      with:
        token: ${{ secrets.APPFORSHARE_TOKEN }}
        file: build/app/outputs/flutter-apk/app-release.apk
        channel: beta
        release-notes: ${{ github.event.head_commit.message }}
        check: true
        pr-comment: true
        github-token: ${{ secrets.GITHUB_TOKEN }}
    Upload from CI
  4. Step 4, Import on every plan, registration on Pro and Team

    UDIDs to Devices, then Apple

    Export your device registry with betadrop devices export in Apple's tab separated format and import that file into Devices in the dashboard, or with appforshare devices import on Pro and Team. On Pro, send new iPhone testers the onboarding link of the iOS project: their device is saved and, with an App Store Connect connection, registered on Apple in one click, and the ad hoc profile can be made again with every enabled device. On Team, Hands free also remakes the profile and starts the GitHub build.

    betadrop devices export > devices.txt
    npx appforshare devices import devices.txt
    iOS device registration
  5. Step 5, Every plan, more on Pro and Team

    Feedback

    Testers press Send feedback on the install page, or from inside the build through the in-app feedback link, with screenshots and no SDK. Reports land in one inbox. Star ratings and screen recordings come with Pro and Team, replies to the tester by email with Team, and Linear or Jira issues with Pro and Team.

    Tester feedback
  6. Step 6, Pro and Team

    Webhooks

    In Dashboard, Integrations, add Slack, Microsoft Teams, Google Chat, Discord, Telegram or a signed webhook. Events include build ready, build failed, installs, tester feedback, store review states and link.expiring, 24 hours before an install link stops. Deliveries are kept 30 days and can be sent again from the dashboard or with appforshare webhooks redeliver.

    Webhooks and integrations
  7. Step 7, Followers on Pro and Team, button on Free and up

    Followers and the download button

    Followers of a standing link do not move over. On Pro and Team the channel page has an "Email me new builds" box: people confirm by email, then get one plain email per new build, at most one every 6 hours. Share the new channel link once and ask them to follow it.

    For a README, Notion page or ticket, the build page has "Add a download button" with Markdown and HTML. A channel's button on Pro and Team shows the version of its newest build.

    npx appforshare badge acme-beta --markdown >> README.md
    Follow a channel by email
  8. Step 8, Pro and Team

    Links that expire there

    There is no import from BetaDrop, so upload again the builds your testers still need; old BetaDrop links keep working there until they expire. On Pro and Team a link stays live while you subscribe, and there is no cap on testers per app: downloads are counted as bandwidth per month. If you cancel, links follow Free rules and stay live 7 more days.

    Plans and limits

Questions

Can I import my builds from BetaDrop?
No. Upload again the builds your testers still need. Old BetaDrop links keep working there until they expire.
Is there a BetaDrop compatible upload API?
No. Replace the betadrop publish line with npx appforshare upload, the GitHub Action or the fastlane plugin. Uploads with a token are on Pro and Team. Scripts written for Diawi or Pgyer can use our compatible APIs.
Will my testers hit a limit?
There is no tester cap on any plan. Downloads count toward bandwidth per month: 10 GB on Free, 40 GB on Pro and 150 GB on Team.
Can I upload the .aab I converted before?
Upload the .aab itself with a free account: it becomes one APK testers install, signed with a test key, or with your own keystore on Pro and Team.
Do my testers need an account?
No. They open the link on the phone and install. On Team, invited testers of a private project get an emailed link, still with no account.

Weighing the two first? Read AppForShare vs BetaDrop. For the upload commands, see Upload from CI.