The next mobile app platform is an old mobile app platform.
In the November 2011 issue of JsMag, a JavaScript e-mag that I contribute to, I introduced the readers to creating an offline web app that looks and functions almost like a native iOS app. By using a small number HTML 5 constructs, some iOS specific meta-tags, and a tiny bit of JavaScript, the end result of the article was a sprite animation of a minotaur, as is shown in Figure 1.
What the article set out to show is that a web app can look and feel like a native iOS app and that opinion that native iOS apps are the only way to go, especially on the iPhone, is not true.
Then I recently read a post from Scott Hanselman title “Apps are too much like 1990′s CD-ROMs and not enough like the Web“, which also lead to me reading Dave Winer’s “Why Apps Are Not The Future“. Both made points that I have made to my circle of friends and coworkers for some time now: If given the choice to write a native app (either as a desktop app or a mobile app) or a web version of it, 9 times of out 10, I would choose the web version. This comes after more than 15 years developing in both Desktop, Mobile, and Web platforms. My reasons are numerous and self-serving, but if you are bothering to read my blog, I guess you care a little so here are some of them.
Native/Desktop apps are slower to respond to consumer demands
The world of consumer software and demands changes so quickly. One day they are happy with version 1 that gives then a taste of the next cool tool, the next day they are already bored and want more. Then there is the whole issue of bugs, which there are always bugs in your code.
With native apps, getting updates to the user is a much slower process for the simple reason that the normal user doesn’t update. Like Scott Hanselman points out, when I look at a friend’s iPhone, I often see that the AppStore has several pending updates waiting for them. Most see the number on their screen, some even know that it means they have updates, but they often just don’t bother to do it for whatever reason. So even if the native app developer is churning out new updates every week, the bottle neck really is the user and their desire to update. Then you have to deal with users not really liking that they have to keep manually downloading updates. So if the developer is churning out new updates every week (like it appears Adobe does with Flash and Acrobat Reader), the user just gets annoyed and uninstalls the app.
You don’t have this issue with web apps, even offline web apps. They get the latest and greatest the moment they launch your app. If it’s an offline-enabled web app and they are online, the latest is automatically downloaded to the client. The browser (which is the host for any web app, even offline ones bookmarked on your home page), will always try to get the latest version if possible.
The Web is the truly cross-platform
How common is this scenario? Company A comes up with the next big thing in mobile apps. They write it for the iPhone and it reaches millions of people in a matter of days. Then the CEO of Company A says, “Hey, great job reaching those millions of people, but what about the other millions of people on Android? And can we target Windows Desktop people as well?” There lies a huge problem with Native apps. They are NATIVE to single targeted platform! That means they can’t just be installed on another platform without rewriting it, usually in a completely different language.
To add to that annoyance, the interface and usage will also differ because different platforms have different ways of doing things.
Web apps, though, don’t suffer from this limitation. A properly written web app will function just the same on iOS, OS X, Windows, and Linux. That’s because the web is truly cross-platform and that is a huge benefit of web apps. Support for HTML 5/CSS 3/ECMAScript 5 is becoming ubiquitous among all modern browsers. Older browsers without native support often have work-arounds already built in.
Also, a web site can be developed to account for the different types of devices (mobile, tablet, or desktop) with little additional work and give each of those types of devices a different interface. The amount of work that is needed to write different presentation engines for mobile, tablet or desktop is much smaller than the work needed to rewrite a whole application in a completed different language. It’s a single code-base, a single install, and has a proven record of success over the past several years.
Take them anywhere
Native Apps are anchored to the device they are installed on. If you have an iPad and install an app, it’s great that you can play it anywhere you tout the iPad. But what if you are not the kind of person who takes their iPad everywhere they go, you know… like normal people? Let’s say you are at lunch at work and want to mess around with your village in the latest build/manage/grow type game? You can’t do it because that app is on your iPad… at home! If only iCloud would let you access your apps from any device (hey, there’s that cross-platform issue again).
Again, web apps don’t have this issue. They are on the internet, which everyone feels needs to be called the Cloud now. If you have a network connection, which most of you do, then you can get access to your app.
Link them together
Dave Winer makes an excellent point about apps, they are stand-alone programs with absolutely no interactions with other apps. It’s not easy to tie native apps together because of security concerns, OS limitations, and, well, the damn app may not even be running on the device!
Web Apps, on the other hand, don’t have the OS limitations (wow, cross-platform helps out again!), they are always running, available to anyone with a network connection, and with the proper design, can limit the security concerns. Of course nothing is 100% safe. If a security hole is found, it needs to be fixed ASAP and corrected on the web app and deployed to all the users. Oh wait, updates are AUTOMATIC!
Linking allows web apps to grow together and symbiotically, even if they are developed by completely different groups of people. The linking promotes better a better and richer experience for the user. What would Facebook be like without it’s third-party apps? While I hate the notifications and game requests I get, there are millions of users who really do enjoy them and play them. And that’s why they keep coming back to Facebook.
Develop Apps for free
Web Apps can be developed with out needing any special developer license or tool. Notepad and a browser is all that is needed, although downloading one of the many free HTML/Web Developer IDEs is highly recommended.
With iOS, you need Apple’s (or some other third-party) tools to develop them. Same is true with Windows Mobile and Android, although free development environments are out there. Of course there’s the whole Developer License thing that you would need.
Keep all your profits
All the major players in the mobile app platform take a cut of your sale prices, usually %30. Then there’s the whole not getting the 30% back if the person returns the app, you are out 30% regardless of what happens.
Since Web Apps are not tied to the an AppStore (which is also a negative, see below), any revenue generated is 100% yours. How you generate revenue is your question to answer, but there are several successful models out there already for both Native and Web Apps.
The downside to Web Apps
While I may have painted a perfect world in which everything good in the world is a web app, there are downsides to them.
Web Apps are not promoted through the AppStore, a marketing beast in the mobile world. That makes finding Web Apps for the mobile tougher. However, there are work-arounds to that, like wrapping the app in a thin native app that simply contains a Web Browser control or automatically opens the browser. Or just market your Web Apps a little better than relying on the AppStore.
Web Apps need to be hosted. While developing Web Apps is free, hosting Web Apps is not. But the market for web hosting is very competitive and hosting can be found cheaply, as in under $10 a month, and often guarantee 95%+ uptime. You can’t beat that.
Web Apps don’t do local file IO and 3D graphics as well as native apps and often don’t have access to some native device features, like the camera or microphone. These are the limitations of a Web App and if you need to do these kind of things, but all means, please go the Native app way.
I heart Web Apps, but you don’t have to
As you can tell, I’m a big proponent of Web App development in the mobile space as well as the tablet and desktop space (can’t wait for Windows 8). But that is because they almost always meet my needs. Web Apps won’t meet everyone’s needs and when deciding the direction to go, you have to write out what are you needs and see if the Web App can meet that. But don’t discount what a Web App can do for you. A little research online will show that Web Apps are much more powerful than you think

