There is an infinite supply of reasons for why the application can fall off the fast path: overloaded networks and servers, transient network routing issues, device throttling due to energy or heat constraints, competition for resources with other processes on the user's device, and the list goes on and on. video
Resilient applications provide guardrails that protect our users from the inevitable performance failures. They anticipate these problems ahead of time, have mechanisms in place to detect them, know how to adapt to them at runtime, and as a result, are able to deliver a reliable user experience despite these complications.
Treat offline as the norm.
All request must have a fallback.
Use available API's to detect device & network capabilities.
Adapt application logic to match the device & network capabilities.
Observe real-world performance (runtime, network) at runtime.
Ilya Grigorik is a web performance engineer at Google, co-chair of the W3C Web Performance working group, and author of High Performance Browser Networking.
See also Progressive Web Apps across all frameworks. video