AppForShareCreate a free account

Every Codemagic build on your testers' phones, with no publishing script

Pro and Team

Codemagic builds your app and keeps the artifacts, but its download links in emails and dashboards last 24 hours, and testers get a file instead of an install page. A publishing script that uploads to AppForShare fixes that, if you use codemagic.yaml. Connect Codemagic needs no script at all, so it also works with the Workflow Editor.

You keep building on Codemagic exactly as before. AppForShare reads your finished builds with a Codemagic API token and shares them: a link that always opens the newest build, passwords, iPhone onboarding, feedback, the readiness check and the store steps.

Example

Connect Codemagic, Notes app

  • ios-adhoc, build 61Shared to Beta, ready
  • android-beta, build 61Shared to Beta, ready
  • TokenStored encrypted, never shown again
  • Last checked3 minutes ago
Release notes from the build, or the commit message with build number, workflow, branch and commit.

Made for

  • Flutter teams on the Codemagic Workflow Editor who never touch YAML
  • Teams with several Codemagic workflows who would rather not add a script to each one
  • Agencies that share Codemagic builds with clients

What it ends

  • Testers opening a Codemagic link from last week that has stopped working
  • Adding and maintaining an upload script in every workflow
  • iPhone testers getting an .ipa file to download instead of an Install button

How it works

  1. Step 1

    Paste the token once

    On a project's Testing page, an Owner or Admin pastes a Codemagic API token for the whole workspace. AppForShare checks it with Codemagic, stores it encrypted and never shows it again.

  2. Step 2

    Map a workflow

    Pick the Codemagic app and workflow that go to this project, and optionally a channel such as Beta.

  3. Step 3

    Build on Codemagic

    AppForShare checks the mapped workflows every 5 minutes. A finished build lands in the project with its install link, release notes and readiness result.

What it imports

One file per build and platform: the .ipa, and for Android the .apk, or the .aab when the build has no .apk. Each Codemagic build is imported once, within your plan's file size limit. Release notes come from the build's release notes, else from the commit message with the build number, workflow, branch and commit, and the build links back to its Codemagic build page.

Builds that finished before you mapped the workflow are not imported. An App Store signed .ipa lands as a store build, ready for an Admin to send to TestFlight.

Read only, and the token stays sealed

Codemagic documents no outgoing build webhooks, so AppForShare reads its Builds API every 5 minutes. It never starts, cancels or changes anything in Codemagic. The token is sealed like store keys, with its own data key wrapped by Google Cloud KMS. Disconnecting deletes it.

The token acts with your Codemagic role, as Codemagic's own docs say. Use a token of a person whose role fits what you want AppForShare to read.

Rather keep it in your workflow?

A publishing script works too. With CLI 1.20.0 or later, npx --yes appforshare@latest upload --if-success --channel beta skips failed builds, picks the newest build file and writes the release notes from the last commit. The steps are in the Codemagic guide.

Good to know

Questions

Do I need to change codemagic.yaml?
No. Nothing goes in the workflow, so it works with codemagic.yaml and with the Workflow Editor.
Can AppForShare start or cancel my Codemagic builds?
No. It only reads finished builds and downloads their files.
Where is the token kept?
Encrypted with its own key, wrapped by Google Cloud KMS, and never shown again. Disconnect deletes it.
Can I do it from the CLI?
Yes: appforshare codemagic connect --token-stdin --app <codemagic app id> --workflow <id> --project <id> --channel Beta, then codemagic status, and codemagic disconnect --yes to remove it.
Which plan do I need?
Pro or Team.

Read next

Try it on your own app

Free account in a minute. Pro starts with a 7 day free trial.

More features