Is it possible to save money and still deliver good experience to a user? This question is viable at any sphere of business, which involves both production and services. It is especially true when a demanding client wants to receive his product as soon as possible and at the same time expects outstanding quality of this product. And, of course, he wants to be sure that his money are spent in the most efficient way. Among great amount of dev companies, constantly popping out (and that means — competition) delivering good experience to a user is a baseline. Your competitive advantage can be an innovative technology that you use, which helps you to optimize the development process.
When you start to use new technology, you cannot be sure it will be the best solution. In most cases, some issues eager through time period and number of projects. In this article, we are going to make a comparison of two frameworks, React Native and Ionic, based on our real time experience in frontend development.
When developing various products, either for ourselves or for the clients, there has always been a question that interested us: how can we narrow down time and cost of product development.
Android and especially iOS developers have always been valued greatly and cost a lot, and when developing for two platforms one has to spend twice as much money.
At some point we were experimenting with Cordova, but it didn’t feel as if we can get something valuable out of it.
Then we noticed Ionic. From engineer point of view it was exactly what we needed — modern framework, focus on mobile apps and seeming simplicity.
We used this framework in a few apps as a component and created over a dozen apps on this framework only.
However, as the time went by we started noticing some alarm bells. The projects could not be finished on time, sometimes debugging took too much time. We thought that all these problems could be solved by improving our practices, paying a lot of attention to design and architecture improvement. However, in reality the problem was not about the process, but about technology.
Because we want to give you comparison of two frameworks, we decided to outline the main Ionic problems that we came across:
* Response time. Even when using some tech tricks, it was still great;
* Work with slideout keyboard and input overall. It caused a lot of problems and it was really hard to keep it up on big amount of devices;
* Debugging, especially for the projects that use hardware features of ngCordova.
We shared with you our experience with Ionic and defined main issues that occurred during our work. Now we would like to give you detailed frameworks comparison and explain you why React Native is better solution for our developers.
We were always trying to get more expertise on different technologies and use them in practice in order to define the best solution. That’s why in parallel with projects on Angular we started using React, and with time the ideas that community introduced to the ecosystem became so obviously useful for our projects that Angular was slowly pushed out from tech solutions. You can read about it in more detail in our Angular vs React article.
We were watching React Native from the moment when Facebook announced support for Android and we started experimenting a bit. We also kept on watching Ioinc2, which was supposed to become an innovation that would solve many issues that we had while working with Ionic1.
The approaches of given frameworks are very different but for us React Native is an ultimate winner.
We chose main React Native advantages that are superior in relation to Ionic1/2:
- Response time that could be compared to native apps.
- Ability to reuse the code parts (not all code) for desktop (web apps) and mobile (mobile apps) and even for the server. (:-))
- Incredibly convenient toolchain for developers that allows to quickly develop and debug the app.
- Big amount of elaborated components from Facebook.
- Even bigger amount of components from community.
- Ability to realize the ideas of functional programming in development which ensures great stability and reliability of the app and relative scaling simplicity.
However, we don’t make a point here that React Native is 100% perfect. We also chose some of React Native disadvantages in comparison with Native Apps:
- Those code parts that are linked to work with hardware solutions, camera, external libraries integration, etc are still done in Native parts.
- ReactNative is not a “write once, run anywhere, it is a separate story that has to be explored.
So when can one use ionic/2? Ourselves we chose two best-fitting situations to use given framework:
* when you already have an app written on ionic/angular;
* when your app highly depends on ready code for which Ionic would be the best choice (same as in our case when we used MathJax and mathquill to display and enter mathematical expressions).
When you are talking about tools that you work with you can’t stay objective. There will always be one that you prefer more. This choice depends on your project, your team and requirements that you have. We just shared with you our experience. Choose the best option for you.