AppForShareGet started

Docs

Coming from Updraft

Most of what you use on Updraft has a place here: the upload line in your pipeline, environments, the Gradle and fastlane setup, testers and groups, notifications, feedback, single sign on and storage. This guide maps each one and says which plan it needs. Updraft facts are as listed on November 9, 2026.

  1. Step 1, Pro and Team

    Replace the curl upload

    Updraft's upload, as listed on November 9, 2026, is a curl PUT with the app key and the API key in the URL. Make an API token in Dashboard, Settings, API tokens and store it as APPFORSHARE_TOKEN in your CI secrets. A token can be full, upload only or read only, with an end date, and it travels in a header instead of the URL. whats_new becomes --notes, and the target environment becomes --channel.

    # before
    curl -X PUT https://app.getupdraft.com/api/app_upload/<app key>/<API key>/ \
      -F [email protected] -F whats_new="Login fix"
    
    # after
    export APPFORSHARE_TOKEN=afs_your_token
    npx --yes appforshare upload app.ipa --notes "Login fix" --channel beta
    Upload from CI
  2. Step 2, One channel on Free, more on Pro and Team

    Environments become channels or projects

    An Updraft environment such as Test, Staging or Production maps to a channel here, such as Beta or Live: one link and QR code per channel that always opens its newest build, with the iOS build for iPhones and the Android build for Android phones. On Pro and Team you can pick your own channel address and put an older build back. If an environment is really a separate app, for example with its own bundle ID, make it a project of its own.

    npx appforshare upload app-staging.apk --channel staging
    npx appforshare upload app-release.apk --channel live
    Beta and Live channels
  3. Step 3, Pro and Team

    Gradle, fastlane, Bitrise and GitHub Actions

    Gradle: replace the plugin com.appswithlove.updraft and its updraftUrls per variant with io.appforshare.upload from the Gradle Plugin Portal. Every variant gets appforshareUpload<Variant> for the APK and appforshareUpload<Variant>Bundle for the .aab.

    fastlane: replace the updraft action you load with import_from_git with our plugin from RubyGems (fastlane add_plugin appforshare) and its appforshare action. Bitrise: replace the Deploy to Updraft step with a Script step that runs the CLI. GitHub Actions: replace the Updraft deploy action with appforshare/appforshare-action@v1.

    // app/build.gradle.kts
    plugins {
        id("com.android.application")
        id("io.appforshare.upload") version "1.0.0"
    }
    appforshare {
        releaseNotes = "Login fix"
        channel = "beta"
    }
    // APPFORSHARE_TOKEN=afs_... ./gradlew appforshareUploadRelease
    
    # fastlane
    appforshare(release_notes: "Login fix", channel: "beta")
    
    # GitHub Actions
    - uses: appforshare/appforshare-action@v1
      with:
        token: ${{ secrets.APPFORSHARE_TOKEN }}
        file: build/app/outputs/flutter-apk/app-release.apk
        channel: beta
    Bitrise guide
  4. Step 4, Team

    Testers and distribution groups

    Save your tester list as a CSV, one email per line (the same shape Updraft's CSV import takes), and import the file. Semicolons are fine. A file with a header row can also carry names and a groups column. Updraft distribution groups map to tester groups, which come with Team; --groups puts everyone in the file into the groups you name, and groups are made when missing. No invites go out unless you add --notify.

    npx appforshare testers import updraft-testers.csv --project 42 --groups "QA,Clients"
    Tester groups
  5. Step 5, Pro and Team

    iPhones: onboarding link, Apple registration and re-signing

    Send new iPhone testers the onboarding link of the iOS project once. Their device is saved and, with an App Store Connect key connected, registered on Apple in one click, and the ad hoc profile can be made again with every enabled device. Then re-sign the build you already uploaded with the new profile, no rebuild, from the build page or with appforshare resign. On Team, Hands free registers new devices, remakes the profile and re-signs the newest build (or starts your GitHub build) on its own.

    npx appforshare resign AbC123 --yes
    Re-sign iOS builds
  6. Step 6, Pro and Team

    Slack, Teams, Discord, Webex and webhooks

    In Dashboard, Integrations, add Slack, Microsoft Teams, Google Chat, Discord, Telegram, Webex or a signed webhook. Events include build ready, build failed, installs, tester feedback, store review states and link reminders.

    Webex steps
  7. Step 7, Feedback on every plan, update check on Pro and Team

    Feedback and update prompts without an SDK

    Updraft's SDK adds shake to send feedback and an in-app update prompt. Here, testers press Send feedback on the install page, or open the project's in-app feedback link from your debug menu or shake handler, with screenshots and no SDK. For update prompts, the update check is a few lines of Swift, Kotlin, Dart or JavaScript that read the channel's newest build.

    https://appforshare.io/feedback/<token>?platform=ios&version=2.5&build=121&screen=Checkout
    https://appforshare.io/api/c/YOUR_CHANNEL/latest?platform=ios
    Update check
  8. Step 8, Team, desktop builds on Pro and Team

    Single sign on, storage, mail and desktop builds

    On Team: single sign on with SAML 2.0 or OpenID Connect and group mapping, storage in the European Union or in your own S3 or Google Cloud Storage bucket, tester email through your own mail server, and a rule that every member uses two step sign in. macOS and Windows builds come with Pro and Team.

    Single sign on
  9. Step 9, Pro and Team

    Store upload, and what comes after it

    Send a build to TestFlight or to a Google Play track from the build page or with appforshare store-upload, on Pro. After the upload, AppForShare also follows the release: the store readiness check on every build, the App Store review card, Play rollouts, store reviews and the release status, with alerts in your chat.

    npx appforshare store-upload AbC123 --to testflight --yes
    npx appforshare store-upload Xy9Kp2 --to play:internal --yes
    Store upload

Questions

Can I import my builds from Updraft?
No. Upload again the builds your testers still need. Your Updraft links keep working there for as long as your Updraft account keeps them.
Is there an Updraft compatible upload API?
No. Replace the curl line with npx appforshare upload, the Gradle plugin, the fastlane plugin or the GitHub Action. Uploads with a token are on Pro and Team.
How do the prices compare?
As listed on November 9, 2026, Updraft charges $5 a month plus $5 per GB stored on Pay as you go, and $49 a month plus $5 per GB on Professional. AppForShare Pro is $12 a month ($120 a year, $5.99 in regional countries) with 25 GB of storage and 40 GB of downloads a month included; Team is $39 a month with 150 GB.
Will my testers hit an install limit?
AppForShare does not cap installs. Downloads count toward bandwidth per month: 10 GB on Free, 40 GB on Pro and 150 GB on Team.
Do my testers need an account?
No. They open the link and install. On Team, private projects send invited testers an emailed link, still with no account.

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