/ Maxim Kovtun

Modern Cross-Platform Mobile Development

21st century is the century of mobility. We got used to be on the move, we do not spend the whole day at our work desk any more. Living in the era of information we long for it, we are hungry for more and more information not to stop our brain working all the time. We always have gateway to the digital worlds with us – our mobile phone.

Providing services or selling goods – you may be only several clicks away from your audience. Having mobile presence is as crucial nowadays as having digital presence in the internet 10 years ago. If you want to be close and easy to reach to your customers, you need to be on their mobile devices.

While planning your business development you would consider all different options to get to mobile market. Let's consider available alternatives and talk about the one that appeared recently, which might be a good fit to your needs.

 

Native application

This is the most straightforward option. Native development is done using the mobile platform directly and coding with the language supported by the platforms itself. Having nothing between your app and mobile operating system (OS) makes you restricted only by your skills and OS itself. This is also your choice if you need to get the best performance for your application.

Modern Cross-Platform Mobile Development

But of course, each coin has its flip side. To reach more users, one would need to have an app present at different platforms (Android, iOS, Windows Phone). As all mobile platforms are different, developing application for several platforms essentially means creating a separate application for each platform and usually consists in having a separate development team specializing on each platform, which multiplies the total cost of the project. For majority of business applications that could be an overkill.

 

Hybrid application

Hybrid apps development arose to overcome the high costs of native development and to attract web programmers into mobile development by using web technologies. The idea behind hybrid solutions (such as PhoneGap, Cordova) is to use HTML/CSS/JavaScript skills and technologies to create application screens, which will be shown in the web browser component embedded into your application. This approach enables you to create cross-platform code, i.e. written once HTML/CSS/JavaScript could run on different platforms. Interaction with native API will still be platform specific, but that is usually a minor part of application code-base.

To get high development speed and cross-platform code, one would sacrifice the look and feel of the application. As hybrid application screens are just web pages rendered by embedded browser, they do not provide user with beauty of native controls and seamless interaction with them. Even if your eye would not be able to catch a difference to state what's wrong, you will just feel that it is not for real.

 

Cross-platform application with React Native

One of the recent technologies in the field is React Native – a Facebook-authored framework for creation of mobile applications using JavaScript. It combines benefits of the first two approaches enabling developers to write cross-platform code as well as to create native application screens with platform native controls. Application code being written with JavaScript runs within application by JavaScript Engine and communicates with native UI through native-to-JavaScript bridge in both directions.

React Native has awesome features which make it outstanding in comparison to other technologies:

Hot module replacement and hot reload

Software developers work in cycles: write/change code >> prepare application for running >> run application >> see how it works >> start cycle over. The useful work here is everything except the second step - preparing an app for running. At this step, your PC and IDE do their job, while the developer just waits for result to be able to proceed to the next step. The longer it takes to prepare an application, the bigger the overhead of the whole cycle. To reduce the share of the overhead in a cycle, developers tend to increase the whole cycle duration, i.e. write more code at once, see how the made changes work being run. But making many changes in one cycle makes development unpredictable - if an app doesn’t work you do not know which change broke it.

However, what actually that preparation step is about? For native development and some cross-platform development (such as Xamarin) that is a compilation of source code into executables. It takes around 5 minutes, which is a huge pause for experienced developer.

Things are quite different for React Native though. If you didn't change the native code of an application or its modules (and usually you don't), you do not need to recompile your application to run the changed code. You only need to bundle up JavaScript files and assets, which takes several seconds. Moreover, with Hot Reload feature in 50% of cases making a change and pressing CTRL+S in your code editor will apply the change in running application immediately without restarting the application itself. Your developers no longer need to create screens blindly, they can effectively adjust layouts seeing immediately if a change led to the desired result. This is a huge gain for development efficiency.

Flexibility

While choosing technology one usually analyzes if that technology will be able to support all ideas and will not be a blocker or limitation factor at some point. With React Native that will never be the case, since if you do not find a needed feature already implemented, you always can add it with a bit of native code. You can not only create new components and background logic with native development, you also can add React Native pieces into an existing native application.

Over-the-air updates

With Code-Push, delivering updates of React Native application to your users is just a matter of minutes. You do not need to submit an app to store, wait days and days for approval just to fix a small but critical issue blocking your users. This awesome feature enables you to provide service of high level to your customers.

 

Afterword

Of course, React Native is not a silver bullet and weighted choice should be made for each project, but it has some strong features which might exactly fit your needs and be your technology choice to go into mobile market. Its cross-platform capabilities, flexibility, and development speed make it an ideal candidate for business application as well as for startups with the shortest time to market. It might be just a matter of several weeks for creation of a prototype (or simple application) for you to check your hypothesis and see what your customers really need.

Maxim
Kovtun