How to migrate Expo to a a different Expo account

Hi, we have a project under one expo account and want to be able to move it to a different expo account. Can anyone assist in how to do this with very little downtime or no down time at all?


I have not tried this sort of thing myself, but maybe I can give you some hints:

Neither Apple, nor Google know or care about your Expo username. They only care about the ios.bundleIdentifier and android.package and the signing keys.

OTA updates are where the Expo account name and slug (and SDK version and release channel) come into play.

So reading between the lines of your question I suspect you have an app that is already deployed to the App Store and the Play Store.
I also assume that you are not changing the Apple/Google developer accounts.
And I would guess that the developer chose the option to let Expo handle the signing keys.
FYI in future it would be helpful to provide this sort of info to avoid people having to guess :slight_smile:

So what you’d need to do is retrieve the signing keys.
Then (optionally) change the slug (and owner if it’s set) and build the app while logged into the new user account. You’ll need to give Expo the original keys when building the app.
Then deploy the new apps to the App Store and Play Store.

Users that are still using the old app will be fetching OTA updates published by the original Expo user.
Users that are have the new app will be fetching OTA updates published by the new Expo user.
So after a week or so you might want to get the original Expo user to publish an OTA update that prompts your users to upgrade the app from the App Store/Play Store or something like that.

For fetching the signing keys you’ll need to look into the expo credentials:manager and/or expo fetch:* commands:

$ expo --help | grep -E 'fetch:|credentials:'
    credentials:manager [path]        Manage your credentials
    fetch:ios:certs [path]            Download the project's iOS standalone app signing credentials
    fetch:android:keystore [path]     Download the project's Android keystore
    fetch:android:hashes [path]       Compute and log the project's Android key hashes
    fetch:android:upload-cert [path]  Download the project's Android keystore

(I think expo credentials:manager should be all you need, but since I’ve not done this sort of thing before I’m not 100% sure.)

If for some reason you can’t get the original signing keys (e.g. because the original developer is no longer around) then you’ll need to build a new version of the app and contact Google about deploying the app with a new signing key. I assume Apple will also have a similar process.

1 Like

@wodin is spot-on here :grinning_face_with_smiling_eyes:

When going through this process, a few other things will also be affected besides OTA Updates- for instance, your ExpoPushTokens will change, as well.

We plan on eventually supporting project transfers in Expo, and making it super smooth so that there is 0 downtime or breaking changes when transferring a project, but it’ll take quite a bit of work to get there so it’s not something you can expect in the next month or so.

1 Like