It has been exactly a year since our team started the development of its first product - ionic dating tinder-like application for russian market. During the year of development, we faced lots of problem common to hybrid applications, now we have the experience and some thoughts that we would be happy to share with you.
Here are a couple of popular myths about hybrid applications and our opinion on them after a year of development.
Write once, run everywhere
There is a fact - 90-95% of the application code is common to both platforms. There are features of the platforms which are sometimes necessary to consider, not all plugins we used worked equally well for both android and ios but the fact remains the same - we had code that worked well on all the devices. Still sometimes we had to write specific code and often took more time than we would like.
You need to be a mobile developer to create a hybrid app
Our team had no mobile development experience at all. Doing the app we remaind web developers mostly, using ready-made plugins for native phone features. But not everything is so simple. Cordova plugins we used not always were "our" enough and once we had to develop our own plugin with Java and Objective-C. So mobile development experience is not required but highly desirable, especially if your application depends heavily on native device capabilities.
Hybrid apps are much slower than native ones
Hybrid apps lack some kind of 'nativeness and smoothness', thats true. With the improvement of browsers and frontend frameworks each day is a small step forward, ionic already has a good set of directives and styles to smooth things over. But the above-mentioned 'nativeness and smoothness' is still absent.
One of the main problems we faced is the support for older versions of android. Browsers in these versions of android were old, everything worked really bad and many things were simply not supported. We were saved by the crosswalk which puts the latest version webview into the app. Crosswalk accelerated application for older devices dramatically.
Ionic saves time and money
Ionic is good for a simple client to your server which will be more convenient than a mobile site. Ionic is also good for prototyping - it nice to test the concept and then develop a native application. In these areas ionic is really good good and you if you use it you won't regret. But if you decide to develop something really complicated, especially an application that depends on the native capabilities of the device a lot then at some point you will spend too much and will get a low-quality product.
For various reasons (mostly not dependent on the chosen technology) development lasted for a year, it has repeatedly suspended and resumed and we lost much of enthusiasm. As a result, the product has evolved from a prototype (which we liked) to the application with rich functionality (with which we are not fully satisfied). Sometimes it lacks smoothness, speed and sometimes something else. We have posted it first in the App Store and Play market, then we shared the cod on github.
What we learned
Ionic is suitable for prototyping and simple client applications. Using it for this kind of applications you will be happy. If your product is too complex and depends strongly on the native capabilities of the device - forget about ionic and you will save yourself from unnecessary costs and unnecessary work.