expo generate android apk to send to specific users

I’m developing personal app and want to send it to specific users by Email or WhatsApp.
so i’m looking how to create an APK standalone without publishing to everyone.

1 Like

I’m not entirely sure what you mean by “publishing to everyone”.

To create the APK you can run:

expo build:android

This will cause Expo’s servers to build your APK and give you the download link at the end. Note that this can take a while depending on how busy their servers are. Best do it when the Americans are asleep :laughing:

But by default, how Expo works is it will bundle the JavaScript code and images and other assets and upload (publish) them to the cloud. Then when your users run the app it will check to see if there’s a later version of the JavaScript/assets and do an OTA update if so.

None of the above requires you to publish the app on the Google Play store or any other app store, though. You can send the APK to the users via WhatsApp etc.

thanks for your response!
my question is if when i’m using the command ‘expo build:android’ the app upload to some public repository and everyone can download (my goal is to make the download private only to the user i choose).

Have a good day.

The APK is uploaded to a URL like the following:


This is not private, but you have to know the URL in order to fetch the APK. Also there’s a Delete button on the Build Details page which presumably deletes the APK. So you should be able to build it, download it and then delete it.

The JavaScript/Asset bundle is also uploaded to a public location. If you want to avoid this you can publish it to one of your own servers instead. Something like this:

$ expo export --public-url https://example.com/blah/
[Make the contents of the dist/ directory available at the above URL]
$ expo build:android --no-publish --public-url https://example.com/blah/android-index.json

If I remember correctly, the bundle needs to be available at the specified location during the build, but you could delete it afterwards. By default the app will check for OTA updates at the specified URL, but you can disable that.

1 Like


Just one more question so what the purpose of: “privacy”: “unlisted”,

As far as I know that just means it will not show up in the list here:


unless you’re logged in as username.

1 Like

This topic was automatically closed 20 days after the last reply. New replies are no longer allowed.