App design strategy

In my experience as a software developer I always like to develop software with making the least number of assumptions about an end user as is possible.
As a hobby 2 of us are in the process of developing a wiki type app where users will upload/download content as they desire. Record their interest in subjects, get automatic updates on these subjects etc. Simple stuff.
Problem is, do you design an app with the assumption that a user will ALWAYS have a data connection and if not they will just have to whistle or do you allow them to use the app when no data connection is available and buffer the uploads/New Download updates until their connection comes back on line.
The first option is by far the easiest to code for, the second one requires more thinking and is a lot trickier.

Any opinions welcome

Your first sentence said it all from the view of a developer - the developer should care for every case … should because it is not always possible or economical to do so.

In case of the connection it depends on the app. Every approach has its own drawbacks so the user should be able to choose for himself.

Always connected drains the battery faster, but in case of a wiki or a translation programm there is simply to much data to save them locally.

Caching is a more nice thing - think about the case that the user is at home and uses your app to investigate something. Maybe he wants to show that a friend but will have no inet connection at his friends site (or in the pub) - think of tablets too, they often have only WiFi.

I think the best approach would be to handle it like a browser would cache data. It’s much more work to implement such a mechanism so the developer has to decide if it is worth the extra work (and extra error handling and dialog handling for “cleaning the cache”

If you ask me, I would say go for the easier to implement approach first. And if the app is sucessfull you can still add the cache function to it. (better for free apps)

Are you just looking at caching read content or also allowing edits through the app?

My view as a user is that I want to be able to access my app data without a connection. If I’ve been viewing something earlier, I shouldn’t then be prevented from doing so because I’ve lost connection. The most common use case for me is my morning commute. I take the tube into work, so spend most of my time underground. For this reason I want to be able to access my content while I’m stationary (sitting on the tube) but without a connection then have an app update when I have a data connection (but am not using the app as am walking from the tube to the office).

There are two apps that I’ve found do this really well. The first is the Wordpress app which is great for caching posts, letting me edit drafts and then sync when I have a connection. The second is the gReader app which now has offline caching for posts - honestly, this app is fantastic and you should take a look at it for some inspiration.

Edit: p.s. I completely agree with the suggestion of implementing this as a feature later. Even if you start coding it now, as it may take some time it’ll let you get to market sooner.