Upload failures in TestApp.io typically fall into three stages: errors caught before the upload begins, interruptions during transfer, and processing failures after the file is received. This guide walks through each stage with specific error messages and fixes.

Stage 1. Pre-Upload Errors

These errors are caught immediately and displayed before any file transfer starts.

Missing API Token or App ID

If the CLI reports that your credentials are invalid or missing:

  1. Log in to portal.testapp.io.
  2. Copy your API Token from Profile → API Tokens.
  3. Copy your App ID from the app itself: open the app, then Integrations → Release → TestApp.io CLI → View Setup.
  4. Update your workflow config or CI/CD environment variables with the correct values.

File Not Found

The CLI reports it cannot locate the file at the specified path. To resolve:

  1. Verify the file path in your workflow config points to the actual built artifact (IPA or APK).
  2. In CI/CD pipelines, confirm the path is relative to the workspace root.
  3. Confirm the build step produces the file at the expected location before the upload step runs.

File Exceeds Plan Size Limit

🛑
Error: "The maximum release upload size for this team's plan is X"

Your file is larger than the upload size allowed on your current plan. Options:

Storage Quota Exceeded

🛑
Error: "This release will exceed your team's current storage."

Your team has reached its total storage limit. Options:

  • Archive older releases from the portal.
  • Upgrade your plan or connect external storage.

Bundle ID Mismatch

🛑
Error: "The bundle identifier does not match"

The bundle ID embedded in the IPA or APK must exactly match the bundle ID registered in TestApp.io. Check the app's settings in the portal and confirm your build configuration uses the same bundle identifier.

Duplicate Version Code

🛑
Error: "Version code already exists"

You cannot upload two releases with the same version code or build number. Increment the version code (Android) or build number (iOS) and rebuild before uploading.

IPA Signed with an App Store Certificate

⚠️
App Store distribution certificates are not supported. Your IPA must be signed with an Ad-Hoc, Enterprise (In-House), or Development provisioning profile.

Rebuild from Xcode using an Ad-Hoc or Enterprise export option.

Expired Provisioning Profile

⚠️
Error: "provisioning profile expired". The provisioning profile embedded in your IPA has passed its expiry date.

Regenerate the profile in the Apple Developer portal, embed it in your Xcode project, and rebuild.

Simulator Build Uploaded

⚠️
Simulator builds do not contain an embedded provisioning profile and cannot be processed by TestApp.io. Always archive a device build in Xcode (Product → Archive) and export with a device-compatible signing profile.

Stage 2. Upload / Network Issues

Network Interruption

💡
ta-cli handles most connection problems by itself. If the connection drops, it carries on from where the upload stopped. If nothing is sent for 90 seconds, it treats the connection as stuck and tries again. It gives up after 3 tries in a row that make no progress.

If it still fails, the error names the release that was created before the upload started. Running the command again creates a new release, so you may want to archive the empty one in the portal. Also make sure the upload is not being blocked by a firewall or proxy.

Upload Takes Longer Than 2 Hours

ta-cli stops an upload that takes longer than 2 hours in total and says how much the server had received. For very large files on a slow connection, raise the limit with --upload_timeout=4h or the environment variable TESTAPPIO_UPLOAD_TIMEOUT (works with Fastlane and the GitHub Action too). 0 turns the limit off. See Upload time limit in the ta-cli guide.

Uploading via the Portal. Keep the Tab Open

⚠️
When uploading through the TestApp.io web portal, keep the upload tab open and active until the release appears in your app's release list. Navigating away or closing the tab will cancel the in-progress upload.

Proxy, VPN, or Corporate Firewall

Some corporate proxies and VPNs interfere with large file uploads. If uploads consistently stall or fail midway:

  1. Try uploading from a different network (e.g., mobile hotspot).
  2. Temporarily disable your VPN and retry.
  3. If the issue only occurs in CI/CD, check whether your build agent routes outbound traffic through a proxy and configure the CLI to bypass it if needed.

Stage 3. Post-Upload Processing Failures

The file was received successfully, but processing failed. The release shows as 'failed' or never appears in the portal.

IPA: Provisioning Profile Not Found

The most common causes:

  • A simulator build was uploaded instead of a device build.
  • The IPA was re-signed with a third-party tool that altered the file structure.
💡
Fix: Rebuild from Xcode using Product → Archive, then export with a device-compatible signing profile (Ad-Hoc, Enterprise, or Development).

IPA: Info.plist Not Found

The IPA is corrupt or is not a valid iOS app archive. Rebuild from scratch and upload again. If the error persists, verify that the exported IPA is a standard Apple IPA format (a ZIP containing a Payload/ directory).

APK: AndroidManifest.xml Not Found

The APK is corrupt or is not a valid Android package. Rebuild from your Android project and upload a freshly generated APK.

File Size Mismatch

⚠️
The file size declared at the start of the upload did not match the size of the data received. This usually happens if the file was modified or replaced on disk while the upload was in progress.

Ensure no build process is writing to the same file during upload, and try again.

CI/CD Pipeline Tips

💡
These tips apply to all CI/CD integrations: GitHub Actions, Bitrise, CircleCI, Fastlane, and others.
  • Refresh your API token if your pipeline has been idle. tokens can be revoked from Profile → API Tokens in the portal.
  • Keep ta-cli up to date. If the output says "New version available" or "Update necessary due to breaking changes", see How to update.
  • Fastlane users: keep the testappio plugin up-to-date by running bundle update fastlane-plugin-testappio in your project directory.
  • GitHub Actions users: use testappio/github-action@v5. Older versions (@v3, @v4) install an old ta-cli.
  • Correct App ID: Use the App ID for the specific app you are targeting. It is easy to accidentally use a staging app ID in a production pipeline or vice versa.
  • Release notes length: the --release_notes field has a 1,200-character limit. Truncate longer notes before passing them to the CLI.


Need help? Contact us. we're happy to assist!