The project is in a healthy, maintained state
A fastlane action that sends the build your lane just produced to App Dropper, then returns a public install link and QR code for your testers.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 2.0
>= 2.170.0
~> 13.0
~> 3.10
~> 1.12.1
 Project Readme

fastlane-plugin-app_dropper

fastlane Plugin Badge

Upload the build your lane just produced to App Dropper and get a shareable install link back.

Getting started

fastlane add_plugin app_dropper

Generate an API token under Settings → API tokens in your App Dropper dashboard, and export it:

export APPDROPPER_TOKEN="adp_…"

Each token is scoped to a single app and carries one scope, upload:builds — it cannot delete builds, manage testers, read billing, or reach another app.

Usage

With no arguments, the action uploads whatever the lane most recently built — IPA_OUTPUT_PATH, falling back to GRADLE_APK_OUTPUT_PATH:

lane :beta do
  build_app(scheme: "MyApp", export_method: "ad-hoc")
  app_dropper
end

Or spell it out:

lane :beta do
  build_app(scheme: "MyApp", export_method: "ad-hoc")

  app_dropper(
    api_token: ENV["APPDROPPER_TOKEN"],
    file: lane_context[SharedValues::IPA_OUTPUT_PATH],
    release_notes: last_git_commit[:message],
    tag: "adhoc"
  )
end

Android

lane :beta do
  gradle(task: "assemble", build_type: "Release")

  app_dropper(
    file: lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH],
    release_notes: last_git_commit[:message]
  )
end

Options

Option Environment variable Default
api_token APPDROPPER_TOKEN required
file APPDROPPER_FILE the lane's .ipa, else its .apk
release_notes APPDROPPER_RELEASE_NOTES empty
tag APPDROPPER_TAG beta
timeout APPDROPPER_TIMEOUT 600 seconds
api_url APPDROPPER_API_URL https://appdropper.io/api/v1

api_token is declared sensitive, so fastlane redacts it from logs and from the run summary.

Return value and lane context

The action returns the install link, and also sets:

Lane context key Contains
APP_DROPPER_INSTALL_URL Public install link
APP_DROPPER_BUILD_ID Identifier of the new build
APP_DROPPER_QR_URL PNG QR code for the install link
APP_DROPPER_VERSION Version string read out of the binary
url = app_dropper
slack(message: "New iOS beta is up: #{url}")

Switching from Diawi

The action is deliberately shaped like the community diawi plugin, so the change is mechanical:

# Before
diawi(
  token: ENV["DIAWI_TOKEN"],
  file: lane_context[SharedValues::IPA_OUTPUT_PATH],
  comment: last_git_commit[:message]
)

# After
app_dropper(
  api_token: ENV["APPDROPPER_TOKEN"],
  file: lane_context[SharedValues::IPA_OUTPUT_PATH],
  release_notes: last_git_commit[:message]
)

Both block the lane until the build is processed and both return a link. App Dropper additionally groups builds into an app with full version history, notifies your registered testers by email and push, and keeps builds for 7 days on free or 30 on Pro (indefinitely if you pin one).

What your testers are told

A successful upload emails and push-notifies everyone on the app with "A new version is available for {your app}" — the account the token belongs to included, since nobody watched the lane run. Running inside CI, the plugin reads the runner's environment (GitHub Actions, GitLab CI, Bitrise, CircleCI, Bitbucket Pipelines, Codemagic, Jenkins and friends) so that email can name the branch and commit and link back to the build. Set APPDROPPER_NO_CI_INFO=1 to leave those details out.

How it works

The binary never passes through the API. The action reserves an upload (which is where every plan limit and quota is applied), streams the file straight to Google Cloud Storage, then waits for the server to parse it. That's what keeps a 500 MB .ipa clear of the request-size ceilings every HTTP API has.

No runtime dependencies — everything uses Ruby's standard library, so installing this plugin can't drag a conflicting HTTP gem into your Gemfile.lock.

Development

bundle install
bundle exec rspec
bundle exec rubocop

Docs

License

MIT