I've been reading a fascinating book called High Performance Browser Networking by Ilya Grigorik. In fact, you can read it too because Velocity Conference has covered the cost of accessing the online copy.

High Performance Browser Networking

The latest gold nugget I ran into today was a recommendation to:

Decouple user interactions from network communication

Why would you want to do this?

Mobile devices, especially older ones, have a high overhead in establishing network connections and can easily suffer from poor connection quality. If you accept a UX interaction on the local device before attempting to supply the changes to the remote server, the end user interaction is then made asynchronous to the network traffic.

This change in thinking does increase the complexity of the local application code, whether JS or native code, but the benifit is a decrease in apparent latency to the end user.

Read the book

This book goes into further details on latency to establish connections and energy use increases to many of the techniques we take for granted in modern application as well as web development (i.e. polling, streaming).