Hello,
We are preparing to transfer an App Store app from one Apple Developer account/team to another.
Our iOS app uses Sign in with Apple. However, in our legacy implementation, we did not store the Apple user subject identifier (sub) for many existing Apple login users. Our service primarily matched users by email.
After reviewing Apple’s app transfer and Sign in with Apple migration documentation, we understood that we should generate a transfer identifier for each Sign in with Apple user before transferring the app. We have now started collecting and storing the sub value, but many legacy Apple login users still do not have their original sub value stored in our database.
We are concerned about two main cases:
- Legacy users whose original Apple
subvalue was never stored
For these users, we may not be able to generate the required transfer identifier before the app transfer. If the user uses Private Relay, we are also concerned that the email address we receive after the transfer may not match the email address we previously stored.
In that case, our backend may not be able to match the post-transfer Sign in with Apple login to the user’s existing account, and the user may be treated as a new account.
- Users whose
subvalue is stored, but who do not sign in during the migration period
For some users, we do have the Apple sub value and may be able to generate the transfer identifier before the app transfer.
However, we are not sure what happens if those users do not sign in during the available Sign in with Apple migration period after the app transfer. If they sign in only after that period has ended, will the post-transfer Sign in with Apple user still be reliably mapped to the original pre-transfer user?
The scenario we are worried about is:
- A user originally signed in with Apple before the app transfer.
- The app is transferred to another Apple Developer account/team.
- The user does not sign in during the Sign in with Apple migration period.
- After the migration period has ended, the same user signs in with Apple again.
- Our backend receives a new Apple user identifier and/or a different Private Relay email address.
- Our backend cannot correlate that login with the user’s original service account.
- The user may be treated as a new user and may lose access to their existing profile, activity history, chats, purchases, or other account data.
Could someone confirm the expected behavior?
Questions:
-
If we have a legacy
subvalue and generate the transfer identifier before the app transfer, can the user still be mapped to the original account if they do not sign in during the Sign in with Apple migration period? -
After the migration period has ended, does Apple provide any identifier, token claim, API response, or other mechanism that allows us to correlate the post-transfer Sign in with Apple user with the pre-transfer user?
-
For legacy users whose original
subvalue was never stored, is there any Apple-provided way to recover or map those users after the app transfer? -
Can a Private Relay email address change as part of or after an App Store app transfer? Should we avoid using email as a stable identifier for this migration?
-
Should we delay the app transfer until we implement our own account recovery and account re-linking flow for all Sign in with Apple users?
Environment:
- Platform: iOS
- Development environment: Xcode
- Runtime: iOS
- Framework: AuthenticationServices
- Feature: Sign in with Apple
- Context: App Store Connect app transfer between Apple Developer teams/accounts
This issue does not appear to be specific to a particular iOS or Xcode version. We expect the development and runtime environments to be using the latest available versions of Xcode, macOS, and iOS at the time of submission.
Any guidance on the correct migration behavior and the recommended implementation approach would be greatly appreciated.
Hi @jayko,
Please see my answer on this post below:
Sign in with Apple after App Transfer: What happens if a user signs in after the 60-day migration period?
https://developer.apple.com/forums/thread/828529?page=1#890907022
For the additional questions below, you wrote:
- If we have a legacy sub value and generate the transfer identifier before the app transfer, can the user still be mapped to the original account if they do not sign in during the Sign in with Apple migration period?
Yes, the transfer ID will remain the same for the same user for both developer teams after the app transfer (within the 60-day transfer period). The user ID (sub), however, will be different as they are associated 1:1 with each developer team and user account.
Then, you wrote:
- After the migration period has ended, does Apple provide any identifier, token claim, API response, or other mechanism that allows us to correlate the post-transfer Sign in with Apple user with the pre-transfer user?
Yes, the transfer_sub. Please see the post below for more details. In addition, please review TN3159: Migrating Sign in with Apple users for an app transfer.
Next, you wrote:
- For legacy users whose original sub value was never stored, is there any Apple-provided way to recover or map those users after the app transfer?
No. It was expected to store these users IDs and use them and the static, unique identifier in your user database.
The user ID should have always been the stable identifier for Sign in with Apple. The user has the ability to hide/show their real email address at any time. In addition, they're also able to disable emails altogether. For example, a user could create an account with abc123@privaterelay.appleid.com and then update it later to use their real email address: test123@example.com. This is expected behavior, so the user ID should be the only unique, stable identifier used in your database.
Then, you wrote:
- Can a Private Relay email address change as part of or after an App Store app transfer? Should we avoid using email as a stable identifier for this migration?
Yes, please see my answer above. The email address can be changed by the user even without an app transfer. However, if a user elects to provide their private email to your app, when the app is transfer, the associated private email will also be changed to the private email address associated with the new developer team. The emails will continue to be forwarded after the app transfer, with no delivery interruption to the user.
Lastly, you wrote:
- Should we delay the app transfer until we implement our own account recovery and account re-linking flow for all Sign in with Apple users?
It is recommended to provide an account recover and re-linking flow to de-duplicate and merge user accounts—it would be wise to provide a merge/link account flow for your users, regardless of if their account was created using Sign in with Apple.
Cheers,
Paris X Pinkney | WWDR | DTS Engineer