How would you design a mobile app that handles retries, failures, and network instability gracefully?