eba-cli
v1.2.2
Published
Build iOS apps on Xcode Cloud without EAS limits — for Expo & React Native developers
Downloads
586
Maintainers
Readme
eba-cli — Xcode Cloud CLI for Expo & React Native
Trigger iOS builds on Xcode Cloud from your terminal — no Mac, no browser, no EAS build limits.
Works on Windows, macOS, and Linux. Built for Expo and React Native developers.
😤 The Problem
You're building an iOS app with Expo or React Native.
You hit the EAS free build limit — 15 builds/month — and you're not ready to pay $99+/month for EAS Production.
Or maybe you're looking for a free EAS Build alternative that doesn't require buying a Mac or setting up GitHub Actions from scratch.
Meanwhile, Apple gives every developer 25 compute hours/month of Xcode Cloud for free — that's roughly 75–100 iOS builds/month — just sitting there, unused.
The catch? Xcode Cloud is designed to be managed through Xcode IDE or App Store Connect web UI. There's no official CLI. Setting it up manually is slow and repetitive.
✅ The Solution
eba-cli is a CLI tool that automates Xcode Cloud for Expo & React Native developers.
npm install -g eba-cliOne-time setup:
eba prebuild # generate Xcode Cloud CI scripts
eba workflow # create workflow via API — no browser neededThen trigger builds from anywhere:
eba buildThat's it. No Xcode. No browser. No manual clicking.
🤔 Why eba-cli instead of EAS Build?
| | EAS Build (Free) | Xcode Cloud (via eba-cli) |
|---|---|---|
| iOS builds/month | 15 | ~75–100* |
| Cost | Free → $99+/mo after limit | Free with Apple Developer ($99/yr) |
| Setup | None | One-time CLI setup (eba workflow) |
| Customization | Limited | Full control via ci_scripts |
| Requires Mac | No | No — works on Windows & Linux too |
| Requires Xcode | No | No |
*Based on ~15 min average build time within 25 compute hours/month.
In short: If you're already paying for Apple Developer ($99/yr), Xcode Cloud is included. Use it.
🚀 Quick Start
Prerequisites
- Node.js >= 18
- Apple Developer account ($99/yr)
- Your app registered on App Store Connect
- Xcode Cloud enabled: App Store Connect → your app → Xcode Cloud → Get Started
Step 1 — Install
npm install -g eba-cliStep 2 — Add your App ID to eas.json
{
"submit": {
"production": {
"ios": {
"ascAppId": "YOUR_APP_STORE_CONNECT_APP_ID"
}
}
}
}Find your
ascAppId: App Store Connect → My Apps → select your app → copy the number from the URL.
Step 3 — Generate CI scripts
eba prebuild
git add ios/ && git commit -m "chore: add xcode cloud ci scripts" && git pushStep 4 — Create your Xcode Cloud workflow
eba workflowThis will:
- Log in to your Apple account and create an ASC API key (first run only — saved locally)
- Detect your app and connected GitHub repository
- Ask a few questions (workflow name, scheme, branch trigger, TestFlight distribution)
- Create the workflow via API and print a direct link
✅ Workflow created successfully!
Name: Production Build
ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Track: https://appstoreconnect.apple.com/teams/.../apps/.../ci/workflows/...
Run "eba build" to trigger your first build.Step 5 — Trigger builds
eba build📖 All Commands
eba build
Trigger an Xcode Cloud build from your terminal.
eba build
eba build --env productioneba prebuild
Generate ios/ci_scripts/ required by Xcode Cloud.
eba prebuildCreates:
ci_post_clone.sh— installs Node, npm deps, CocoaPodsci_pre_xcodebuild.sh— syncs Manifest.lock, sets build numberci_post_build.sh— logs build metadata
eba workflow
Create an Xcode Cloud workflow via API.
eba workflow # create new workflow
eba workflow --setup # re-run API key setupeba devices
List or register iOS/iPadOS devices.
eba devices # list all
eba devices --register # register via QR code or manual UDIDQR code flow: CLI starts a local server → scan with iPhone → install profile → UDID captured automatically.
eba certs
List or revoke iOS certificates.
eba certs
eba certs --revokeeba profiles
List or delete iOS provisioning profiles.
eba profiles
eba profiles --deleteeba bundle-ids
List or register bundle IDs.
eba bundle-ids
eba bundle-ids --filter com.example
eba bundle-ids --capabilities
eba bundle-ids --register💡 Bonus Tips
Auto-build on push to main:
During eba workflow, choose "On push to a branch" → main. Every PR merge will trigger a build automatically — no need to run eba build manually.
Re-trigger a build without new code:
eba build # retriggers from current HEAD — useful to retry a failed buildApple ID session caching:
Apple login is cached for 1 hour. You won't be prompted again within that window.
TestFlight distribution:
During eba workflow, choose "TestFlight Internal Testing" or "TestFlight & External Testing" — the workflow will automatically prepare your build for distribution after archiving.
☕ Support
Did this tool save you time or money?
If it helped you dodge the EAS build limit, avoid buying a Mac, or just made your day a little easier — a coffee would mean a lot.
👉 github.com/sponsors/kingasawa
Your support keeps this project alive and the AI fed. Thank you ☕
❓ FAQ
Q: Can I use eba-cli on Windows or Linux without a Mac?
Yes. eba-cli runs on any OS that has Node.js. You do not need Xcode or a Mac to trigger builds — Xcode Cloud runs on Apple's servers.
Q: Do I need an Apple Developer account?
Yes. Apple Developer Program membership ($99/year) is required to use Xcode Cloud. The compute hours are included at no extra cost.
Q: How is this different from EAS Build?
EAS Build is a paid service by Expo. The free tier is limited to 15 iOS builds/month. eba-cli uses Xcode Cloud — Apple's own CI/CD, free with your Developer account — and gives you a CLI interface to manage it.
Q: How is this different from GitHub Actions?
GitHub Actions for iOS requires a macOS runner (~$0.08/min), which adds up fast. Xcode Cloud compute hours are already included in your Apple Developer subscription with no per-minute cost.
Q: Is eba-cli an official Apple tool?
No. It's an open-source CLI that uses the official App Store Connect REST API to automate Xcode Cloud workflow management.
Q: What happens after I hit EAS free build limit?
You can switch to eba-cli + Xcode Cloud. Run eba workflow once to set up, then eba build to trigger builds — same experience, no extra cost.
Q: Does it support React Native (non-Expo) projects?
Yes, as long as you have an .xcworkspace or .xcodeproj file in your ios/ folder.
Q: What is the eba prebuild command for?
It generates the ci_scripts/ folder that Xcode Cloud requires to install Node.js dependencies and CocoaPods during the build process. Without it, the build will fail at the dependency install step.
License
MIT + Commons Clause — free to use for personal and commercial projects. You may not republish or sell this tool as your own.
Changelog
v1.2.2
eba workflowfully automated — workflow creation now happens entirely via the App Store Connect API. No more manual steps in Xcode or the browser.- Auto-creates an ASC API key on first run (saved locally, reused automatically)
- Detects your Xcode Cloud product and connected GitHub repository
- Supports connecting a new GitHub repository directly from the CLI prompt
- Polls for repository access confirmation automatically after GitHub OAuth
- Prints a direct link to the created workflow on App Store Connect
v1.2.1
eba workflowprovided a step-by-step guide to create workflows manually via App Store Connect web UI
v1.2
eba prebuildgeneratesci_scripts/required by Xcode Cloud for Expo & React Native projects
v1.0
- Initial release — trigger Xcode Cloud builds from your terminal with
eba buildafter manual workflow setup
