Luckily for all, going native is not the only option when it comes to developing your mobile app nowadays. Instead, our choice is broader.
I must admit that I was one of the strongest advocates of native technologies. My conviction was supported by constant research and market monitoring. During the last 8 years we have seen a lot of enthusiasts proclaiming the end of native development. What happened with all these new shiny technologies that were to be the next big thing? They usually settled in a niche and disappeared from view. But it’s different today—something has finally changed and we have more options to choose from—all depending on the scope, budget and character of the project. In the following article I’ll present a brief analysis of native and non-native technologies. It is important to take all this into consideration when deciding which technology would work best for your project.
Native app development has many benefits. Just to name a few:
- We get official support from the platform vendor.
- We can choose the desired abstraction level to operate on. This allows us to find a sweet spot between development effort, and required level of control.
- Even with a relatively high level of abstraction the performance is impeccable.
If the market consisted of a single platform, we would be able to end discussion. In fact, the market is split into two almost equal parts between iOS and Android. Two platforms using different languages and adopting different paradigms. As a result, the respective developer teams can only cooperate on a conceptual level. Sharing almost no code. Additional effort needs to be put into testing their work and synchronizing their efforts. All this makes developing natively fairly expensive.
The failed contenders
There are other technologies like Xamarin or Appcelerator that adopt the idea of a common language, but drop the HTML part for a self-made abstraction layer, or direct mapping of the native UI components. Performance may be better, but most of the cost benefits are also gone.
This combination of productivity and performance improvements makes, in our opinion, a fundamental difference in comparison to the previous hybrid technologies. As a nice side effect: the application can share a lot of code between the two main deployment targets: web and mobile. Our experience shows that around 50% code reuse can be achieved.
And the winner is...
Taking all this into account, we think that these two competing approaches will dominate the mobile ecosystem in the foreseeable future. When choosing technology for your project, follow the golden rule. If only one platform is targeted, or absolute control and performance are required, then native development should be selected. If cost-effectiveness and time-to-market are the key factors, React + React Native should be considered.
- Antoni KędrackiPrincipal Software Engineer