Best case, check out your code, bump the version number, touch up your copyright date, hit "Run", do your testing¹, hit upload, have a sandwich, check it out in TestFlight, approve a release, maybe check a few boxes that say you aren't shipping super secret encryption technology to shunned nations.²
But usually after a few years Xcode will bitch at you about a lot of stuff, so maybe you raise the minimum OS version requirement, click "Fix it" on a lot of API respellings, find a couple that it can't automatically fix so you have to google that a bit. Then test and upload.
Maybe get in a fight with Xcode over your signing keys.
Sometimes something you were using gets deprecated and you have to use the newer replacement. That takes some coding.
It can get ugly if the 'owner' in the app store is not you or is an entity you no longer control. Then you have to get them involved to do the chain of trust signing.
If you produced it under contract, you may not be legally allowed to update it without a new contract.
␃
¹ do your testing is easy to say, but that could take an arbitrarily long time depending on how thorough you are. I expect this to be the dominant cost for most game updates.
² I pulled out one of my aging apps and just did all this to check, 10 minutes from "checkout" to "installed in TestFlight". The dreaded App Store review was 3 minutes. This isn't really a fair data point though, Xcode didn't suggest any source code changes so it was just bumping numbers and rebuilding.
There are many dependancies that require some kind of reimplementation, it's a pain.
I have made things easier (in the long run) with my last game. I wrote it all in c++ with all dependancies under my control. I was thinking >20 years ahead for that one.
Realised that was a bit snarky of a comment, I'm using a a modified version of Cocos2dx .v4.
It took way longer to create than if I was using Unity, but its a great solution for a small and performant end product. I was able to get Kanso down below 100MB and will run on a total potato. Something I highly doubt I could do in Unity without some serious effort.
Consistently not being able to run code that was just fine 2 years ago. Consistently having "quality assurance checks" that somehow always entail paying more rent to Apple.
But usually after a few years Xcode will bitch at you about a lot of stuff, so maybe you raise the minimum OS version requirement, click "Fix it" on a lot of API respellings, find a couple that it can't automatically fix so you have to google that a bit. Then test and upload.
Maybe get in a fight with Xcode over your signing keys.
Sometimes something you were using gets deprecated and you have to use the newer replacement. That takes some coding.
It can get ugly if the 'owner' in the app store is not you or is an entity you no longer control. Then you have to get them involved to do the chain of trust signing.
If you produced it under contract, you may not be legally allowed to update it without a new contract.
␃
¹ do your testing is easy to say, but that could take an arbitrarily long time depending on how thorough you are. I expect this to be the dominant cost for most game updates.
² I pulled out one of my aging apps and just did all this to check, 10 minutes from "checkout" to "installed in TestFlight". The dreaded App Store review was 3 minutes. This isn't really a fair data point though, Xcode didn't suggest any source code changes so it was just bumping numbers and rebuilding.