Mobile Webapp v Native App


Recently I’ve been involved in a project to create a mobile website and accompanying mobile application. The question was immediately raised – “should we write a webapp or go native?” This seems to be a topic of much debate at the moment with pros/cons for either approach. For what it’s worth, here is my opinion based upon the experiences of myself and those around me.

So firstly, which route did we take? The business demanded that both the website and application have a shared UI experience. Also, the product would often be re-skinned and re-branded for different customers, so maintainability and ease of modification was of paramount importance. These key reasons (and several others) pushed us towards the webapp route, and it was finally agreed this would be the right approach, although by no means unanimously amongst the team and many had their doubts. However, with the browsers used by the major platforms being HTML5 compliant, it was agreed we should be able to create a rich app-like UI capable of closely matching the native experience.

To help bridge the gap to native functionality, we employed the PhoneGap framework into the project, it being judged as the most suitable of those available at the time.

3 months down the line, we had the core product working as a rich mobile website and integration into the app World begun in earnest. However all was not well in the World of webapps! Fundamental UI bugs started creeping in; the ability to have a fixed header/footer (css position:fixed) was not wholly supported and would require a horrible js solution or developing a native component. Element scrolling was either not supported or created issues with hit areas for form elements. The PhoneGap integration became problematic with conflicting documentation. We were forced into writing native code snippets to allow us to perform procedures, such as security checks and http polling. The number of issues mounted quickly and it soon became clear that we would struggle to produce a webapp users would perceive as native. That – coupled with the amount of native code being written – meant the tricky decision of switching to native apps was made.

It was a very disappointing experience. As a web developer I’d hoped this would be achievable. In time, browsers and devices will reach a level where they can emulate the native experience, but unfortunately that time is not now. If you’re looking to create a simple website and port it as a webapp, you’ll perhaps have more success, but beware that complex UIs may fall short and your hand may be forced. For now, I recommend keeping apps native and saving the web for the web. Watch this space though, when the time comes this will undoubtedly change.