# AppForShare > AppForShare shares mobile app builds for testing. Upload an Android .apk or an iOS .ipa, get an install link and a QR code, and testers install the app over the air on their phone. No app store review, no extra app for testers. Official website: https://appforshare.io Company: ZenTalk LLC, 7211 Regency Square Blvd, Ste 221, Houston, TX 77036, United States Support: support@appforshare.io, https://appforshare.io/contact ## What it is and is not - A beta and test build distribution service for iOS and Android apps, used by developers, agencies and QA teams. - iOS: over the air install works for builds signed Ad Hoc (device UDID in the provisioning profile), Enterprise or Development. App Store and TestFlight builds cannot be installed from a link, and AppForShare does not re-sign builds. - Android: testers allow installs from unknown sources for their browser once, then install the APK. - It is not an app store, not general file sharing, not a signing service and not a crash reporter. There is no in-app SDK: in-app feedback and the update check are web addresses the test build opens or reads. - Builds are stored on Google Cloud Storage in the US, in a private bucket, and served only through signed, short lived links. Links can be password protected. - Store readiness check: every build uploaded to an account is checked against current App Store and Google Play rules (iOS SDK version, privacy manifests and required reason APIs, Android target API level, 16 KB page size for native libraries, debug signing, 64-bit). Each issue comes with how to fix it. It is guidance, not a promise of store approval. - What changed: for every build, a list of what changed since the previous build of the same app (version, permissions, minimum OS, target API, SDKs, frameworks, size, provisioned devices). - AI features (Google Gemini): a step by step fix plan for readiness issues, a draft of tester notes plus store "What's New" text from the changes, reply drafts for App Store and Google Play reviews, and a launch kit that writes the App Store and Google Play listing (name, subtitle, promotional text, keywords, full descriptions) from a short brief, cut to each store's limits. It adds the fixed notices the stores expect at the end of the description: auto-renewable subscription terms (on the App Store: price, period, renewal, Terms of Use and Privacy Policy links; on Google Play: renewal and how to cancel), in-app purchases, background location, Bluetooth, health features (Apple Health or Health Connect, with the not a medical device notice), a required device, app extensions on iOS, and the Accessibility API or VPN service on Android. The notices follow the published App Store Review Guidelines and Google Play policies as of October 2026. Metered as AI actions per month by plan. Drafts are suggestions to review before use. - Client projects (Pro: 2 active client projects, Team: no limit, Free: not included): add the client you build an app for to its project. The client gets an email link that signs them in to a client portal, no account or password; each sign in link works once (15 minutes from the portal login, 7 days in the first invite email) and asking for a new one voids older unused links. In the portal the client sees the tasks marked visible to the client on a board (To do, In progress, In review, Done) with the comments marked for them, every delivery with its numbered versions (an AppForShare build to install, a file up to 25 MB with its SHA-256, or a link), and leaves feedback on each version. The client can install builds of the project even when the project is private to invited testers. The team keeps internal tasks and comments, assigns tasks, gets the client's feedback by email, and sees an activity log of every change and sign in. A project marked complete becomes read only for both sides and frees its slot. The workspace can sign the client out everywhere or remove them, which ends access at once. Agreements and sign-offs: the workspace writes a kickoff agreement for the project and, if it wants, an agreement per delivery, and can ask the client to sign off a version; the sign-off text is written by AppForShare from the version (project, delivery, version number, the build's version, bundle id or package name and the SHA-256 of the .ipa or .apk, or the file and its SHA-256, plus the release notes). The client reads the text in the portal and signs by drawing or typing their name, after ticking a consent line. If the text changed after the client opened it, the signature is refused and the client is shown the new text. Each signature records the exact text and its SHA-256, the signer's name (and company and job title when asked), the email address proven by the sign in link, IP address, browser and time, and produces a signed PDF that both sides get by email and can download later. Signed agreements and signed off versions cannot be edited or deleted. The workspace can revoke a signature (the client is emailed); the signed PDF and the record stay. Signed PDFs carry the AppForShare document seal, a standard PDF digital signature with a certificate AppForShare issues itself, so a PDF reader shows whether the file changed after it was signed. Anyone can check a signed PDF at https://appforshare.io/verify: the file is hashed in the browser and never uploaded, and a match shows the document title, the workspace, the signer's name, the date and whether it was revoked. Clients get an email reminder when something waits for their signature for 3 days, and again at 7 days. The workspace can download an evidence report for a project: one sealed PDF with its own verification code (AFS-XXXX-XXXX-XX) holding the project and client, every signature with what was recorded, the activity timeline and each signed PDF with a check that it is unchanged, plus the same data as JSON. A project cannot be marked complete while a document waits for a signature. AppForShare records the signature; it does not give legal advice, and whether an electronic signature binds depends on the law that applies to the agreement. - Store connections (Pro and Team): connect App Store Connect with a team API key, or Google Play by inviting the workspace's own AppForShare service account in Play Console (or uploading a service account key). No Apple or Google password is ever asked for. Keys are encrypted with Google Cloud KMS and never shown again. The workspace sees only the apps chosen at connect time, every call to Apple or Google is logged, and the connection can be removed at any time. A connection test shows what the key can do (apps, release status, builds, reviews, device registration). Team workspaces can send a client a one time invite link, so the client connects their own account and keeps a view where they pick the shared apps, see the activity and disconnect. Release status (Pro and Team) shows, per shared app, App Store versions with their review state, recent builds with TestFlight state, and each Google Play track with rollout percentage and Play review state. Apple changes arrive in real time through a webhook AppForShare adds to the shared app; Google Play is checked every 30 minutes. Changes are emailed to the workspace owner and can be sent to Slack, Discord or webhooks. The reviews inbox (Pro and Team) collects App Store and Google Play customer reviews of the shared apps every 6 hours and keeps them from the first check on (Google Play itself only returns the last 7 days, and only reviews with a written comment). Filter by app, stars and needs reply or replied, write a reply, or get an AI draft in the reviewer's language that follows the workspace's reply notes (support address, sign off, known fixes); each draft uses one AI action. A person always posts the reply; nothing is sent automatically. Replies can be changed later, and deleted on the App Store (Google Play does not allow deleting). New reviews can be sent to Slack, Discord or webhooks. Store connections change things in the store only when a person starts it: posting a review reply, TestFlight tester sync, registering devices and remaking ad hoc profiles, editing App Store and Google Play listing text and graphics, getting an App Store version ready, sending it for review, canceling the review and releasing it (an Admin of the workspace presses the button), and for GitHub builds setting the repository's Actions secrets, opening the workflow pull request and starting a run. AppForShare never submits or releases on its own; Google Play releases change only when a workspace Admin confirms an action on the Google Play releases page. - Two step sign in (every plan): any account can turn on an authenticator app code (TOTP) with 10 one time recovery codes in Settings, Security. Staff admin accounts must use it. - CI: the CLI (npm package appforshare), the GitHub Action appforshare/appforshare-action@v1 and the Fastlane plugin fastlane-plugin-appforshare upload builds with an API token (Pro and Team), list builds, print the newest link and the store readiness result, and can fail the pipeline when readiness is blocked. The build stays uploaded. They can also put a build into a channel (upload --channel beta, promote --channel live). CLI 1.9.0 adds tester commands (testers, groups, distribute, upload --groups and --testers, Team), devices import and export, and test-plan (Pro and Team). A Gradle plugin (id io.appforshare.upload, tasks appforshareUpload for the APK and appforshareUploadBundle for the .aab) is available soon on the Gradle Plugin Portal; fastlane tester, group, UDID and latest build actions come in the next plugin release. CLI 1.10.0 adds upload --email (up to 5 addresses, Pro and Team), --password, --comment (same as --notes), and the commands email, installs and channel-address; the GitHub Action takes email and password inputs and fastlane email: and password:. CLI 1.11.0 adds init (writes appforshare.config.json with where the iOS and Android builds land, found for Flutter, React Native and native projects, and an optional channel); upload with no file then sends the newest .ipa and the newest .apk or .aab in one run, upload sends the newest build in a folder, with --ios-notes and --android-notes; the GitHub Action takes a folder or no file, ios-release-notes and android-release-notes, and outputs ios-url and android-url. CLI 1.11.0 also has link add, link list, link edit and link rm for extra share links, and retire (--undo to bring a build back). A Jenkins plugin and a Bitrise step are coming and not published yet; both CI systems work today with the CLI in a shell step. - Channels (Pro and Team): put builds of a project into channels such as Beta and Live. Each channel has one link and QR code that never change and always open the newest build put into it; an iPhone gets the iOS build and an Android phone the Android build when the two apps are paired (automatic when the bundle id and package name match). Putting an older build back into a channel points the link at it again. - Tester groups and status (Team): put testers in groups such as Client QA and give a group its projects in one step. For each project, see which testers were invited, opened the link, installed an older build or have the newest one, and email a reminder to those behind (at most one per tester per project every 12 hours). - TestFlight tester sync (Team, needs an App Store Connect connection): link a tester group to an external TestFlight group of a connected app, new or existing. Members are added to the TestFlight group with their email and name, members who leave are taken out (only the ones AppForShare added), and Apple's status for each tester (invited, accepted, installed) shows in AppForShare. A person can give a processed build to the group and submit it for TestFlight beta review from the project's Testing page. Apple sends the TestFlight invite itself. - Test devices on Apple (Pro and Team, needs an App Store Connect connection): register saved iPhone and iPad UDIDs on the connected Apple developer account in one click. AppForShare shows how many of Apple's 100 slots per device type are used this membership year (disabled devices still count) and refuses to go past the limit. Ad hoc and development profiles that are missing devices can be made again with every enabled device; the developer then builds again (AppForShare does not re-sign builds; Xcode managed profiles are left to Xcode). - App Store listing (Pro and Team, needs an App Store Connect connection): edit the name, subtitle, promotional text, description, keywords, what's new and support, marketing and privacy URLs of a version being prepared, per language, with Apple's character limits shown; add languages and start a new version. Promotional text can also be changed on the live version (it shows at once). Screenshots: upload PNG or JPEG, each file goes into the App Store size it matches, transparency is removed, up to 10 per size, reorder and delete. AI translation (Gemini) from one language into as many others as picked, 1 AI action per language; keywords are chosen for each language, URLs are copied, and nothing is saved until a person reads it and presses Save. Every field change is kept with the text it replaced and can be put back. - iOS builds on GitHub Actions (Pro: up to 2 repositories, Team: no limit; iOS and Android of one repository count once; needs an App Store Connect connection): install the AppForShare Builds GitHub App on chosen repositories, and an Admin sets up a repository (workspace or project, scheme, Team ID filled from the bundle ID, ad hoc to AppForShare or App Store to TestFlight, any branch, optional Node.js version and setup commands for CocoaPods, Flutter or React Native, build number from the project, the date and time or the run number, optional version). AppForShare stores the App Store Connect key and an upload token made for that repository as encrypted Actions secrets and opens a pull request with the workflow; it never pushes to branches or merges. After the merge, Developers start builds with release notes and a channel; the run uses the repository's own Actions minutes on a macOS runner, Xcode signs with automatic signing (ad hoc profiles include every registered device) or with the person's own distribution certificate on the app target only (AppForShare reads or makes the profile from Apple before each run), and AppForShare shows status, who started it, the log link and the resulting build. Removing the setup deletes the secrets and revokes the token. A client's key connected through an invite link is never copied into a repository. Guide: https://appforshare.io/docs/github-builds - Android builds on GitHub Actions (Pro and Team, same page and same repository limit): an Admin sets up a repository for Android next to iOS (Gradle folder, app module, variant like prodRelease, Java and Node.js versions, setup commands, version code from the project or the run number, optional version name). The run builds on the repository's own Actions minutes on a Linux runner and signs with the person's upload keystore, added as GitHub secrets that AppForShare never sees, or with the project's own Gradle signing. The .apk goes to AppForShare for an install link, or the .aab is uploaded by the runner straight to Google Play (into an edit AppForShare opens, so the file never passes through AppForShare) and AppForShare releases it on a Google Play track (internal, closed, open, or production as a draft the person rolls out) with the workspace's Play connection; the Play key is never copied into the repository. Guide: https://appforshare.io/docs/github-builds - App Store review (Pro and Team, same page): for a version being prepared, pick a processed build of that version, answer export compliance, fill in the App Review contact, sign in details and notes, and choose the release (as soon as approved, by hand, or on a date) and a 7 day phased release. A checklist shows what Apple needs (build, compliance, contact, description, keywords, support URL, what's new on updates, privacy policy URL, iPhone screenshots); Apple checks the rest (age rating, App Privacy, price) and its answer is shown as is. An Admin of the workspace sends the version with the workspace's own App Store Connect key after ticking a confirmation; it can also cancel a review that has not started, release an approved version and pause, resume or finish a phased release. Each step is kept with the person who took it. AppForShare never sends anything on its own and Apple decides every review. - Google Play listing (Pro and Team, needs a Google Play connection, same page): edit the app name, short description, full description and YouTube video per language, with Google's character limits; add or remove languages; contact email, phone and website. Graphics per language: app icon, feature graphic, phone, tablet, TV and Wear OS screenshots and TV banner, checked against Google's size rules before upload, with reorder and delete. Google Play has no draft version, so each save is committed to Google Play, reviewed by Google and then live; only workspace Admins can make changes, and AppForShare never cancels changes that are already in review. The same AI translation and change history as the App Store editor. - iOS device onboarding link (Pro and Team): one link per iOS project. A tester opens it on the iPhone, leaves an email, and installs the UDID profile; the device lands in the workspace's devices and the owner is emailed. When a build of that project that includes the device is uploaded, the tester gets one email with the install link. - Links do not live forever: guest 3 days, Free 7 days, Pro and Team while the plan is active. - App and push notifications (every plan, account needed): AppForShare can be added to the home screen of iPhone, iPad (iOS 16.4 or later, from Safari's Share menu), Android and desktop browsers as an installable web app; it is not in the App Store or Google Play. Each person turns on push notifications per device in Settings and picks the kinds they want: a build shared with them (a new build in their team, or in a project they are an invited tester of when the tester email matches their account, plus team and tester invites), their own upload ready or failed, installs of their builds (at most one per build per hour), Free link expiry, App Store and Google Play release status, new store reviews, client work (feedback, signatures, assigned tasks, updates on projects shared with them) and account notices (bandwidth, trial and plan, custom domain, webhook switched off). Notifications come next to the emails, not instead of them. ## Primary pages - [Home and upload](https://appforshare.io/): upload a build and get an install link - [Pricing](https://appforshare.io/pricing): plans and every limit - [UDID finder](https://appforshare.io/udid): free tool to read the UDID, IMEI and serial number of an iPhone or iPad from Safari - [IPA inspector](https://appforshare.io/tools/ipa-inspector): free tool that reads an .ipa in the browser (not uploaded) and shows the bundle id, version, provisioning profile type, team, certificate and expiry, provisioned device UDIDs, entitlements, permission texts, frameworks, and the same App Store readiness check AppForShare runs on uploaded builds - [App Store and Google Play deadlines](https://appforshare.io/tools/store-deadlines): dated list of store rules that can block an upload (Xcode 26 and iOS 26 SDK since April 28, 2026; minimum iOS 13 since September 9, 2026; target API 36 since August 31, 2026; 16 KB page size for updates from February 1, 2027; Android developer verification, first countries September 30, 2026, worldwide 2027), who each hits, the fix, the official source, and links to the free inspectors - [APK analyzer](https://appforshare.io/tools/apk-inspector): free tool that reads an .apk in the browser (not uploaded) and shows the package name, version code, min and target SDK, permissions, signature schemes and signer, debug key, native libraries and 16 KB alignment, and the Google Play readiness check. AAB files are not read - [Free tools](https://appforshare.io/tools): index of the free tools - [For agencies](https://appforshare.io/agencies): client delivery for agencies and freelancers: install links, client portal by emailed link, task board, agreements and version sign-offs tied to the build SHA-256, sealed PDFs, /verify and evidence reports (Pro 2 active client projects, Team unlimited) - [App icon generator](https://appforshare.io/tools/app-icon-generator): free tool that turns one 1024 x 1024 image into icon sets for iPhone and iPad (with iOS 18 dark and tinted variants), Apple Watch, Apple TV (layered icon and Top Shelf), Mac, Vision Pro, Android (adaptive and Android 13 themed icons), Wear OS, Android TV (banner), web favicons and PWA icons, Expo, and the store listing icons for the App Store, Google Play, Huawei AppGallery and Amazon Appstore, made in the browser (the image is not uploaded) - [Build on GitHub Actions](https://appforshare.io/docs/github-builds): set up iOS and Android builds on your own GitHub Actions minutes with one pull request, to AppForShare, TestFlight or Google Play - [Upload from CI](https://appforshare.io/docs/ci): CLI, GitHub Action and Fastlane plugin: upload, list builds, latest link, store readiness, fail the pipeline on a blocked build - [Upload from CircleCI](https://appforshare.io/docs/ci/circleci): Send every iOS and Android build from CircleCI to testers with an install link and QR code. Copy the job, add one environment variable, done. - [Upload from GitLab CI](https://appforshare.io/docs/ci/gitlab): Share every build from GitLab CI/CD with testers: one job, a masked variable, and the install link saved as an artifact. - [Upload from Bitbucket Pipelines](https://appforshare.io/docs/ci/bitbucket): Send each build from Bitbucket Pipelines to testers with an install link. One extra step and a secured repository variable. - [Upload from Jenkins](https://appforshare.io/docs/ci/jenkins): Share every Jenkins build with testers: a Secret text credential and one sh step in your Jenkinsfile. - [Upload from Azure Pipelines](https://appforshare.io/docs/ci/azure-pipelines): Share each build from Azure DevOps Pipelines with testers. A secret variable, NodeTool and one script step. - [Upload from Xcode Cloud](https://appforshare.io/docs/ci/xcode-cloud): Send every Xcode Cloud ad hoc build to testers with an install link, using a ci_post_xcodebuild.sh script and the ad hoc export path. - [Upload from Codemagic](https://appforshare.io/docs/ci/codemagic): Share every Codemagic build with testers from the publishing section of codemagic.yaml. Works for Flutter, React Native and native apps. - [Upload from Bitrise](https://appforshare.io/docs/ci/bitrise): Share every Bitrise build with testers using a Script step and the paths Bitrise already exports. - [Upload from Expo EAS](https://appforshare.io/docs/ci/expo-eas): Send Expo EAS internal distribution builds to testers with an AppForShare install link, from GitHub Actions or any CI. - [.aab uploads](https://appforshare.io/features/aab-upload): upload an Android App Bundle (free account and up, not without an account); it becomes one universal APK for testers (bundletool), signed with the workspace's AppForShare test key or, on Pro and Team, a keystore the workspace adds. With Play App Signing the Play version is signed by Google's key, so testers uninstall it first unless the added key is the app signing key - [Tester feedback](https://appforshare.io/features/tester-feedback): Send feedback card on install pages, no SDK; Bug, Idea or Other, up to 4000 characters, up to 5 screenshots the tester can draw on (every plan with an account, not guest uploads), one screen recording up to 45 MB (Pro, Team); device, model, OS, screen, language and build attached; feedback inbox and build page card (resolve, delete, Copy for an issue); owner email at most once per build per hour without the tester text; push and webhook event feedback.new for Slack, Teams, Google Chat, Discord (Pro, Team); mark release blockers (Team, a label only for now); MCP list_feedback and resolve_feedback; CLI appforshare feedback. No crash reports of our own (a crash dashboard link on Pro and Team). Feedback from inside a test build goes through the in-app feedback link, no SDK. - [AI test plan](https://appforshare.io/features/ai-test-plan): build page card, Gemini writes 6 to 15 test tasks ordered by risk with steps, Why (new permissions, minimum OS, SDK/frameworks, same version number, readiness findings, release notes, optional focus) and Works when; upgrade task when a previous build exists; 1 AI action, every account plan; Developer+ write and tick, ticks shared with who/when; MCP test_plan; export (Pro and Team) as Firebase App Testing agent YAML (firebase apptesting:execute --test-dir; Android only, preview) or a Maestro starter flow (screenshot and assertWithAI per task, you add the taps), from the build page, CLI test-plan and MCP export_test_plan; AppForShare does not run tests or devices - [In-app feedback link](https://appforshare.io/features/in-app-feedback-link): per project https://appforshare.io/feedback/?platform=ios|android&version=&build=&screen=&info= opened from a debug menu or shake in a test build; feedback form for the matching build (build number, then version, then newest of the platform), screenshots, no SDK, no sign in, iOS and Android, 7 languages; reports marked In app with screen and info; samples for Swift, Kotlin, React Native, Flutter; every plan with an account (recordings Pro and Team) - [Join links](https://appforshare.io/features/tester-join-links): Team; up to 10 links per project at /join/; tester enters email and optional name, confirms by emailed link (24 hours, email in 7 languages) and lands in the project or a tester group; optional email domain limit (subdomains count), cap of 1 to 1000 joins, pause, new address; deleting keeps the testers; no account, no Google sign in - [Hands free device setup](https://appforshare.io/features/hands-free-device-setup): Team, an Admin turns it on per project; iPhones sent through the onboarding link are registered on the workspace's Apple account with its App Store Connect key after a few minutes, the ad hoc profile is made again when the build reads one (Xcode managed profiles are left to Xcode), and the project's GitHub iOS build starts; testers get the install email when the build is uploaded; at most 10 devices a run and 20 a day, Apple's 100 per device type checked first, every Apple call logged, one owner email per run - [Crash dashboard link](https://appforshare.io/features/tester-feedback): Pro and Team; per project https address of Crashlytics, Sentry, Bugsnag or another tool with {version} {build} {bundleId} {platform}; shown on the build page, CLI info, feedback reports, the owner feedback email and Linear or Jira issues; AppForShare never collects crash data - [CI API reference](https://appforshare.io/docs/api): the HTTP API behind the CLI with curl examples (Bearer afs_ token, Pro and Team): Diawi compatible upload (POST /api/ci/diawi, GET /api/ci/diawi/status), installs of a build, email the link, channel address, whoami, projects, builds, latest, delete, link controls, channels, release checklist, feedback, activity, testers, tester groups, distribute, devices import and export, test plan export, and the resumable upload flow - [Move from Diawi](https://appforshare.io/docs/move-from-diawi): point a Diawi upload script at https://appforshare.io/api/ci/diawi with an AppForShare token (Pro and Team): same multipart fields (token, file, password, comment, callback_url, callback_emails; installation_notifications, find_by_udid, wall_of_apps accepted and ignored) and status codes 2000, 2001, 4000 with hash, link and qrcode; up to 100 MB per request, the CLI for bigger builds; channels with a custom address; Remember this device for iPhone testers - [Move from InstallOnAir](https://appforshare.io/docs/move-from-installonair): re-upload builds, keep one link for $2 or all links on Pro, one channel link for future builds, UDID finder and Remember this device for iPhone testers, CI steps - [Move from AppsOnAir](https://appforshare.io/docs/move-from-appsonair): re-upload builds (CLI init and one upload for iOS and Android), extra share links per client with their own password and stop date instead of per link expiry, channel links, tester groups, feedback without an app, CLI and GitHub Action steps, Google Chat, retire a broken build, what stays on AppsOnAir (CodePush, AppLink, push, AppSync) - [Move from Firebase App Distribution](https://appforshare.io/docs/move-from-firebase): step by step: import Firebase's Export Apple UDIDs file (every plan), import the tester list as CSV (Team), replace firebase appdistribution:distribute with appforshare upload --groups, fastlane and Gradle, invite links to join links, in-app feedback SDK to the feedback link, keep Crashlytics with the crash dashboard link - [Google Play releases](https://appforshare.io/features/google-play-releases): every track of a Play app with its releases; Pro: release notes and promote between testing tracks; Team: production promote, staged rollout %, halt, resume, complete, Google Groups testers; every change by an Admin with a confirmation, never automatic - [Install page languages](https://appforshare.io/features/install-page-languages): install and channel pages in English, Hindi, Urdu, Bengali, Indonesian, Spanish and Arabic (RTL for Urdu and Arabic), from the phone's language or ?lang=, every plan; tester invites, new build notices, reminders and link emails go out in the tester's language (picked per tester, or Auto from their phone) - [In-app update check](https://appforshare.io/docs/update-check): public JSON per channel, GET /api/c//latest?platform=ios|android (version, build number, release notes, install link; with ?build= also retired, retiredReason and minBuild for builds the owner retired), with Swift, Kotlin, Flutter and React Native snippets; no SDK; Pro and Team; for test builds only - [MCP server](https://appforshare.io/docs/mcp): connect Claude, ChatGPT (developer mode custom connector), Claude Code, Cursor, Codex, VS Code or Gemini CLI at https://appforshare.io/api/mcp by signing in with OAuth (pick a workspace, disconnect in Settings) or with an API token (Pro and Team); tools: upload_build (npm appforshare-mcp), build_install_issues (why a tester cannot install, optional UDID check), build_installs (who installed), email_build_link (up to 5 addresses, confirm), set_channel_address (confirm), list_testers, list_tester_groups, add_testers, remove_testers, share_build_with_testers (Team, confirm required for changes), export_test_plan (Firebase App Testing or Maestro YAML), list_builds, latest_build, build_info (store readiness), test_plan (AI test plan with ticks; generate costs 1 AI action), list_feedback (tester feedback), list_projects, whoami, release_status, list_reviews, promote_build, set_testflight_link (TestFlight public link on a channel), set_link_controls (pause, stop date, install limit), list_build_links, add_build_link and remove_build_link (extra share links, confirm), retire_build (confirm), release_checklist, tick_release_step, send_feedback_to_tracker (Linear or Jira issue from a report), task_from_feedback, recent_activity, delete_build and resolve_feedback (Developer role, confirm required) - [Webhooks](https://appforshare.io/docs/webhooks): build, install, feedback, bandwidth and store events for Slack, Microsoft Teams, Google Chat, Discord or any endpoint - [Microsoft Teams](https://appforshare.io/docs/microsoft-teams): post builds, installs, store review states and customer reviews to a Teams channel with the built-in Workflows webhook (template "Send webhook alerts to a channel"), no Teams app needed, Pro and Team - [Google Chat](https://appforshare.io/docs/google-chat): post builds, installs, tester feedback, store review states and customer reviews to a Google Chat space with its incoming webhook (menu next to the space name, Apps and integrations, Add webhooks; URL starts with https://chat.googleapis.com/v1/spaces/), cards with the app icon and an Open button, about one message a second per space, Pro and Team - [Jira](https://appforshare.io/docs/jira): Jira Automation incoming webhook fed by an AppForShare generic webhook (URL + "/" + secret, since no custom headers): a work item per new build with the install link, or a bug when a store rejects a release; no Jira app needed, Pro and Team - [Tester app](https://appforshare.io/features/tester-app): invited testers (Team) add appforshare.io/tester (Builds shared with you) to the home screen and get push notifications for new builds, no account; iPhone needs iOS 16.4+ and the home screen app; installable web app, not a native store app - [Android developer verification](https://appforshare.io/docs/android-developer-verification): what Google's developer verification means for APK test builds (Sept 30, 2026 checks in Brazil, Indonesia, Singapore, Thailand for 7 stores only; global for all apps on certified devices in 2027), registering package names with every signing key (the AppForShare test key for .aab uploads cannot be registered by the customer, so use an own keystore on Pro and Team or upload a self signed .apk), ADB and the advanced flow - [Blog](https://appforshare.io/blog): guides on ad hoc distribution, UDIDs and app testing - [Comparisons](https://appforshare.io/compare): honest side by side pages with other build distribution tools - [Privacy policy](https://appforshare.io/privacy), [Terms](https://appforshare.io/terms), [Refund policy](https://appforshare.io/refund-policy) ## Pricing (USD) - Guest (no account): free, 50 MB per build, link lives 3 days, 20 installs per link. - Free: $0, 150 MB per build, 2 GB storage, links live 7 days, 10 GB bandwidth a month. Password protected links, QR code, UDID finder, the iPhone check and install help on install pages, zipped .app uploads, store readiness check, 5 AI actions a month. - Keep one Free link longer: $2 one time keeps one Free build's install link live for 60 days from the payment (also brings back a link that expired less than 7 days ago); pay again to add 60 more days, up to 120 days ahead; one such link per account at a time. Not a subscription. Bought from the build page in the dashboard. - Pro: $12 a month or $120 a year, 2 GB per build, 25 GB storage, links live while subscribed, 40 GB bandwidth a month. Adds release notes, CI upload tokens (CLI, GitHub Action, Fastlane), Beta and Live channels with a link that never changes, webhooks, install analytics, one App Store Connect and one Google Play connection, a crash dashboard link per project, test plan export for Firebase App Testing and Maestro, a Diawi compatible upload API, emailing the install link, a custom channel address, a daily install email, up to 3 extra share links per build (each with its own label, password, stop date, install cap and install count), retiring a broken build, and 100 AI actions a month. - Team: $39 a month or $390 a year, 4 GB per build, 150 GB storage, links live while subscribed, 150 GB bandwidth a month, 5 seats, extra seats $6 a month each. Adds roles (Admin, Developer, Viewer), private projects with invited testers, tester groups, join links testers sign up with, testers and groups from the CLI, CI API and MCP server, tester CSV import, up to 20 extra share links per build, hands free iPhone setup, per tester install status with reminders, a custom domain for install links and a white label install page, up to 10 client store connections per store with invite links, 500 AI actions a month shared by the workspace. - Extra bandwidth on Pro and Team: +50 GB for $10. Uploading is free; bandwidth counts what testers download. Yearly costs the price of 10 months. No refunds (see the refund policy). - Free trial: the first Pro subscription of an account starts with 7 days free (card added at checkout, nothing charged if cancelled before the trial ends; one trial per account and per card). - Regional prices: Pro $5.99 a month and Team $19.99 a month for cards issued in much of South and Southeast Asia, Africa, Central Asia and parts of Latin America (the card's country decides). ## Feature pages - [All features](https://appforshare.io/features) - [Builds on GitHub Actions](https://appforshare.io/features/github-actions-builds): We write the workflow and secrets, you merge one pull request. Builds go to testers, TestFlight or a Google Play track. (Pro (up to 2 repositories) and Team (no repository limit)) - [iOS device registration](https://appforshare.io/features/ios-device-registration): One link collects UDIDs, one click registers them on Apple and adds them to your ad hoc profile. Testers get an email when their build is ready. (Pro and Team) - [Hands free device setup](https://appforshare.io/features/hands-free-device-setup): A device sent through the onboarding link is registered on Apple, the ad hoc profile is remade and the GitHub iOS build starts. The tester gets the install email. (Team, turned on by an Admin per project) - [Store listing editor](https://appforshare.io/features/store-listing-editor): Text, keywords, screenshots and graphics for both stores, with limits checked, every change kept and AI translation you read first. (Pro and Team) - [App Store submission](https://appforshare.io/features/app-store-submission): Build, export compliance, review details, release type and a checklist of what Apple needs, then you send it for review. (Pro and Team) - [Google Play releases](https://appforshare.io/features/google-play-releases): Tracks, release notes and promotion on Pro. Staged production rollouts, halt, resume, complete and testers on Team. (Pro (testing tracks) and Team (production and testers)) - [TestFlight tester sync](https://appforshare.io/features/testflight-tester-sync): Link a tester group to an external TestFlight group and members stay in step, with Apple's status per tester. (Team) - [Tester app with notifications](https://appforshare.io/features/tester-app): Testers add their builds page to the home screen and get a push notification for every new build. No store app, no account. (Team) - [Tester groups and status](https://appforshare.io/features/tester-groups): Named groups of testers, status per tester for every project, and reminder emails in one click. (Team) - [Join links for testers](https://appforshare.io/features/tester-join-links): One link testers use to join a project or a tester group: they confirm their email and get the newest build. Domain limit, cap and pause. (Team) - [Beta and Live channels](https://appforshare.io/features/beta-live-channels): A stable link and QR code per channel, the same for iPhone and Android. Promote or roll back the link in one click or from CI. (Pro and Team) - [Tasks and activity feed](https://appforshare.io/features/tasks-and-activity): A task board on every project, tasks from tester feedback linked to builds, and a feed of who did what. (Team) - [Feedback to Linear and Jira](https://appforshare.io/features/feedback-to-linear-jira): One click turns a tester report into a Linear or Jira issue with the device facts and screenshots attached. (Pro and Team) - [Release checklist and blockers](https://appforshare.io/features/release-checklist): One checklist for the workspace, ticked per build. Live takes a build only when every step is done and no blocker is open. (Team) - [Install link controls](https://appforshare.io/features/install-link-controls): Pause a link, stop it after a date or cap its installs, per build. Installed apps keep working. (Pro and Team) - [Several links per build](https://appforshare.io/features/several-links-per-build): Extra share links to the same build, one per client or group, each with its own password, stop date, install cap and count. (Pro (up to 3 extra links per build) and Team (up to 20)) - [Retire a test build](https://appforshare.io/features/retire-test-build): Retire a broken build with a note: its link sends testers to the newest build, channels skip it and the update check reports it. (Pro and Team (bringing a build back works on every plan)) - [TestFlight and APK in one link](https://appforshare.io/features/testflight-link-and-apk): Add the TestFlight public link to a channel: iPhones open TestFlight, Android phones get the newest APK, same link and QR. (Pro and Team) - [Install page in 7 languages](https://appforshare.io/features/install-page-languages): Install and channel pages in English, Hindi, Urdu, Bengali, Indonesian, Spanish and Arabic, picked from the phone. (Every plan, also without an account) - [In-app update check](https://appforshare.io/features/in-app-update-check): Your test build asks its channel for the newest build and offers to install it. A few lines of code, no SDK. (Pro and Team) - [.aab uploads](https://appforshare.io/features/aab-upload): Flutter and React Native build an .aab by default. Upload it as it is and testers install an APK made from it. (Free and up, own signing key on Pro and Team) - [MCP server for AI tools](https://appforshare.io/features/mcp-server): Claude Code, Cursor, Codex and VS Code can upload builds, find install links, read readiness and check App Review status. (Pro and Team) - [Tester feedback with screenshots](https://appforshare.io/features/tester-feedback): A Send feedback button on every install page. Screenshots testers draw on, device and build attached, an inbox for your team. (Every plan with an account. Screen recordings and alerts on Pro and Team, release blockers on Team) - [In-app feedback link](https://appforshare.io/features/in-app-feedback-link): Your test build opens one web address from a debug menu or a shake. Testers report on the exact build and screen, with screenshots. iOS and Android. (Every plan with an account. Screen recordings on Pro and Team) - [AI test plan for each build](https://appforshare.io/features/ai-test-plan): Up to 15 test tasks per build, from new permissions, OS changes, store check findings and your notes. Tick them off as a team. (Every plan with an account (uses AI actions). Export to Firebase and Maestro on Pro and Team) - [Diawi compatible upload API](https://appforshare.io/features/diawi-compatible-api): The same fields and status codes as the Diawi API. A script or plugin that uploads to Diawi uploads here after a URL and token change. (Pro and Team) - [Remember my iPhone](https://appforshare.io/features/iphone-device-check): Check the iPhone once, then every iOS install page says whether the build includes it, with a way to send it to the developer when it does not. (Every plan. Sending the iPhone from the page needs the project's device onboarding link (Pro and Team)) - [Install help and why it failed](https://appforshare.io/features/install-help): Blocking notes above Install when the build cannot work on that phone, and a short install help list for iPhone and Android. (Every plan) - [Email the install link](https://appforshare.io/features/email-install-link): Up to 5 addresses per build, from the build page, CLI, CI or MCP. One plain mail per address, no tracking. (Pro and Team) - [Custom channel address](https://appforshare.io/features/custom-channel-address): Pick /c/acme-beta instead of a random code. The old address redirects for 30 days, and addresses are never reused. (Pro and Team) - [Daily install email](https://appforshare.io/features/daily-install-email): Installs since yesterday by build, device and country, once a day. No installs, no email. (Pro and Team, turned on per project) - [Zipped .app upload](https://appforshare.io/features/zipped-app-upload): A .zip with one .app folder becomes an .ipa. File modes and links are kept, so the app still runs. (Every plan) ## Comparisons with other tools - [AppForShare vs Diawi](https://appforshare.io/compare/diawi): Both give you an install link for an .ipa or .apk. AppForShare keeps links longer, allows bigger files on Free, takes .aab and speaks the Diawi upload API. - [AppForShare vs TestFlight](https://appforshare.io/compare/testflight): TestFlight is Apple only and needs review and the TestFlight app. AppForShare installs Ad Hoc builds and Android from one link. - [AppForShare vs Firebase App Distribution](https://appforshare.io/compare/firebase-app-distribution): Firebase is free and deep in the Google stack but testers need a Google account. AppForShare testers just open a link, with no SDK for feedback on iOS or Android. - [AppForShare vs App Center](https://appforshare.io/compare/app-center): App Center Distribute was retired in March 2025. AppForShare covers the install link part for iOS and Android. - [AppForShare vs InstallOnAir](https://appforshare.io/compare/installonair): Both are free to start. InstallOnAir allows bigger free files; AppForShare adds passwords, .aab, install help with no ads, and on paid plans links that stay live while you subscribe, CI tools and team features. - [AppForShare vs AppsOnAir](https://appforshare.io/compare/appsonair): AppsOnAir is a suite (builds, CodePush, deep links, push, force update); AppForShare does test builds only, from $12/month, with passwords on Free, several links per build, links that stay live while you subscribe, .aab uploads, feedback without an app and CI tools. - [AppForShare vs Loadly](https://appforshare.io/compare/loadly): Loadly is free with large files. AppForShare adds published terms, CI tools, analytics and team features. - [AppForShare vs TestApp.io](https://appforshare.io/compare/testapp-io): TestApp.io adds QA task tracking. AppForShare adds tester feedback with screenshots on every plan, AI test plans from what changed in each build, real App Store and Google Play writes, a bigger free plan and custom domains. - [AppForShare vs Appcircle](https://appforshare.io/compare/appcircle): Appcircle is an enterprise mobile CI/CD suite with a sales quoted licence. AppForShare covers testing, devices and store steps with card checkout. ## Guides - [In-app tester feedback on iOS and Android without an SDK](https://appforshare.io/blog/in-app-feedback-without-sdk): Collect bug reports from inside iOS and Android test builds without an SDK: open a feedback URL with version, build and screen. Swift and Kotlin code, and how Firebase in-app feedback compares. - [Self sign up links for beta testers: invite links, domain rules, no forced sign in](https://appforshare.io/blog/beta-tester-invite-links): How self sign up invite links for beta testers work in TestFlight, Google Play, Firebase App Distribution and AppForShare, and the six decisions that keep a link safe: confirm, domains, caps, pause. - [Moving off Firebase App Distribution: export UDIDs and testers, keep your CI](https://appforshare.io/blog/move-off-firebase-app-distribution): A checklist for leaving Firebase App Distribution: export Apple UDIDs and testers, import them with groups, swap the CI step command by command, and know what you give up. - [Firebase App Distribution limits in 2026: 2 GB, 500 testers, 150 days](https://appforshare.io/blog/firebase-app-distribution-limits): Every Firebase App Distribution limit explained: 2 GB files, 500 testers per project, 200 per group, 150 day releases, 1,000 releases, 30 day invitations and the App Testing agent quota. - [Firebase App Distribution on iPhone: device registered but cannot install](https://appforshare.io/blog/firebase-app-distribution-ios-udid-problems): Why an iPhone registered in Firebase App Distribution still cannot install, what "Device registered, you're all set" means, and a checklist of UDID, profile and build number fixes. - [Uploading to InstallOnAir from CI: there is no API, here is what to use](https://appforshare.io/blog/installonair-api): InstallOnAir has web upload only, with no API, CLI or CI plugins. Here is what to use for CI uploads instead: CLI, GitHub Action, fastlane or curl. - [Email a test build to testers without attaching the file](https://appforshare.io/blog/email-test-build-to-testers): Why attaching an .ipa or .apk to an email fails, what to send instead, what a good test build email says, and how to email install links. - [Firebase App Distribution without a Google account: what testers can skip](https://appforshare.io/blog/firebase-app-distribution-without-google-account): Can testers use Firebase App Distribution without a Google account? What they can skip, what they cannot, how to sign in without Gmail, and fixes for 403 and wrong account errors. - [Moving off InstallOnAir: links, UDIDs and testers in one afternoon](https://appforshare.io/blog/move-off-installonair): A checklist for leaving InstallOnAir: re-upload builds still in testing, bring iPhone UDIDs, give testers one channel link, pick how long links live, and add CI. - [Sharing an IPA or APK over 200 MB with testers](https://appforshare.io/blog/share-large-ipa-apk): Why test builds get big, size cuts that do not change behavior, upload limits on InstallOnAir, Diawi and AppForShare, and resumable CI uploads for 1 GB plus builds. - [One test build, several clients: own links, passwords, end dates](https://appforshare.io/blog/share-one-build-with-several-clients): Send one iOS or Android test build to several clients, each with their own link, password, stop date and install count, and revoke one without the rest. - [One mobile DevOps suite or a build sharing tool: how to choose](https://appforshare.io/blog/mobile-devops-suite-vs-build-sharing): Mobile DevOps suites bundle builds, CodePush, deep links and push. When that is worth it, where the lock in sits, and when a build sharing tool is enough. - [App Store and Google Play deadlines in 2026 that affect your builds](https://appforshare.io/blog/app-store-google-play-deadlines-2026): Every App Store and Google Play deadline that changes your builds in 2026 and early 2027: Xcode 26, iOS 13, API 36, 16 KB pages and developer verification. - [Is it safe to share test builds through a free install link service?](https://appforshare.io/blog/is-installonair-safe): A neutral checklist for any free install link service: who runs it, ads, passwords, storage, upload rules and tester data, with InstallOnAir as the example. - [Testers on an old or broken build: how to move them to the fix](https://appforshare.io/blog/stop-testers-using-old-build): What the build owner can do when testers stay on an old or broken build: channel links, rollback, pause and stop dates, retiring a build and minBuild checks. - [InstallOnAir link expired: what testers see and how to keep test links working](https://appforshare.io/blog/installonair-link-expired): How long InstallOnAir links last, what testers see when one expires, the owner's options to extend or re-upload, and how to keep test links working. - [How to test a CodePush or EAS Update before your users get it](https://appforshare.io/blog/test-codepush-update-before-release): Test an over the air code update on the right binary first: a staging build for testers, a promote loop, a checklist, and what Apple and Google allow. - [Shake to report a bug in a test build, without an SDK](https://appforshare.io/blog/shake-to-report-bug-test-builds): Add shake to report to iOS and Android test builds with a few lines in Swift, Kotlin, React Native or Flutter, plus what a feedback SDK adds and costs. - [iPhone app icon stays grey after installing a test build: causes and fixes](https://appforshare.io/blog/iphone-app-icon-grey-after-install): Why an iPhone shows a grey app icon after a link install, how to tell a stalled download from a refused build, and the fix for each cause. - [Moving test builds off AppsOnAir: links, testers and CI](https://appforshare.io/blog/move-off-appsonair): A checklist for moving build sharing off AppsOnAir: re-upload builds, bring UDIDs, replace link expiry and groups, feedback without an app, CI and what stays. - [AppsOnAir vs Firebase App Distribution vs AppForShare for test builds](https://appforshare.io/blog/appsonair-vs-firebase-app-distribution): Three ways to share test builds: tester sign in, iPhone UDIDs, feedback, CI tools, .aab support and price for Firebase App Distribution, AppsOnAir and AppForShare. - [Online APK installer: share an Android build with a link](https://appforshare.io/blog/online-apk-installer): How an install link puts your own Android build on a phone: steps for developer and tester, unknown apps, Play Protect, App not installed causes and .aab files. - [AppsOnAir pricing in 2026: what OTA build sharing costs on each plan](https://appforshare.io/blog/appsonair-pricing): AppsOnAir Free, Pro and Pro Plus as listed on November 3, 2026: file size, storage, link life and passwords, what else the price covers, and AppForShare beside it. - [AppsOnAir alternative for sharing iOS and Android test builds](https://appforshare.io/blog/appsonair-alternative): Only need test builds, not CodePush or deep links? AppsOnAir and AppForShare compared on price, free tier, passwords, link life, .aab and tester feedback. - [InstallOnAir vs Diawi vs AppForShare: free link life, file size and price in 2026](https://appforshare.io/blog/installonair-vs-diawi): InstallOnAir, Diawi and AppForShare compared on free link life, file size, installs, paid link extensions and CI uploads, with a pick for each case. - [InstallOnAir limits in 2026: 200 MB, 3 or 7 day links and paid extensions](https://appforshare.io/blog/installonair-limits): InstallOnAir limits as read in November 2026: 200 MB free uploads, 3 or 7 day links, the $2 upload credit, paid extensions and what is not offered. - [Online IPA installer: how an install link puts a test build on an iPhone](https://appforshare.io/blog/online-ipa-installer): How an install link puts your own signed test build on an iPhone: which .ipa files can install, the steps in Safari, Developer Mode and UDID fixes. - [Free InstallOnAir alternative for iOS and Android test builds](https://appforshare.io/blog/installonair-alternative-free): Which free install link tool fits which job: InstallOnAir, Diawi, Loadly and AppForShare free tiers side by side, and when paying makes sense. - [A mobile QA workflow: tasks per build and a release activity feed](https://appforshare.io/blog/mobile-qa-tasks-and-activity-feed): How to run a lightweight mobile QA loop: link bugs to the build they were found and fixed in, turn tester reports into tasks, and keep a release activity log. - [A beta tester app without the App Store: how testers get new builds](https://appforshare.io/blog/beta-tester-app-without-app-store): Why testers miss new builds, the options they have today, and how an installable tester app with push notifications keeps iOS and Android testers current. - [Diawi limits in 2026: file size, link life and installs per plan](https://appforshare.io/blog/diawi-limits): Every Diawi limit in one place: 20 MB to 1.2 GB uploads, links that last 1 to 15 days after the last install, 2 to 100 installs, API from Starter, add-ons. - [Diawi Jenkins plugin advisory: a safer way to upload builds](https://appforshare.io/blog/diawi-jenkins-plugin-advisory): The Diawi Upload plugin for Jenkins carries an open 2019 warning about credentials stored in plain text. What to check, how to rotate, and a safer pipeline step. - [Diawi vs TestFlight vs Firebase for test builds in 2026](https://appforshare.io/blog/diawi-vs-testflight-vs-firebase): Diawi, TestFlight, Firebase App Distribution and AppForShare compared for test builds in 2026: price, file size, link life, tester sign in, UDIDs, AAB and CI. - [Moving off Diawi in one afternoon: links, UDIDs, CI scripts, testers](https://appforshare.io/blog/move-off-diawi): A checklist for leaving Diawi: old links, bringing iPhone UDIDs along, switching curl, fastlane, GitHub, Jenkins and Bitrise steps, and telling testers. - [The Diawi API with curl and Node, and how to point it elsewhere](https://appforshare.io/blog/diawi-api-curl): Upload a build with the Diawi API from curl and Node: the fields, polling the job status, the 2000, 2001 and 4000 codes, and switching the same script by URL. - [Diawi and .aab files: why the upload fails and how to share an APK](https://appforshare.io/blog/diawi-aab): Diawi does not accept Android App Bundles. Why an .aab cannot be installed from a link, and three ways to share it with testers as an APK, with commands. - [Diawi UDID: check if an iPhone is in the build before sending the link](https://appforshare.io/blog/diawi-udid): How to check that a tester's iPhone UDID is in an ad hoc build before you share the link: Diawi's My Device warning, the profile list, and Remember this device. - [iPhone "integrity could not be verified": fixing link installs](https://appforshare.io/blog/iphone-integrity-could-not-be-verified): Why an iPhone refuses a test build with "integrity could not be verified", how to find the cause, and the Developer Mode and enterprise trust prompts testers see. - [Diawi link expired: how link life is counted and how to keep it live](https://appforshare.io/blog/diawi-link-expired): Why a Diawi link expires, how availability counts from the last install, the re-enable window per plan, and ways to keep test links working for testers. - [Android developer verification: what it means for APK test builds](https://appforshare.io/blog/android-developer-verification-test-builds): Android developer verification dates, who it affects, how to register package names and signing keys, and what testers installing APKs see now and in 2027. - [Send beta tester feedback to Linear and Jira without retyping](https://appforshare.io/blog/beta-feedback-to-linear-and-jira): How to turn beta tester bug reports into Linear and Jira issues with device, build and screenshots intact, four ways to connect, and a triage flow. - [Mobile app release checklist template and release blockers](https://appforshare.io/blog/mobile-release-checklist-and-blockers): A release checklist template for iOS and Android, how to triage release blockers, and how to gate a release on the checklist with a recorded override. - [Control who installs your beta build: pause, expire, limit](https://appforshare.io/blog/control-who-installs-your-beta-build): Why beta install links leak, how passwords, tester lists, expiry dates, install limits and pausing compare, plus a playbook for reviews, demos and public betas. - [TestFlight public link and APK in one link and QR code](https://appforshare.io/blog/testflight-public-link-and-apk-one-qr-code): How to create a TestFlight public link, what Apple requires, and how to give iPhone and Android beta testers one link and one QR code for TestFlight and the APK. - [Collect beta tester feedback with screenshots, no SDK needed](https://appforshare.io/blog/collect-tester-feedback-with-screenshots): How to collect feedback from iOS and Android beta testers with screenshots and screen recordings, what a good bug report contains, and how to triage it. - [AI test plan for mobile builds: what to test in a new app build](https://appforshare.io/blog/ai-test-plan-for-mobile-builds): How to decide what to test in a new iOS or Android build, a copyable mobile app test plan template, and AI test cases from release notes and binary changes. - [Google Play staged rollouts: percentages, halting and when to go to 100%](https://appforshare.io/blog/google-play-staged-rollout-guide): How Google Play tracks and staged rollouts work: who gets an update, sensible percentage steps, what to check in Android vitals, halting, resuming, completing and the Play Developer API. - [How to tell testers a new build is ready, from inside the app](https://appforshare.io/blog/in-app-update-prompt-for-test-builds): Testers stay on old builds. Compare TestFlight auto updates, Firebase alerts, Play in-app updates and your own version check, kept out of store builds. - [How to install an .aab file on an Android phone (and share it with testers)](https://appforshare.io/blog/install-aab-file-on-android): Why a phone cannot open an .aab, and three ways to install one: bundletool universal APK, Google Play internal testing or internal app sharing, or an install link. - [How to localize your App Store and Google Play listing](https://appforshare.io/blog/localize-app-store-google-play-listing): Localize App Store and Google Play listings: field limits per language, keywords researched per market, screenshot sizes, and how changes go live on each store. - [Build and sign an Android app on GitHub Actions and upload it to Google Play](https://appforshare.io/blog/github-actions-android-build-google-play): A working GitHub Actions setup for Android: Java and Gradle cache, signing with an upload keystore from secrets, APK vs AAB, version codes and uploading to a Play track. - [App Store submission checklist: everything Apple asks for before review](https://appforshare.io/blog/app-store-submission-checklist): App Store submission checklist for 2026: build, export compliance, App Review sign in, listing per language, screenshot sizes, age rating, App Privacy, phased release. - [Build an iOS app on GitHub Actions and send it to TestFlight](https://appforshare.io/blog/github-actions-ios-build-testflight): Build and sign an iOS app on GitHub Actions: macOS runner, Xcode version, automatic or manual signing, build numbers, export options and TestFlight upload. - [TestFlight alternatives: when to use them and which to pick](https://appforshare.io/blog/testflight-alternatives): TestFlight limits explained: beta review, 90 day builds, Apple Accounts, iOS only. Compare Ad Hoc links, Enterprise and Firebase with a decision table. - [Firebase App Distribution alternative: when a link is simpler](https://appforshare.io/blog/firebase-app-distribution-alternative): Where Firebase App Distribution works well, where testers hit friction with Google sign-in, invites, AAB setup and feedback, and when a plain install link is easier. - [App Store rejection reasons in 2026 and how to avoid them](https://appforshare.io/blog/app-store-rejection-reasons): The most common App Store and Google Play rejections in 2026: guidelines 2.1, 5.1.1, 4.3, ITMS-91053, target API 36, and how to catch them before you submit. - [Upload every app build from CI and get an install link](https://appforshare.io/blog/upload-builds-from-ci): Upload iOS and Android builds from GitHub Actions, GitLab, Bitrise, Jenkins, Fastlane, Codemagic or Xcode Cloud, with commit notes and JSON output. - [iOS code signing errors that block test build installs](https://appforshare.io/blog/ios-code-signing-errors-test-builds): Fix "Unable to Install" and "integrity could not be verified" on iOS test builds: expired profiles, missing devices, revoked certificates and entitlements. - [How to send app builds to clients without confusion](https://appforshare.io/blog/sending-app-builds-to-clients-outsourcing): For agencies and freelancers: share app builds with clients, collect feedback per version, and get a clear sign-off on the exact build, from UDIDs to handover. - [Test build distribution best practices for 2026](https://appforshare.io/blog/test-build-distribution-best-practices): App distribution best practices for testing: one link per build, honest build numbers, release notes, private access, link expiry, Ad Hoc devices and CI. - [Android app signing: APK vs AAB, keys and sideloading](https://appforshare.io/blog/android-app-signing-apk-aab-sideload): APK vs AAB, Play App Signing vs upload key, why an AAB cannot be sideloaded, bundletool universal APK, signature schemes v1 to v4 and App not installed. - [How to share a Flutter build with testers (APK and IPA)](https://appforshare.io/blog/share-flutter-build-with-testers): Build a Flutter test APK and an Ad Hoc IPA, export with the right method, share both with one install link, and fix the common Flutter install errors. - [How to share a React Native build with testers](https://appforshare.io/blog/share-react-native-build-with-testers): Build a React Native release APK with Gradle and an Ad Hoc IPA from Xcode or Expo EAS, share both with one install link, and fix common install errors. - [Register devices for Ad Hoc builds: the full workflow](https://appforshare.io/blog/ios-ad-hoc-device-registration): How to register devices for iOS Ad Hoc testing at scale: collect UDIDs, bulk add them, handle the 100 device limit, refresh the profile and verify the build. - [Security checks before you share an IPA or APK build](https://appforshare.io/blog/security-checks-before-sharing-a-build): What to check in an IPA or APK before sending it to testers or a client: debuggable flag, debug key, permissions, entitlements, exported components, secrets. - [The hidden risks of manual App Store and Play releases](https://appforshare.io/blog/manual-app-store-publishing-risks): Missed review status, late rejections, halted rollouts, unanswered reviews and shared passwords: the risks of manual app releases and where automation helps. - [Post new app build links to Slack, Discord and Google Chat](https://appforshare.io/blog/slack-discord-build-notifications): Send every new iOS and Android test build to Slack, Discord, Google Chat or Microsoft Teams with AppForShare webhooks, or post it from CI with the CLI. - [OTA install vs OTA code updates: CodePush, EAS Update](https://appforshare.io/blog/ota-install-vs-codepush): OTA install of a signed build versus OTA code updates: what replaced CodePush after App Center, what Apple and Google allow, and when to use which in 2026. - [Unlisted app vs Ad Hoc vs install link: which to use](https://appforshare.io/blog/unlisted-app-vs-ad-hoc-vs-install-link): Apple unlisted apps, Ad Hoc builds, TestFlight public links, Play testing tracks and direct APKs compared: review, who can install, and a decision table. - [Enterprise app store vs testing distribution: which you need](https://appforshare.io/blog/enterprise-app-store-vs-testing-distribution): Internal enterprise app stores and test build distribution solve different problems. Apple Enterprise rules, MDM, Managed Google Play, and what fits your team. - [White label apps: sharing builds for many brands](https://appforshare.io/blog/white-label-app-build-sharing): For agencies shipping white label apps: bundle ids per brand, signing per client, one project per brand, CI matrix uploads and a branded install page. - [Lost or revoked iOS distribution certificate: what to do](https://appforshare.io/blog/lost-ios-distribution-certificate): Lost the private key or revoked your iOS distribution certificate? What breaks for App Store, Ad Hoc and Enterprise apps, how to recover, and how to prevent it. - [iOS test build checklist for 2026](https://appforshare.io/blog/ios-test-build-checklist-2026): Check every iOS test build before testers see it: export method, devices, profile expiry, Developer Mode, entitlements, iOS 26 SDK rule and privacy manifests. - [AI for mobile app releases: what to draft, what to keep human](https://appforshare.io/blog/ai-for-mobile-app-releases): Where AI helps in mobile release work in 2026: release notes, store listing copy within limits, readiness fixes and review replies, and what to never automate. - [App Center is gone: how to move test build distribution](https://appforshare.io/blog/app-center-distribute-migration-guide): App Center was retired in March 2025. What replaces Build, Distribute, Test and Diagnostics, and a step by step guide to move your install links and CI upload to AppForShare. - [How to upload an APK and share it without the Play Store](https://appforshare.io/blog/upload-apk-share-link-without-play-store): Build a release APK, upload it and send testers an install link or QR code, with no Play Store review. Covers Android Studio, Flutter and React Native.