I take a look at some of the changes to WordPress version 3.4. Theme customisation, twitter, WP_Query and much more...
Web apps are increasing in popularity. The main reasons for this include being much more accessible to web developers and web designers than native apps, generally being cheaper to develop for the client, and working cross-platform. It sounds good but if you’re considering developing a mobile app, the question of developing it as a native app or a web app isn’t always clear-cut. Ultimately it depends on your specific project requirements. But what are the differences between the two?
A native app has generally been built in either C#, Objective C or Cocoa. It will be built for a specific device such as iPhone, Android phone, Blackberry etc and will need to be downloaded and installed on your phone in order for it to work. These apps are downloaded from i.e. in Apple’s case, the App Store.
A web app is hosted online and is built using standard web technologies such as PHP, CSS, JQuery etc. It will look and work like a native app (to a point) but isn’t installed on the user’s phone. It has the capacity to work cross platform, and an icon can be saved on the user’s phone like a native app in the form of a bookmark for easy access.
Here are a few of the pros and cons for each type of app:
Full device access
Very fast performance
Not dependent on 3G / WiFi connection
Initial download required
Partial device access
Not available in App Store
No approval process
Typically more data used each time
Fast / easy updates
3G / WiFi connection always required
No initial download required
Okay so on first glance you may look at this and see that there appear to be more pros than cons for web apps, but this doesn’t necessarily mean that they are best for you. Let’s take a closer look at what each pro and con means.
Full device access
Having full device access means that you can use the mobile GPS, camera, have access to images, use the accelerometer/gyroscope and much more. If you you need this functionality, then chances are you’re going to need a native app. Depending on your functionality, you may be able to integrate a third party app to enable you to use these device sensors and file system functions. For example, you can use a third party application to enable your web app to browse for and upload images.
If you have a very simple application, the difference in performance between a web app and native app is negligible. However as the complexity increases, the performance of a native app becomes more and more obvious. This is largely because any calculations/logic are being done client side i.e. via PHP which is susceptible to server load and network latency, as opposed to using the on board hardware.
Being able to put your finished app on the App store is a big bonus, especially if you intend to make money by selling it for a one off cost. This is particularly true for apps like games, which if they do well or become popular, can sell in massive quantities and bring in a ton of revenue. At the very least it makes your app more accessible to your potential market. With a web app, you are limited to marketing it yourself, although it can be useful to have the app at a secure/hidden location if it’s not for public use (i.e. specific to a client’s needs).
Although the App Store is undeniably great, there are also issues including the approval process. Once you submit your finished app to the App Store, it can take a few weeks before it is approved and available for download. This isn’t a major issue, however I have heard a few people that have had real problems with this when it comes to working to a specific deadline (don’t set a deadline in stone as it will be largely out of your control) and updating you app (see next point). Clearly this is not an issue with web apps as it is available as soon as you upload it.
Updating your app
So at some point you may wish to update your app. This could be because you have an upgrade to the functionality, or something as simple as a few bug fixes based on feedback. With a web app, this is simple. As soon as you make the changes this is immediately reflected and all the web app users will see the update. With a native app, it is reliant on people seeing that an update is available and then updating it manually. The main issue I have come across with native apps relates back to the approval process at the App Store. Take this scenario as an example. A new app goes live and is downloaded by a few users. They notice a bug with the app and leave some negative feedback. The developer quickly updates the app and resubmits it for approval, but because the approval process takes a few weeks, the app builds up a lot of negative feedback and then stops being downloaded because of it’s poor rating. I’ve heard about this on a few occasions from various developers, and this can be a real problem.
As mentioned earlier, with native apps you develop specifically for a single device such as the iPhone/Android/Blackberry etc. With a web app, you only need to create one version of the app, but you can have slightly different stylesheets in CSS depending on the browser and screen resolution. This is a much quicker and easier way of having a cross-browser compatible app.
A web app is reliant on having an internet connection, and generally, this isn’t an issue with a mobile device as you will normally have either a 3G or WiFi connection. However, we’ve all experienced times when you don’t have a good signal (I used to have this issue driving up to Cumbria) or in the worst case scenario, none at all! Most native apps will work without a connection as all the files are stored locally on the device. If it uses a remote database for storing information, then most apps will store the information locally and then sync the data when a connection is next available. With a web app, this is not an option. Another interesting point with data usage is the initial download that is required with a native app. When you download the app from the App Store, it can take a few minutes to download especially if it is a large app with videos and images and you’re on a 3G connection. With a web app, you get much quicker access as you only need to download the parts of the app you view. On the flip side, however, over the lifetime of an app you may use more data overall with a web app compared to the initial download of the native app, even with elements of the web app being cached (i.e. if you watch an embedded video multiple times).
Finally, what normally makes or breaks a decision to go with a native or web app – the price! Generally speaking, a web app is much cheaper and faster to develop, and you have a lot more control when working within specific deadlines of a project. However, if you start getting into more complex functionality that requires a workaround or a series of third-party apps, this could become less cost-effective and a less robust solution, especially if you intend on rolling it out to a large number of devices. Specialist development teams that work only on mobile apps are your best bet, but these can have a high price tag associated with them. Depending on your requirements though, you may be forced to go down the native app route.
Wait! There’s more…
So just as you think you’ve got your head around the difference between native apps and web apps, there are still other options available. Here are just two more, but I’m sure a few people out there may be able to offer even more possibilities.
Building Native Apps with web technologies
There’s always the option of building native apps using web technologies. Again, this isn’t a perfect solution but may be a cheaper way of developing your app depending on your requirements. Using something such as Adobe AIR to wrap your app up in XCode, will enable you to create a native web app with access to a lot of the device features. This may not be a good solution if your building i.e. a game, but for a large proportion of apps this is all you need.
Cross-platform native apps
If you intend on developing an app to run on multiple platforms, there are SDKs becoming available that seem to allow you to export your apps into different native formats. I don’t know the full details of all this yet, but this could be quite a cost-saving exercise for those people developing native apps on multiple platforms.
So hopefully you have found this blog useful, and it hasn’t created more questions than answers. It really all depends on your requirements, but web apps can be a very good alternative to native apps.