Expo EAS
EAS builds on Expo servers. Ask for an internal distribution build, wait for it, download the file EAS made and upload it to AppForShare. Testers get your install page, channels and tester groups.
1. Add your token
Create an API token under Dashboard, Settings, API tokens (Pro and Team). In your CI, store EXPO_TOKEN (from expo.dev, Access tokens) and APPFORSHARE_TOKEN as secrets. The CLI reads it from the APPFORSHARE_TOKEN environment variable.
2. eas.json profile
Internal distribution makes an APK for Android and an ad hoc build for iOS.
{
"build": {
"preview": {
"distribution": "internal",
"android": { "buildType": "apk" }
}
}
}3. GitHub Actions job
eas build --json --wait prints the finished build, including artifacts.buildUrl.
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm ci
- name: Build on EAS
run: npx --yes eas-cli build --platform android --profile preview --non-interactive --wait --json > eas.json
env:
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}
- name: Share with testers
run: |
curl -sL "$(jq -r '.[0].artifacts.buildUrl' eas.json)" -o app.apk
npx --yes appforshare upload app.apk --notes "${{ github.event.head_commit.message }}" --channel beta
env:
APPFORSHARE_TOKEN: ${{ secrets.APPFORSHARE_TOKEN }}Good to know
- For iOS use --platform ios and save the file as app.ipa. Ad hoc builds only install on registered iPhones; AppForShare can collect UDIDs from testers and register them on your Apple account.
- Add --channel beta to keep one stable link for testers, and --fail-on blocked to stop the pipeline when the store readiness check finds a blocker (exit code 2; the build stays uploaded).
- The command prints the install link. Add --json for url, slug, version and channel as JSON. All options are on Upload from CI.
Questions
- Why not just send the EAS link?
- You can. AppForShare adds a branded install page with a QR code, channels with a link that never changes, install analytics, tester groups, a store readiness check and a test plan per build.
- Can I build an .aab with EAS and still share it?
- Yes. Upload the .aab and AppForShare turns it into one APK for testers.
Other CI systems
GitHub Actions and FastlaneCircleCIGitLab CIBitbucket PipelinesJenkinsAzure PipelinesXcode CloudCodemagicBitrise