Clarification on Team ID Behavior After App Transfer

Hi everyone,

I’d like to clarify something regarding the behavior of Team IDs after an app transfer between Apple Developer accounts.

I have an app update that enforces a force update for all users. My plan is to release this update under the current developer account, and then proceed with transferring the app to a different developer account shortly afterward.

My concern is: once the transfer is complete, will users who download the same app version (released before the transfer) be logged out due to a change in Team ID? Specifically, does the transferred app continue to use the original Team ID (used to sign the last submitted build), or does the Team ID change immediately upon transfer — affecting Keychain access?

Any insights or confirmation on this would be greatly appreciated. Thanks!

Answered by DTS Engineer in 842034022

iOS always uses the data protection keychain, where keychain access is gated by the app’s entitlements. See Sharing access to keychain items among a collection of apps for the details.

When you do an app transfer, you lose access to the keychain access groups you previously had access to. See App ID Prefix Change and Keychain Access for more on that.

The old version of your app continues to exist with the old entitlements. It’s able to access all the keychain items it was ever able to access. When you update your app in App Store Connect, the new version will have the new entitlements. When a user updates from the old to the new version, the app loses access to the old keychain access groups and hence the keychain items created by the old version of the app.

iOS doesn’t let users downgrade your app, so you don’t have to worry about the other direction.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Is this on macOS?

That matters because keychain access on macOS is a lot more complicated that it is on iOS (or its various children). See TN3137 On Mac keychain APIs and implementations.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Hello Quinn,

Thanks for your reply. I'm sorry for not mentioning, it's on iOS.

iOS always uses the data protection keychain, where keychain access is gated by the app’s entitlements. See Sharing access to keychain items among a collection of apps for the details.

When you do an app transfer, you lose access to the keychain access groups you previously had access to. See App ID Prefix Change and Keychain Access for more on that.

The old version of your app continues to exist with the old entitlements. It’s able to access all the keychain items it was ever able to access. When you update your app in App Store Connect, the new version will have the new entitlements. When a user updates from the old to the new version, the app loses access to the old keychain access groups and hence the keychain items created by the old version of the app.

iOS doesn’t let users downgrade your app, so you don’t have to worry about the other direction.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Hi Quinn,

Thanks again for the helpful explanation. I just want to double-check one key detail for my specific scenario:

  1. I submit and release an app update (e.g., version 2.0) today, under the original developer account.
  2. A few days later, I transfer the app to a different developer account.
  3. I do not submit any new update after the transfer.

Some users update to version 2.0 after the transfer is complete. Given that version 2.0 was signed with the original developer account (before the transfer), will those users still be able to access the original keychain data and remain logged in?

Clarification on Team ID Behavior After App Transfer
 
 
Q