Docs
When a build fails
Bridge classifies build failures rather than handing you the raw log, so most of these have a name you can look up here. Work down the page — the ordering roughly matches the order in which a build hits them.
About 12 minutes
The categories Bridge reports
Every failed build is classified into one of these before you see it. Find yours here first — it tells you which part of the pipeline broke, and the rest of this page covers the ones with specific fixes.
| Category | Shown as | What broke |
|---|---|---|
no_fastlane_config | No Fastlane Config | Bridge never started the build — there is no Fastlane setup to run. See before the build starts. |
missing_distribution_credentials | Missing Credentials | Also pre-flight: the credentials for this platform are incomplete. See before the build starts. |
signing_error | Signing / Provisioning | Certificates or provisioning profiles. The big one — see signing failures. |
compile_error | Compile Error | Your source did not build. Nothing to do with Bridge or signing; read the log excerpt and fix the code. |
missing_dependency | Missing Dependency | A package manager could not resolve something — CocoaPods, SPM, Gradle or npm. Check the excerpt for which. |
toolchain_mismatch | SDK / Toolchain Mismatch | The installed Xcode or SDK version does not match what the project expects. Usually an Xcode upgrade away. |
unknown | Unclassified | The log matched no known pattern. The full log is kept in Build Status — read it there, and tell us, because an unclassified failure is a gap in the classifier. |
Before the build even starts
| Failure | What it means | Fix |
|---|---|---|
no_fastlane_config | No fastlane/Fastfile with a beta lane where Bridge looks for it. | Check Setup → Set Up Fastlane. For a Flutter project the Fastfile belongs in ios/ or android/, not the repo root. |
missing_distribution_credentials | The credentials for this platform are incomplete. | iOS needs Issuer ID, Key ID and the .p8 contents. Android needs the service account JSON. Check whether this project has opted into project-specific credentials — an override is never backfilled from the global set. |
| Tool not found on PATH | fastlane, xcodebuild or xcodegen is not where a GUI-launched app can see it. | Install via Homebrew, or symlink the binary into /usr/local/bin. Version-manager shims are not on the PATH Bridge inherits. |
Signing failures
These are the ones worth reading carefully, because two very different problems produce almost the same message.
Signing "YourApp" requires a development teamDEVELOPMENT_TEAMis not set in the Xcode project. Add it toproject.ymland re-runxcodegen generate, or set the team in Xcode's Signing & Capabilities tab. Setting Team ID in Bridge's Credentials only affects projects scaffolded afterwards.No profiles for '<bundle id>' were foundThis one has four distinct causes, and they are worth checking in order:
- No Apple Distribution certificate in your Keychain —
security find-identity -v -p codesigningshows onlyApple Development. Create one via Xcode → Settings → Accounts → Manage Certificates. - The bundle ID is not registered in the developer portal.
- No App Store Connect app record exists for that bundle ID.
build_appis missingxcargs: "-allowProvisioningUpdates", soxcodebuildwill not create the profile itself.
- No Apple Distribution certificate in your Keychain —
Archive succeeds, export fails
That combination is the signature of a distribution problem specifically: automatic signing can mint a development profile on the fly, so archiving passes on a development certificate alone. The export is where distribution requirements bite.
Upload failures
No value found for 'username'atupload_to_testflightThe lane is not authenticating with the API key. The generated Fastfile calls
app_store_connect_api_key(...)readingASC_KEY_ID/ASC_ISSUER_ID/ASC_KEY_CONTENTfrom the environment Bridge provides. A hand-written or older lane needs that step added.The build number is already in use
TestFlight rejects a second upload at the same build number. The generated iOS lane sets it from
latest_testflight_build_number + 1; keep that step, or bump it yourself. On Android,versionCodeis always yours to manage — Bridge does not touch it.A Ruby
SyntaxErrorin the AppfileIf a generated
Appfileended up with a doubled-quoted identifier —app_identifier(""org.cocoapods.…"")— every lane fails outright, not just bundle-ID-dependent ones. That came from a bundle ID mis-detected out of a CocoaPods project file. Fix theAppfileby hand: Bridge refuses to overwrite an existing one, so a repaired file stays repaired.
Bridge is using the wrong bundle ID
Bundle IDs are detected by scanning the project file, and a real project can list several: a test target's, or CocoaPods' org.cocoapods.${PRODUCT_NAME} placeholders. Bridge skips Pods/, Carthage/ and node_modules/ and ignores test-looking identifiers, but detection is best-effort.
If Check Setup shows an identifier you do not recognise, set the Bundle ID field in the Check Setup sheet. That override wins over detection everywhere — the checks, the generated Appfile, and the phone's copy of the checklist.
Pairing and tunnel problems
The QR code expired
Mint a new one. Codes are short-lived on purpose.
The phone shows the tunnel as not connected
Check Bridge is actually running — it has no Dock icon, so a quit Bridge is easy to miss. The menu bar item is the tell. Bridge reconnects on a 5-second retry, so a brief network drop recovers on its own.
Nothing recovers it
Unpair in Bridge and pair again. This clears the stored secrets on both sides and mints a fresh key — cheap, and it rules out a stale pairing.
Git operations fail
Bridge shells out to your system git and relies entirely on your Mac's existing auth — SSH agent or credential helper. If git pull works in Terminal but not in Bridge, the difference is almost always the environment a Finder-launched app inherits.
Still stuck
Open a ticket from the support portal with the failure category and the last dozen lines of the build log. Build history is kept in Bridge's Build Status section, so you can copy it out after the fact.