Is PhoneGap mature enough for app development?

Mobile & Apps

1. Supported mobile platforms

The first and most important decision companies should make before developing a mobile business app is on which platforms the application should run. This decision has a direct impact on all further decisions regarding the user experience of the application, the development platforms, the speed and costs as well as future application scenarios.

If the application is only to run on one or a maximum of two target platforms and the application itself covers a limited or fixed range of functions, native development for each platform is definitely a sensible option. Development costs and speed are usually much better here. In addition, the user interface (UI) can be specifically tailored to the platform, hardware-related functions are easier to integrate and performance issues are easier to solve.

On the other hand, it is more worthwhile to rely on platform-independent development, the more variable or larger the range of functions is or should be. Examples of this would be various individual customer scenarios or a large number of functions that need to be implemented in the app over time.

Of course, this also applies if the application has to be made available on a variety of platforms. Here the initial costs are usually higher than with a purely native development, but this changes over time, since ideally new functions only need to be developed once for all platforms.

Since business applications, in contrast to "consumer apps", usually have a significantly longer runtime, a platform-independent development is also an advantage here. It offers investment security, both for you and for your customers, as porting to new platforms is usually faster and cheaper.

2. Hybrid versus web-based app

There are essentially two options available for platform-independent development: On the one hand, there are hybrid systems in which the actual application runs in a native container, which in turn enables access to operating system functions. These have to be written for each platform, while the actual application is created in a platform-independent language. Cordova / PhoneGap takes a leading position here with JavaScript as the development language and HTML for the UI.

Meanwhile there is a very promising new approach with "React Native" from Facebook, in which the UI is rendered natively, but still large parts (including the UI) can be implemented in JavaScript and thus a "best-of-both-worlds" Offer approach.

On the other hand, there are the pure web apps that run without a native container in the browser and use its (limited) functions to access the operating system. This is a very good choice for simple applications without great offline capability. There are no problems with deploying and updating applications. The modern browsers, even on mobile devices, are powerful enough today to display more complex UIs with high performance.

It is now also possible to access important operating system-related functions, such as cameras or geographic coordinates, via a browser. Limited options for caching data for offline cases are also no longer a problem.

In addition to these two variants, there are platforms available in which the development takes place in a programming language and the executable code is compiled by the platform for the respective target operating system.

Xamarin, which was bought by Microsoft in early 2016, is one of the most prominent representatives here. Even if this form of platform-independent development has many advantages, it has not yet caught on to the same extent as Cordova, for example. Most of the time, the options for writing the UI in a platform-independent manner are only limited.

Furthermore, you are heavily dependent on the provider, which, especially when new platforms emerge, can mean that they are not supported or not supported quickly.

3. Future security of the development systems

When developing native apps, the question of sustainability does not really arise, since development systems from the manufacturer are used. However, companies must have developers with the appropriate know-how for each individual platform (Objective C for iOS, Java for Android and C # for Windows).

Development systems in the area of ​​web and hybrid development are very diverse. Large parts of (basic) libraries are available as "open source". This is a curse and a blessing at the same time, as the selection is difficult to survey on the one hand, but it also allows you to find the optimal tool and adapt it to your own needs.

JavaScript and HTML5 as standards on the web offer high sustainability and investment security in development. Knowledge can easily be shared for classic web applications as well as mobile and development artifacts can be reused across the applications.

At the moment there is still a high level of dynamism in the entire development infrastructure according to the motto: "Yesterday Angular was the framework of choice, today it is React and tomorrow there will be something new again". Tools and libraries are therefore partly not yet fully developed and stable.

It is therefore advisable to choose a more conservative strategy when developing apps in the business sector and to wait until the hype cycle goes in the direction of the "path of enlightenment". Otherwise there is a risk of becoming dependent on manufacturers if you rely on integrated environments and frameworks.

4. Development costs

With a purely native development, companies must initially expect the lowest costs and immediately receive high productivity. However, the more platforms are supported, the higher the cost of resources with this approach in terms of the number of developers and their recruiting and training.

With a cross-platform approach, this effort for developing different platforms can be reduced. However, this also depends very much on the complexity of the application and the requirements for reuse. If these are correspondingly high, the effort and costs of a JavaScript / HTML5 approach also increase. In the case of complex requirements, companies should not underestimate the initial "research effort" in particular.

The big show stopper at Xamarin in the past was the high costs per developer and year. Now that Microsoft has made the framework available free of charge after the takeover, it should gain significantly more popularity in the future.

In all cases, companies should try to go productive quickly with a small range of functions in order to allow feedback from the target group to flow into further development as early as possible.