This is the age old question for app developers. To state my bias, I make a living creating mostly native app and the occasional web app, but I greatly prefer working on native apps. I'll be referring to iOS devices for all of this, but it applies to the Mac (sorta, see the end), Android, and almost any other platform.
We Can All Agree
We can all agree that native apps have a much better experience than web apps, especially on slower devices (like the iPhone). Pull up your contacts in your iPhone and flick through them really fast. See how smooth that was. Now pull up any website and do the same. Not so smooth. Checkout Cover Flow in the iPod app. Amazing, right? Show me a website that does that that smooth. You can't.
The reason that native apps greatly out perform web apps is that there is a lot more processing power used to render website than it is to render native apps because they are... well, native. Websites need to run through some sort of engine, in this case WebKit, to convert them to something that can be used by the device.
You don't see games like Angry Birds or apps like Twitter for iPhone in your browser, because they simply can't make something that elegant and preformant. Partly due to some of the technologies not being available to web developers and partly due to browsers not being able to handle that much stuff efficiently.
So let's all agree that native apps are ideal over web apps. I could go on and on about this, but I think you get the idea. (If you don't agree, I think you're wrong and would wonder why would would ever use or want to make native apps. You should probably stop reading this and point your beloved browser elsewhere. Just kidding, but seriously.)
The main question I have for anyone asking this question is "Why do you want to make a web app over a native app?" There are usually two answers that people give me:
- If we make a web app, we won't have to make it for each platform.
- If we make a web app, we will be able to develop it faster.
Notice that it is never "If we make a web app, it will be a better user experience for the user." because that is never the case. You are trading user experience for quicker development time and platform flexibility. For some, this is ideal. In that case, make a web app.
In my experience, 90% of the time you want the best user experience possible. I want to make my users happy. I think providing them with the best user experience is the best way to do that. (If you are trying to make money of your app, more happiness = more dollars.)
I would rather trade development time and platform flexibility for a better user experience because I am passionate about making the best apps possible for my users.
I wrote this in the context of mobile development. I think this still applies to the desktop, but it is a very different space. Most users don't buy apps or even understand that concept on the desktop. Web apps are great for most cases. Obviously you can't edit music or video (effectively) in a browser. Stuff like that will probably always be a "native app."
Also, there are lots of other pros and cons for both that I could have went into, but I decided to keep this short. With any other pros added to web apps, my conclusion still stands.