AppForShareGet started

Docs

Move from Loadly

Moving test builds from Loadly (loadly.io, run by Pgyer) is mostly a re-upload: send the builds still in testing again, map your install settings, give testers a channel link instead of a permanent one, swap the API script for the CLI and clean up what you left on Loadly. This guide covers each step and what it needs.

  1. Step 1, Every plan

    What changes

    Links follow your plan: 3 days without an account, 7 days on Free, and as long as you subscribe on Pro and Team. They do not live forever. In return every upload stays yours to remove, and a deleted build can be restored for 7 days. For a link that lasts, use a channel link: one address that always opens the newest build you put into it.

  2. Step 2, Every plan, CLI on Pro and Team

    Upload the builds still in testing

    Loadly links stay on Loadly, so upload each build your testers still need again: from the web page, or with the CLI when there are many. Files up to 150 MB work on Free; bigger builds need Pro (2 GB) or Team (4 GB). An Android .aab works too, with a free account: it becomes one APK testers install.

    For Flutter and React Native projects, run init once: it finds where your iOS and Android builds land and writes appforshare.config.json. Then one upload sends the newest .ipa and the newest .apk or .aab, each with its own notes.

    export APPFORSHARE_TOKEN=afs_your_token
    npx appforshare init --channel beta
    npx appforshare upload --ios-notes "Login fix" --android-notes "Login fix, Android 15"
    All CLI commands
  3. Step 3, Free, Pro and Team as noted

    Map your install settings

    Public install on Loadly is a plain link here, on every plan. Password install is a password per build (Free and up), or a password per extra link (Pro, up to 3 extra links per build; Team up to 20). Invite install is a private project that only invited testers can open (Team).

    Question and answer installs have no direct match: use a password, or give each audience its own extra link with its own password. An install end date is a stop date on the build or on an extra link (Pro and Team). There is no start date: share the link when the build should open, or pause the link and resume it at that time.

    npx appforshare link 12345 --stop 2026-12-31
    npx appforshare link add 12345 --label "Client A" --password "$CLIENT_A_PASSWORD" --max-installs 25
    Link controls
  4. Step 4, Pro and Team

    Short links become channels

    If your scripts set buildChannelShortcut to keep one short address per app, use a channel instead. A channel such as Beta has one link and QR code that always opens the newest build in it; iPhones get the iOS build and Android phones the Android build. Pick your own address such as /c/acme-beta. Putting an older build back into the channel is a rollback of the link.

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

    Swap the API script

    Replace the POST to https://api.loadly.io/apiv2/app/upload with the AppForShare CLI and an APPFORSHARE_TOKEN secret made in Dashboard, Settings. buildUpdateDescription becomes --notes, buildPassword becomes --password, and buildChannelShortcut becomes --channel. The GitHub Action and the fastlane plugin run the same upload. Calls to app/check become the in-app update check, a public JSON address per channel.

    Or keep the script and change its base URL: AppForShare answers the same API v2 calls at https://appforshare.io/api/ci/pgyer (app/upload, getCOSToken with buildInfo, app/check) with your AppForShare token in _api_key. Invitation installs and fields with no match here are ignored and listed in the answer. Up to 100 MB per request.

    npx appforshare upload app-release.apk --notes "Checkout fix" --password "$BUILD_PASSWORD" --channel beta
    # or keep the script, new base URL and token:
    curl https://appforshare.io/api/ci/pgyer/apiv2/app/upload -F _api_key=$APPFORSHARE_TOKEN -F [email protected] -F buildUpdateDescription="Checkout fix"
    In-app update check
  6. Step 6, Every plan, onboarding link on Pro and Team

    iPhone testers

    Testers need no account. Send them the free UDID finder at /udid and ask them to tap Remember this device: from then on every iOS install page says whether the build includes that iPhone. On Pro, each iOS project has an onboarding link that saves devices to your list, and with an App Store Connect connection you register them on Apple from the Devices page.

    Remember my iPhone
  7. Step 7, Every plan with an account

    Tester feedback

    Testers press Send feedback on the install page, or your test build opens the in-app feedback link from a debug menu or a shake. They write what happened and add up to 5 screenshots they can draw on; no SDK and no sign in.

    Tester feedback
  8. Step 8, Pro and Team

    Notifications

    Post new builds, installs, tester feedback and store events to Slack, Microsoft Teams, Google Chat, Discord or a signed webhook.

    Webhooks
  9. Step 9, Your choice

    Clean up on Loadly

    Delete the builds you uploaded to Loadly with an account, so old links stop handing out old builds. Builds uploaded there without an account cannot be removed by you: Loadly's help page says "Apps uploaded without an associated Loadly.io account cannot be disabled or deleted manually". If one of those must come down, contact Loadly.

    Loadly: deleting an upload

Questions

Do my Loadly links move over?
No. They stay on Loadly. Upload the builds your testers still need here and send the new links, or one channel link that keeps working for later builds.
Why do links expire here?
Links follow your plan: 7 days on Free and as long as you subscribe on Pro and Team. On Free, $2 once keeps one link live for 60 days. A channel link (Pro and Team) is the address to hand out for good.
My build is over 150 MB. What do I need?
Pro takes files up to 2 GB and Team up to 4 GB. The CLI sends big builds in parts and resumes after a dropped connection.
Do I need to send ID documents?
No. Sign up with email or Google. No ID card, passport or business license is asked for.
Can I upload zip or mp4 files?
No. AppForShare takes app builds only: .ipa, a zipped .app, .apk and .aab.
Can I still set a password per client?
Yes. A password per build works on Free. On Pro and Team, extra links give each client its own password, stop date and install cap.

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