Part of: CI/CD Beta App Distribution
A download button for your app’s website or README
Testers and clients already get your build from a BetaDrop link. Give them a button instead: one snippet, no script, and it can follow every build you ship.
Three steps, no code
Upload a build
Drop an .ipa or .apk on BetaDrop, or publish one from the CLI or your CI. You get an install link testers open on their phone.
Copy the button
Under the install link, open “Embed a download button on your site”. Choose dark or light and HTML or Markdown, then copy.
Paste it anywhere
A landing page, a README, a Notion doc, a wiki, a Jira ticket. It is one link around one image, so anything that accepts HTML or Markdown accepts it.
What you paste
This is the exact output of the embed panel, with your install link in place of the placeholder. The badge image is served from betadrop.app at 200 by 60 pixels, and the alt text names your app.
<a href="https://betadrop.app/install/YOUR-LINK?ref=badge"><img src="https://betadrop.app/badge/download-dark.svg" alt="Download Your App from BetaDrop" width="200" height="60"></a>[](https://betadrop.app/install/YOUR-LINK?ref=badge)No <script>, no iframe, no cookie. It cannot slow your page down or break it, it needs no content-security allowance, and GitHub, Notion and every Markdown renderer accept it, the same way they accept an App Store badge.
Point it at a build, or at a channel
The button opens whatever link you copied it with. That choice decides whether you ever have to touch it again.
One build
FreeThe button opens that build’s install link and works for as long as the build is live: 3 days by default, up to 7 days on the free plan and a year on Pro. Right for a client review, a sprint demo, or a ticket. Re-copy the snippet after the next upload.
A channel
Pro & StudioA channel is a fixed link on your account, such as betadrop.app/install/nightly, that you point at any build. The button opens the channel, so every copy of it on every page serves the newest build the moment you point the channel there. Nothing to re-embed, ever.
The embed panel offers the channel first whenever one already serves the same app. Channels are included in Pro and Studio.
Let your pipeline keep the button current
Publish to a channel from CI and the button on your README updates itself on every merge. The GitHub Action and the CLI both take the channel by name and point it at the build they just uploaded; if the channel cannot be moved, the step fails before anything is stored, so a green build always means the button is current.
- name: Publish to BetaDrop
uses: betadrop-app/upload-action@v1
with:
file: app/build/outputs/apk/release/*.apk
token: ${{ secrets.BETADROP_TOKEN }}
channel: nightly
betadrop publish ./build/MyApp.ipa --channel nightly
Setup for GitHub Actions, fastlane, GitLab CI, Bitrise and Codemagic is on the integrations pages; the flag reference is in the CLI docs.
Where people put it
A client review page
An agency hands a client one page with the app's name, the release notes and a button. The client taps it on their phone; nobody explains what an .ipa is.
An open-source README
“Get the nightly” under the screenshots, pointed at a channel your workflow publishes to. It stays right without anyone editing the README.
A QA handoff doc
The Confluence page or Notion doc for the test cycle carries the button next to the checklist, so the build and the instructions travel together.
A ticket or a chat pin
Jira, Linear, a pinned Slack message: anywhere raw HTML or Markdown is accepted, the button is a clearer target than a long URL.
BetaDrop distributes pre-release builds to testers and clients. The button is for pages those people read, not for offering apps to the public; the acceptable-use policy applies to a build whether it is reached by link or by button.
Badge guidelines
- Two versions: dark for dark backgrounds, light for light ones. Pick in the panel; do not recolour the file.
- Native size is 200×60. Scale both dimensions together; keep it at least 40 pixels tall.
- Keep the alt text. It names your app for screen readers and for anyone whose images do not load.
- Load it from betadrop.app rather than copying the file, so it stays current if the design is refreshed. The path and size are a stable contract.
Questions
Where do I get the download button for my app?
Upload a build to BetaDrop. The screen that shows your install link has a row labelled "Embed a download button on your site"; open it, pick dark or light, pick HTML or Markdown, and copy. The same panel is on every build's Share tab in the dashboard, so you can come back for it later. The snippet is one link wrapped around one image, pointing at the same install link the screen shows.
Does the button work in a GitHub README?
Yes. Copy the Markdown version and paste it anywhere in the README; GitHub renders the badge like any other image link. Two things to know: GitHub fetches images through its own proxy, which is fine because the badge is a plain SVG with no script, and a README outlives any single build. Point the button at a channel rather than at one build, or the link under it goes stale the next time you ship.
What happens to the button when the build expires?
The badge keeps rendering, but the link behind it lands on an expired page. A build link lasts 3 days by default and up to 7 days on the free plan, a year on Pro and 10 years on Studio. For a button that lives on a landing page or a README, use a channel: it is a fixed link that follows whichever build you point it at, so the button never needs re-copying.
What is a channel, and how does the button follow it?
A channel is a named install link on your account, such as betadrop.app/install/nightly, that you point at any build you have uploaded. When the embed panel sees a channel serving the same app, it offers the channel as the button's target first. Point the channel at a new build from the dashboard, from the upload form's "Publish to channel" option, with `betadrop publish --channel nightly` in the CLI, or with the `channel` input of the GitHub Action, and every copy of the button updates with nothing to edit. Channels are part of the Pro and Studio plans.
Will the button install the app on any phone?
It opens the same install page a shared link opens, so the answer is the same. An Android APK installs on any device that allows installs from unknown sources. An iOS build signed Ad Hoc installs only on devices whose UDID was in the provisioning profile when it was signed, and an enterprise-signed build on any device that trusts the certificate. The button changes where the link lives, not what iOS will accept; collect testers' UDIDs first if the build is Ad Hoc.
Can I change the badge's colour or size?
Use it as shipped. There are two versions, dark and light, at 200 by 60 pixels; scale both dimensions together and keep it at least 40 pixels tall so the text stays legible. The image is served from betadrop.app, so it stays current if the design is refreshed, and the alt text in the snippet names your app for screen readers and for anyone whose images fail to load. Do not recolour it or retype the text over your own button.
Does the badge track visitors to my site?
No. It is a static image with no script and no cookie. Loading it tells BetaDrop the address of the page it sits on, the way any image request does, and the install link carries a ref=badge tag so BetaDrop can tell a click on the button from a typed link. That is used to see where the button is in use and nothing else; installs through it show up in your build's analytics exactly like installs from any other link.
Your next build comes with a button
Upload an .ipa or .apk, open the embed panel under the install link, and paste the snippet wherever your testers already look.