Choosing the right platform – one of the main problems that developers face in creating mobile software. Particularly, according to statistics, two giants have been overshadowing the niche with their over-a-decade-long competition: iOS and Android. In order to find a compromise between these two platforms from the perspective of software development budget-effectiveness and time-effectiveness, the hybrid and cross-platform frameworks were introduced.

The first two tools that come to mind when discussing this topic are Ionic and React Native. They provide an opportunity to create advanced solutions that are significantly cheaper than native ones and, additionally, feature very accessible technical support. So, which participant of the React Native vs. Ionic stance should be taken into account? Let’s discuss this further.

Brief intro to the frameworks

Before commencing analysis and comparison of the two frameworks’ key features, let’s take a brief look at each solution individually.

Ionic. Ionic Framework was developed back in 2015 as a customization for Apache Cordova by the Drifty Co. software vendor. The solution’s primary goal was the development of hybrid software, the interface and performance of which would be as close to native solutions as possible. Ionic is based on CSS, HTML5, Sass, and Angular 1.x. By 2016, Drifty Co. implemented the second version of Ionic – Ionic 2, which was based on Angular 2.x.

The things that the Ionic Framework can definitely boast are an extremely advanced GUI for beginner programmers (or for those who just don’t want to take up in-depth studying) and advanced CLI, which helps launch various useful features (bug search, build, etc.). That’s not all. The framework features a colossal number of inexpensive plugins (priced at no more than 20 c.u.), which makes it unnecessary for developers to employ third-party solutions. In case you can’t find exactly what you need, check out the Cordova plugins – they are perfectly integrated with the software based on the initial framework (here, we’re talking about, before all else, the plugins that employ specific, native smartphone features – cameras, contact lists and others).

What can we say about the app implementation aspect? They are wrapped in the web-browser-like shell (UIWebView in iOS, and WebView in Android) with the goal of transforming HTML code into JS. If you require UI widgets, they can effortlessly be found in Ionic 2.

React Native. Having caused a real sensation in the mobile development niche, React Native is a full-blown JS-framework from Facebook developers. RN provides developers with the capability to create cross-platform software closely similar to native applications, which is also practically equal in performance. It is based on the ReactJS library.

This framework’s defining feature is the fact that it uses native components (which are individual to each platform and require dedicated bridges to set up a connection to JS code) for frontend, not requiring the employment of browsers or WebViews. This affects the application’s performance most positively.

Ionic vs. React Native: what a developer must take into account

If your ultimate choice for a development tool comes down to these two options, you will definitely have to familiarize yourself with the key features that make Ionic and React Native different.

Type of developed application. As we mentioned above, the first and most significant difference between Ionic and React Native is the type of applications they create. The Ionic framework is for hybrid software development. In turn, apps created based on the RN mustn’t necessarily be wrapped in WebView. In order to employ smartphone special features with Ionic, you’ll have to install the required plugins – PhoneGap or Cordova. With React Native, you can simply create different options for each chosen platform native components.

Possibility to create template solutions. Ionic is a framework that fits the phrase “write once, run anywhere.” This means that properly written and structured code can be used in your further projects. Sounds great, don’t you think? Additionally, it is Ionic that allows users develop software that would work equally on any platform. On the other hand, some developers note certain “coarseness” in the UI created via this framework (seems like the application’s logics operate correctly; however, depending on the user device, the design itself can “float” a little). Is this critical for you? Then, turn your attention to React Native. It lets you create a design as similar to native as possible, though the process will take longer than Ionic, as particular elements must be customized for each platform (for instance, Android supports button shades and iOS doesn’t).

Performance. As to the aspect of performance, hybrid applications are arguably slower than crossplatform ones, as their speed depends on the notorious WebView. RN, in turn, initially implies faster application speeds characteristic to the cross-platform approach. Also, it features the React Fiber algorithm, which was implemented last year with the goal of visual rendering acceleration (i.e. essentially, apps with RF don’t accelerate their operation; only the performance of the components seen to the user eye accelerate). The conclusion here is simple. In the stand called React Native vs. Ionic performance, the first framework wins.

