Immobile Apps

Many of my favorite mobile apps are immobile. I can't take them with me.

At least not if I'm going somewhere that doesn't offer a fast internet connection. Like the small town I recently visited for five days.

I couldn't use Twitter there because it kept timing out before downloading the latest tweets. And Facebook was completely useless – it wouldn't even let me view stuff that had been previously downloaded.

Almost all the apps I use – including some games that shouldn't even need a connection – became immobile.

It reminded me of the early days of desktop development, when too many developers assumed that everyone had a computer as fast as theirs. These days too many developers assume that everyone has a connection as fast as theirs.

One of the most painful things we did when developing Glassboard was ban ourselves from Wi-Fi for a week. I live in an area where cell coverage is really spotty, and using our app without a fast connection was eye-opening and humbling. I spent the next week rewriting huge chunks of the app so it would better handle poor (or non-existent) network connectivity.

If you're a mobile developer, I urge you to do the same. Spend several days using your software without a fast connection, and chances are you'll find – as I did – that you've unwittingly built an immobile app.

13 thoughts on “Immobile Apps

  1. A very easy way for iOS developers to do this is to use the Network Link Conditioner. It is a pref pane for Lion that ships with Xcode 4.2 and allows you to shape your Mac’s network interface to behave like bad EDGE, spotty Wi-Fi, decent 3G or anything else you want to model.

  2. Apple is most guilty of assuming an infinitely-fast, unlimited Internet connection. Now that Logic and MainStage are distributed only through the App Store, downloading all the content can easily take 40 hours. And if you want to install on another machine (which is expressly allowed) you have to download everything all over again on that computer.

  3. Such a good point. The spotify mobile app doesn’t even open without a connection – it needs to “log into Facebook” – despite being sold as a great place to my play my local files.

  4. It’s great if you can rewrite the code to handle slower connections while also providing a great experience for faster connections. But it would be a shame to withhold features or “dumb down” the app just so a small number of people with poor connections (or old devices) can use the app. That would be like a desktop developer removing features so an app ran well on a machine with only 64 Megs of RAM.
    App development drives demand for faster hardware and connectivity, which drives demand for better, more robust apps. It’s chicken and egg situation and it would be a shame to hold back development to accomodate a small number of people with outdated hardware or poor connectivity. You should develop your app for the level of hardware and connectivity that “most” people have, not what the worst case scenario imaginable is.

  5. It’s not just poor cell reception that causes such issues though. I live in Australia, and every time an app hits a US server it’s a minimum 200ms delay per connection.
    Everything becomes slower over here, and it’s not because we have poor connections (although when you combine it with a poor connection things become comically bad).

  6. @Peter – you’re making the flawed assumption that people with slow connections are a small minority. I can assure you this is not the case. I live and work in a heavily-populated metropolitan area and more often than not I cannot get reliable 3g (let alone 4g) service while those locations that do have WiFi sure don’t have what I call “fast” connections. Many of my technologically-inclined colleagues feel the same.
    “App development drives demand for faster hardware and connectivity” – there’s another mistake you’re making – while demand may be increasing, carriers are just not keeping up with the connectivity demand and are always claiming their networks are being stressed out as it is (whether that’s actually true or not is another discussion entirely).

  7. I expressly write my apps to cache data for offline use, and queue requests for when the connection returns. However, users don’t seem to notice or value this.

  8. Curious… the same is true for FeedDemon. If you enable Google Reader integration, then if you don’t have Internet connectivity FD does not start. So I cannot view even what is already cached. Do you think to change this behaviour in the future?

  9. @Fabio FeedDemon should start just fine if there’s no connection. You can’t retrieve new articles, of course, but you can still read previously downloaded ones. If you’re seeing otherwise, please let me know exactly what you’re seeing.

  10. That’s not true if you are using synchronization with Google. FD ask for credentials, then simply tell me that was unable to connect to Internet, and there is only the Close button. Is it impossible to open the app and read the articles already retrieved.
    I know that if there is no Internet connection an app like FD is of little utility, but sometimes I need only to read what I already have retrieved, and I cannot. I would like a button with the option “Continue anyway”.
    I’m using FD 4.0.0.22.

  11. Peter: you don’t sound like an AT&T customer or live in a major city. In places like NYC, SF, DC, Boston, etc. it’s not uncommon for service to be overwhelmed – say a 15-20 minute period where the latest iPhone hardware cannot establish a single connection. Users need not to be reminded of this more often than necessary and it’s both better UX and good for your reputation if the app makes it clear where the delay came from
    One other reason why this is important: I ride DC’s subway daily. There’s no coverage in the tunnels, no matter what hardware you have. Apps like instapaper or Reeder work just fine and smart authors queue events (e.g. “share on Twitter”) so they happen when the train hits a station or heads above ground. Plane flights are quite similar.

  12. @Chris – Actually I am an AT&T customer and I am just outside of Philadelphia. I’m not saying app developers shouldn’t code their apps to handle network disruptions more gracefully, I’m saying they shouldn’t forgo features or “dumb down” the app simply because not everyone has a great connection all the time.
    The fact that the carrier’s networks are overwhelmed shows the need for the carriers to upgrade their network, not the need for the app developers to provide less functionality.
    I still stand by my original comment “App development drives demand for faster hardware and connectivity, which drives demand for better, more robust apps.” If everyone was happy watching postage stamp sized video on a dial up connection, that is where we would still be.

  13. Facebook is not completely useless if it wouldn’t even let you view stuff that had been previously downloaded…but it has many other options and features also..

Comments are closed.