Platform Lifecycle Constraint
The operating system's rules about when your process runs, which are not negotiable and invalidate most assumptions carried over from server code.
A mobile application does not control its own execution. The operating system suspends it when backgrounded, terminates it under memory pressure without notice, restricts what may run while the screen is off, and applies increasingly aggressive limits as the user's habits suggest the application is unimportant.
Three consequences dominate the architecture. State must survive termination at any point, because there is no shutdown hook that is guaranteed to run — anything held only in memory when the process is killed is gone, including a partially completed form. Background work is a request rather than an instruction: a scheduled sync runs when the platform decides, which may be hours later or, on a device in a battery-saving mode, not at all. Long-running operations must be resumable, since an upload interrupted by suspension has to continue rather than restart.
The failure this produces in practice is a synchronisation design that assumes the application gets to run periodically. It does not, on a meaningful proportion of devices, and the users affected are disproportionately those with older hardware and tighter battery constraints.