npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

appdrop

v0.5.0

Published

Share an iOS app: upload an .ipa and get an AppDrop link that installs it on any iPhone

Readme

AppDrop

Share an iOS app with anyone. Upload an .ipa and get a link; opening it on an iPhone installs the app.

npx appdrop path/to/App.ipa
# https://appdrop.app/d/k3m9x2p7qa

The recipient opens the link on their iPhone, connects the Tuft app once, signs the app with their own Apple ID, and installs it. Everything happens on the phone; no Mac, cable or provisioning profile with their device in it is needed.

Updating an app

Creating a link also prints its update link, https://appdrop.app/d/<id>/manage#<key>. Keep it private: anyone who has it can publish new builds to the share link. Open it in a browser to upload a new build, or pass it to the CLI:

npx appdrop build/App.ipa --update https://appdrop.app/d/k3m9x2p7qa/manage#…

The new .ipa must have the same bundle identifier. People who installed an earlier version see "Update available" when they open the share link again, and one tap re-signs and installs it with the Apple ID their browser remembers. iOS keeps the app's data.

To let an agent take over an app, give it the update link. With --json, a new link's manageUrl and manageKey are printed once, so a script can store them as secrets; --key and $APPDROP_MANAGE_KEY work with a plain share link, and keys are also saved in ~/.appdrop/drops.json ($APPDROP_HOME).

For scripts and agents

Only the link goes to stdout (progress goes to stderr), so it can be captured:

url=$(npx appdrop build/App.ipa)

--json prints the details instead:

{"url":"https://appdrop.app/d/k3m9x2p7qa","manageUrl":"https://appdrop.app/d/k3m9x2p7qa/manage#…","id":"k3m9x2p7qa","revision":1,"name":"My App","bundleId":"com.example.app","version":"42","shortVersion":"1.2.0","size":31457280,"hasIcon":true,"manageKey":"…"}

The exit code is non-zero when the file isn't an iOS app or the upload fails.

Options

| Option | | | --- | --- | | --update <link> | Publish the .ipa as a new version of an existing app. Takes the update link, or a share link plus --key. | | --key <key> | The key, when --update is given a share link (also $APPDROP_MANAGE_KEY). | | --json | Print the result as JSON. | | --origin <url> | Use another AppDrop server (also $APPDROP_ORIGIN). | | -h, --help | Show help. |

The .ipa can be signed or unsigned (it's re-signed for each recipient) and up to 500 MB. AppDrop reads the app's name, bundle identifier, version and icon from the .ipa to show on the install page. It has no dependencies.

Versions before 0.3 paired an iPhone from a Mac (npx appdrop <code>). Pairing now happens on the iPhone through Tuft, so that command is gone.