Individual styles. Ionic 2 utilizes an ordinary SASS pre-processor. It is sufficient enough in most cases, where the creation of a more or less universal style that would look good on any platform is required (here, flex-markup and variable override are of great help). But, the keywords here are “in the most cases.” There are style options that look impeccable on Apple smartphones and like monstrosities on Android-based devices. In the conditions of a limited timeframe, wasting time on the redefinition of each component for each platform is just impractical. Here’s where RN wins. In particular, this framework employs a css-detailed syntax represented in the format of a JavaScript-object which, eventually, adapts to a certain platform’s requirements. Coding with RN, the designers define only the absolute values, not having an opportunity to define ratios (such limitation doesn’t let the UI elements “float”). So, if you want to focus all your efforts on functionality, instead of working hard on styles, RN would be preferable.

Cooperation adaptivity. Ionic is based on the MVC-framework, Angular, so it differentiates the same data on different views. Thus, you can involve several teams on the project (e.g. designers and programmers at once) and their workflows remain independent. RN, in fact, can limit cooperative work in some way, which leaves a point in favor of Ionic.

Syntax nuances. In order to work with Ionic, knowledge of JavaScript or some other language that translates into JS (TypeScript, for example) is required. If you decide to work with React Native, prepare to study ReactJS, JSX, as well as Redux and EcmaScript 2015, in great detail.

Application packaging procedure. If your project consists of many separate components, the process of packaging and debugging can be a real headache for developers. This doesn’t happen with RN. This framework supports an incredibly useful feature called Hot Reload which allows repackaging and updating the launched application while saving its state (i.e. all the input data and operations executed within the app are saved so that you don’t need to do everything all over again). Ionic is a bit “late” in this aspect. It can only offer the Live Reload option, which cannot be used in some cases (you can’t use it in a browser using http requests – you’ll face a CORS issue).

Learning curve. If you haven’t worked with any of the discussed frameworks before, you’ll probably be interested in finding out which of them would be easier to grasp. Ionic is a definite leader in this aspect. This framework’s format is identical to any other solution created based on CSS. Apart from the largest online-support community (nobody likes to waste weeks looking for a quick answer, right?), the creators also enriched Ionic with wonderfully thought-out and structured documentation with real cases. The great GUI adapted to each mobile platform will also benefit your learning process. It features plenty of readymade components that need not be reprogrammed in any way.

Are you an advanced developer? If you have a load of original ideas, then RN will probably fit you the best. It provides full freedom of action and doesn’t limit users in any way. Need some third-party solutions? Go ahead and use them! On the other side, RN’s documentation isn’t sufficiently worked out, and it can confuse inexperienced programmers or simply not provide the needed info. Still, if you’re ready to make an effort in the process of learning, know that you won’t waste your time for nothing. You’ll have to work for the sake of prospect. In the future, it’ll be extremely easy for you to work with the new, most extraordinary projects adjusted to the client’s requirements to the full extent.

App size. How do you objectively rate the performance of applications created with the help of the two discussed development environments? One can simply generate blank apps in the command prompt interface:

ionic start myApp blank –V2 //command for Ionic 2

react-native init AwesomeProject //command for React Native

If we estimate the size of the apps in the release format (a format in which they’re to get to user devices), we get the following:

Ionic 2 React Native Android iOS Android iOS 4.0 Mb 17.9 Mb 16.35 Mb 4.6 Мб

As you can see, the most fitting options are Android, with Ionic 2, and iOS with React Native.

Supported mobile platforms. Both Ionic and RN support software development for Android and iOS platforms. If your requirements also include Windows Universal Platform compatibility, then you’ll have to install a supporting plugin in React Native (Ionic supports the platform by default).

Ionic 2 or React Native: why the choice isn’t obvious

So, which framework do you choose? We agree that it’s hard to make an ultimate decision, as both offer respective advantages. On the other hand, you can evaluate RN and Ionic 2 in respect to your personal criteria with the help of the presented comparison, and come to a conclusion – which is preferable to use on certain projects.

Are you not a professional developer? No big deal! If you want to get an advanced, efficient, modern mobile software solution but don’t know how to implement it, we are ready to help! The Applikey solutions team will gladly take on your project and the results are guaranteed to exceed your expectations. Interested? Contact our manager to discuss the details of your project.