According to Craig Walker, a mobile website is a quicker and cheaper solution for serving content on mobile devices than building a native app, provided you’re willing to live with this:
- You can’t access the device’s hardware (compass, accelerometer, camera etc).
- Useless without an internet connection.
For example if you were producing an app for surfers that allowed them to check-in at remote surf locations and add a photo, you’d be building a native app, because you can’t be net-dependent.
Update: HTML5 can store data locally. See Use HTML5 LocalStorage in your Mobile Web Applications and HTML5 in the browser: Local Storage.
Sencha, PhoneGap, Titanium and jQuery Mobile allow you to build mobile sites that behave like apps. PhoneGap even packages it as an app for selling in an app store. These frameworks allow you to mimic the behavior of apps and understand user gestures, largely thanks to Webkit, which is supported by iOS Safari, Android, Blackberry 6 and HP/Palm’s webOS.
Walker mentions that Windows Phone 7 isn’t suited to sites built with these frameworks yet because “the browser’s crap”. If you wanted to provide a clean user experience for Windows Phone 7 users you’d have to serve them something a little more static.
Update: See Design for Mobile: Native vs. Web Apps by Luke Wroblewski.