New App taking over Bundle Id from old app.

Hi everyone

We have brought the iOS development in-house from a consulting firm and have developed a new app that will replace the old one. To minimize disruption for users of the old app during this upgrade, we would like to release the new app as an update to the old one, using the Bundle ID from the old app.

It is important to note that the old app has already been released through the App Store. The two apps share no code and are almost incompatible on any points.

Is it possible to change the Bundle ID and delete UserDefaults from the old app during the transition to the new app?

We look forward to your input!

Answered by DTS Engineer in 852128022

You have to be careful about terminology here. From the perspective of App Store Connect and iOS, apps are uniquely identified by their bundle ID. If you change the bundle ID, you get a different app. Conversely, if you don’t change the bundle ID, it’s the same app, regardless of how much of the code has changed.

IMPORTANT If you ship a new app, it doesn’t ‘see’ any of the user state from the old app. That includes the users who bought the app, any in-app purchases or subscriptions they made, keychain items, and any files in the app’s container. I don’t think that’s what you’re aiming for here!

We have brought the iOS development in-house from a consulting firm

Did you previously ship the app from your team? Or did your consulting firm ship it from a different team?

If you shipped the app from your team, you shouldn’t encounter any difficulties here. You are, effectively, shipping an update to your app that just happens to change a lot of the code.

OTOH, if you’re changing teams, that does complicate things a bit. Lemme know if that’s the case and I can go into more detail.

Is it possible to … delete UserDefaults from the old app during the transition to the new app?

Presuming that you don’t change the bundle ID, there’s no way to delete user defaults during an app upgrade. You have two options here:

  • Write your new code so that it understands and correctly works with the state from the old code. That includes user defaults and other files stored in your app’s container.
  • Write your new code so that it completely ignores the state from the old code. For example, with user defaults that means using a new set of user default keys.

Share and Enjoy

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

You have to be careful about terminology here. From the perspective of App Store Connect and iOS, apps are uniquely identified by their bundle ID. If you change the bundle ID, you get a different app. Conversely, if you don’t change the bundle ID, it’s the same app, regardless of how much of the code has changed.

IMPORTANT If you ship a new app, it doesn’t ‘see’ any of the user state from the old app. That includes the users who bought the app, any in-app purchases or subscriptions they made, keychain items, and any files in the app’s container. I don’t think that’s what you’re aiming for here!

We have brought the iOS development in-house from a consulting firm

Did you previously ship the app from your team? Or did your consulting firm ship it from a different team?

If you shipped the app from your team, you shouldn’t encounter any difficulties here. You are, effectively, shipping an update to your app that just happens to change a lot of the code.

OTOH, if you’re changing teams, that does complicate things a bit. Lemme know if that’s the case and I can go into more detail.

Is it possible to … delete UserDefaults from the old app during the transition to the new app?

Presuming that you don’t change the bundle ID, there’s no way to delete user defaults during an app upgrade. You have two options here:

  • Write your new code so that it understands and correctly works with the state from the old code. That includes user defaults and other files stored in your app’s container.
  • Write your new code so that it completely ignores the state from the old code. For example, with user defaults that means using a new set of user default keys.

Share and Enjoy

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

Hi Quinn "The Eskimo!",

Thank you for your response. It makes sense that this will simply be regarded as a "major" update to the existing app. We are using the same team, so there are no issues there.

Our approach will be to "forget" the old data and start fresh.

I also want to mention that the old app supported iPads, but the new app does not. We have noticed that the App Store is complaining about this. When reading online, it gives the impression that it is strictly forbidden to change device support in this way.

I look forward to hearing your thoughts on this!

Thanks again for your help!

Accepted Answer
We have noticed that the App Store is complaining about this.

Ah, yes, that’s known as the device narrowing problem. I’m only able to offer you a code-level solution to this, and that’s obvious: Support iPads directly. One of the nice things about SwiftUI is that it makes this sort of thing much easier.

As to whether there’s a way around this at the App Store Connect level, I don’t work for App Review so I can’t offer an opinion. If you want to ask about that, I recommend that you start a new thread for just that specific topic. Put it in the App Store Distribution & Marketing > App Review subtopic so that the relevant folks see it.

Share and Enjoy

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

Hi Quinn,

Thank you so much for your guidance!

I have followed your instructions and posted my question in the appropriate group here: Thread 796043

I appreciate your assistance and look forward to any further insights from the community.

Best regards, Kedde

New App taking over Bundle Id from old app.
 
 
Q