How reports and held builds work
Every plan
Install links ask testers to trust a build from someone they may not know. When a build looks wrong, a tester should be able to say so, and a developer should not lose a working build to one angry or mistaken click.
So every report needs a reason, an automated review helps our team sort reports, and a person always decides. Builds on paid plans keep working until several different people report them.
Example
Report, Shop 2.4.0 (88)
- ReasonScam or phishing: asks for bank login on start
- Automated reviewUnclear, staff note added
- Plan rulePro: warning email to owner, build keeps working
Made for
- Testers who want to report a build that looks harmful or stolen
- Developers who want to know what happens when their build is reported
- Teams choosing a sharing service for outside testers
What it ends
- Reports with no reason that nobody can act on
- A paid build taken offline by a single report
- Not knowing who decides and how
How it works
Step 1
A tester reports with a reason
"Report this app" on the install page, in 13 languages: a category (spyware or malware, scam or phishing, stolen app or copyright, inappropriate content, other) and at least 20 characters of text, behind a human check and rate limits.
Step 2
An automated review sorts it
The report and the build's details (app name, bundle ID, platform, permissions in plain words, security check findings, earlier reports) go to Google Gemini, which answers likely real, unclear or likely junk with a two line note for our staff. Never the reporter's email or IP.
Step 3
A person decides
Our staff see the verdict, the note and the counts, and release or remove the build. The AI never removes, deletes or releases anything.
What a report does to a build
Guest and Free builds: a report reviewed as likely real or unclear holds the build, so its link takes no installs, and the owner gets an email with the reason category and text, never who reported. A guest build shows the hold on its manage page. A likely junk report does not hold the build and goes to the staff queue only.
Pro and Team builds: each likely real or unclear report sends the owner a warning email with the reason, at most one an hour per build, and the build keeps working. Once 5 different people have such reports open, the build is held and the owner is emailed. Likely junk reports do not count. If the automated review is not available, a report counts as unclear.
Channels skip a held build, and the owner cannot lift a hold. When staff clear a build, older reports never count again and new ones count from zero. The release email says the link works again.
Other upload rules
A file our staff removed for abuse cannot be uploaded again: the same file is refused. Guest Android uploads that ask for a set of permissions typical of covert surveillance, such as reading SMS and the call log together with an accessibility service, are held for a person to review before anyone can install them. Builds with the app ID of big companies that do not ship test builds here, or known malware app IDs, are refused at upload.
Every upload, on every plan, is also checked for known malware right after the link is issued, and a match is held for a person in the same way. See the malware check for what it covers. Testers should still install builds only from people they trust.
Good to know
- Reports and the malware check work together: the check finds malware that is already known, and reports catch what a person notices.
- The automated review only helps staff sort reports. It never decides.
- iOS builds and account uploads are not screened by permissions.
Questions
- Will one report take my build offline?
- On Pro and Team, no: the build is held only when 5 different people have open reports that were not reviewed as junk. On Guest and Free, a report reviewed as likely real or unclear holds the build until staff decide.
- Will I learn who reported my build?
- No. You get the reason category and text, never the reporter.
- Does AI remove builds?
- No. It sorts reports for our staff. A person decides every release and removal.
- What does Gemini see?
- The report text and the build's details, never the reporter's email or IP address. Instructions written inside a report are ignored.
Read next
Try it on your own app
Free account in a minute. Pro starts with a 7 day free trial.
More features
- Builds on GitHub Actions
- Flutter builds on GitHub Actions
- Flutter facts and checks
- Security scan on every build
- Connect Expo (EAS builds)
- Connect Codemagic
- Send store builds to TestFlight and Google Play
- TestFlight groups and beta review on send
- TestFlight feedback in your inbox
- iOS device registration
- Hands free device setup
- Store listing editor
- App Store submission
- Google Play releases
- TestFlight tester sync
- Tester app with notifications
- Tester groups and status
- Join links for testers
- Beta and Live channels
- Build history page
- Tasks and activity feed
- Feedback to Linear and Jira
- Release checklist, approvals and blockers
- Release page per version
- Install link controls
- Several links per build
- Retire a test build
- TestFlight and APK in one link
- Install page in 13 languages
- In-app update check
- .aab uploads
- MCP server for AI tools
- Tester feedback with screenshots
- In-app feedback link
- AI test plan for each build
- Diawi compatible upload API
- Remember my iPhone
- Install help and why it failed
- Email the install link
- Custom channel address
- Verified publisher
- Daily install email
- Zipped .app upload
- Manage link for guest uploads
- Test accounts on the install page
- Telegram notifications
- Permissions in plain words
- Reply to testers and star ratings
- Follow a channel by email
- Download button for a README
- Store pages
- Check a build before upload
- Token scopes and CLI tools
- Upload from Claude or ChatGPT
- Passkeys and email code sign in
- Free build tools
- Malware check on every upload