In-app purchases (IAP) are unique to iOS and Android in the amount of revenue they can drive, and the challenge of testing these on large and complex apps.
IAP is unique to mobile platforms and when you sell digital products, not implementing it is rarely an option. You have to pay a hefty fee of 15% on revenue up to $1 million annually (both for iOS and for Android), and 30% above this.
...
CI/CD for simple backend services and small web applications is straightforward. Yet, even for simple mobile applications, it is less so: mostly because of the manual submission step for the app store. Doing a fully automated continuous deployment pipeline is impossible to do so for iOS App Store apps due to the manual review gate. On Android, you can automate this process, as you can with enterprise iOS apps.
You can’t have a fully automated continuous deployment to the App Store on iOS, thanks to the manual App Store Review process.
...
Though offline support is becoming more of a feature with rich web applications, it has always been a core use case with native apps. People expect native apps to be usable when connectivity drops. And they certainly expect state to not get lost, when the signal drops or gets weaker for a short period of time.
Proper offline mode support adds a lot of complexity and interesting edge cases to an app.
...
An app crashing is one of the most noticeable bugs in any mobile app - and often ones with high business impact. Users might not complete a key flow, and they might grow frustrated and stop using the app (also referred to as churning), or leave poor reviews.
Crashes are not a mobile-only concern: they are a major focus area on the backend, where monitoring uncaught exceptions or 5XX status codes is common practice.
...
Old versions of the app will stay around for a long time - this can be measured in years. This is unless you’re one of the few teams that have a strict force app upgrade policy in place. Apps that have a rolling window of force upgrades include Whatsapp and Messenger. Several others use force upgrades frequently like banking apps Monzo or American Express.
While the majority of users will update to new app versions in a matter of days, there will be a long tail of users being on several versions behind.
...
The second most common pain point is caused by mobile apps being distributed as binaries. Once a user updates to a version with a client-side bug, they are stuck with that bug, until a new version is released and users update to this version. There are a few challenges here:
Apple does not allow updating native code on the fly. Interestingly enough, they do allow this with non-native code like JavaScript: and this is why solutions where business logic is written using JavaScript, bug fixes are pushed to the client are gaining popularity.
...
State management is the root of most headaches for native mobile development - as well as single page app web development. Mobile applications are almost always stateful. On top of keeping track of the current state in business flows, you need to make sure you handle app lifecycle transitions (iOS, Android). Examples of the app-level lifecycle changes are the app pause and going to the background, coming back to the foreground or being suspended.
...