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!
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"