Cross-platform applications are a popular choice for clients as they offer the chance to develop an app for both iOS and Android at a reduced cost.
For certain projects, with the correct use case this may be true. However, there are sometimes pitfalls along the way that can negate some of the up front cost benefits.
A recent report from Forrester highlighted that 59% of the time, apps developed solely using HTML5 took longer to deliver than was planned. This backs up what we find internally.
Let’s take a look at some of the pitfalls as well as the benefits of cross-platform development:
When developing for HTML5, we will look at the features required and work out the best way to make them work across as many different devices as possible.
Like many other developers out there, we often run into difficulties if the backends we are plugging into change; or a new feature is requested once the app reaches development stage.
There are a number of different scenarios that can’t always be accounted for which will arise during the development of cross-platform apps built in HTML5.
The number one issue with cross-platform apps occurs when a bug that becomes apparent on one platform is fixed, only to cause another problem on a different platform or device.
For example, during development, we will detect a bug on iOS 7.0; this is then fixed and verified only for us to find that it causes a new issue on the Samsung Galaxy S3 running an older version of Android (or any other version or device running Android). This often results in project delays as it increases the time spent fixing issues and ultimately increases the resource pull on QA departments.
Due to the nature of HTML5 development, the testing and refining side of app creation tends to take significantly longer, depending on the complexity, due to the amount of testing required on different devices. Even with using digital tools that simulate different devices; tests need to be carried out on devices running different versions of OSes, with different network speeds and other parameters that could ultimately affect the reliability of an HTML 5 app.
Louise Sturgess, Mubaloo’s Project Director said, “The base code is quicker to write than two sets of native code. The problems come when testing across Android devices, where behaviour differs, and trying to get that code to then behave across multiple platforms and devices. This is generally where we see cost savings drain away!”
The second major challenge in developing cross-platform apps is having control and flexibility over the user interface.
Native apps allow you to include slicker transitions and animations, whereas hybrid apps offer less flexibility. Say you wanted to create multiple form fields on a screen; different versions of the Android operating system and different devices may render these UI elements differently. The placement may be slightly off on one device and fixing it could then have a knock on effect for another device.
One of the considerations with cross-platform development is the wide spectrum of devices and screen types to design for. When we start projects, we make clients well aware of the advantages of each approach. We have heard of some companies who try to chase perfection though.
James Ward, Mubaloo’s Senior Web Developer adds, “Webview rendering issues on Android versions older than 4.4 affect android devices with non-unit pixel densities. I think the take-away is don’t be too picky about pixel-perfection with web UIs, especially on Android, or you just end up wasting the efficiencies you gain by going web-based in the first place.”
Memory and performance
When web apps have performance issues or crash due to memory running out it can be difficult to accurately diagnose the problems. Android and iOS SDKs have tools in place that make diagnosing native app issues easier. With mobile web there is a lack of support in comparison and it can be more time consuming when trying to diagnose performance issues.
Web based applications have limitations in terms of UI control, regression and diagnostics. Whilst hybrid apps allow you to cut down on implementation and maintenance on functionality that can be shared between platforms – when you take away the factors of cost and time it’s ultimately better to develop apps natively. Initial savings on time can be eaten away by lengthy fixing and testing cycles meaning in most cases, with the right budget, you’d want to go native.
By Tom Barbour, project manager