Share mobile builds with QA, Product, stakeholders, or clients

Upload an IPA or APK, get a link and QR in seconds. The organized Firebase App Distribution alternative for React Native, Flutter, and native teams.

Free forever for 1 project. No credit card.

~/acme-mobile
$ buildtree upload ./app.ipa --env dev --branch feature/payments
↳ Uploading app.ipa (28.4 MB)…
↳ Confirming upload…
✓ Uploaded (sh.acme.app v1.5.0 build 142)
https://buildtree.sh/install/folder/acme-mobile/dev/feature/payments

Built for the QA loop you actually run

Hosting the file is the easy part. The work is getting it onto a tester's phone: registering their iOS device, install pages they trust, and QR codes that always point to the right build. We've built that part so you don't have to. Build wherever it makes sense: locally, on CI, with EAS's local mode, with Fastlane, with Xcode.

Multi-stack from day one

React Native (Expo or bare), Flutter, native iOS, native Android. Any .ipa or .apk works. We never tell you which build tool to use.

Branch-aware folders

Builds organize themselves by environment and branch. QA always finds the latest dev/feature/payments build without you DMing them a link.

QR + CLI workflow

Upload from your terminal or CI in one command. Pin an install URL to a build, point at the latest in a folder, or freeze it to a release tag.

Three commands. That's the workflow.

From a fresh repo to QA installing your build in under five minutes.

01

Build wherever

Locally, on CI, with whatever tool you already use. We don't replace your build pipeline.

ci
$ eas build --local
↳ build/App.ipa
02

Upload via CLI

One command. Direct upload to Cloudflare R2 via presigned URL. Your build never proxies through our API.

ci
$ buildtree upload App.ipa
✓ build id 7f3e…
03

Share QR or install link

Pinned, folder (always-latest), or release-tag (frozen). Pick the URL that fits the conversation.

ci
/install/folder/acme/uat
/install/release/acme/v1.5.0

Fits the workflow trunk-based teams already run

develop stays release-ready because every feature branch ships a QA build before it merges. That used to be five custom GitHub Actions and a Slack channel. With buildtree it is one CLI line in CI and a stable install URL per branch.

  1. PR opens for feature/payments

    CI runs buildtree upload --env dev --branch feature/payments

  2. QA gets a branch URL that auto-updates

    /install/folder/<project>/dev/feature/payments stays the same every commit

  3. Tester signs off, PR merges to develop

    No Slack message chase. No stale links. The bookmarked URL was the latest all along.

  4. Merge produces the new develop checkpoint

    buildtree upload --env dev (no --branch). Internal stakeholders get the freshest passing build at one stable URL.

Pricing that doesn't punish you for shipping

Flat tiers. Hard limits. No surprise overage bills.

Free

For solo devs or trying it out.

$0
  • 1 project
  • 5 GB storage
  • 30-day retention
  • Public QR links
Start free

Solo

Indie hackers shipping real apps.

$9/mo
  • 3 projects
  • 25 GB storage
  • 90-day retention
  • Branch-aware folders
  • Private install links
Sign up to subscribe
Recommended

Team

Where most teams land.

$29/mo
  • 10 projects
  • 100 GB storage
  • Unlimited retention
  • Team members + roles
  • Install analytics
  • Slack notifications
Sign up to subscribe

Business

Org-wide deployments + compliance.

$99/mo
  • Unlimited projects
  • 500 GB storage
  • SSO / SAML
  • Audit logs
  • Custom domain
  • Priority support
Sign up to subscribe

Hard limits per tier. No usage-based overage billing. Customers approaching limits get warned at 80% and 100%.

Ready to share your first build?

Free forever for 1 project. Magic-link sign-in, no credit card, no setup ceremony.

buildtree | Ship mobile builds to QA in seconds