Questa è solo una supposizione, ma penso che la loro ragione iniziale sia stata la limitazione di iOS per l'esecuzione di attività in background. Apple ha una politica rigorosa su come un'app si comporta quando è in background - e per buone ragioni, anche.
Una normale app iOS ha un tempo limitato per eseguire il codice quando viene spostata in background (circa 10 - 20 secondi, CMIIW), di solito per salvare lo stato corrente dell'applicazione o inviare dati analitici. Questa limitazione impedisce l'implementazione di WhatsApp Web, dal momento che hanno bisogno che l'app WhatsApp iOS invii nuovi messaggi alla web app - anche quando l'app è in background.
Apple permette ad un'app di continuare a funzionare in background solo se hanno davvero una buona ragione per farlo. Nel caso di WhatsApp, IMHO, è la sua funzione VoIP. Apple permette alle app VoIP di continuare a funzionare in background, poiché devono essere in grado di ricevere chiamate anche quando sono in background, no?
Quando hanno inchiodato la funzione VoIP, hanno anche usato il privilegio di funzionare in background per inviare i messaggi ricevuti alla web app.
Ancora una volta, questa è solo un'ipotesi. Non ho avuto alcun contatto con nessun ingegnere di WhatsApp. . . per ora 😉 Correggetemi se mi sbaglio 🙂
Altra lettura: Documentazione di Apple sull'esecuzione in background