There were the days when I was at the beginning of my path to become an iOS developer. And there was a question that I put myself and wanted to find the answer to it. I was wondering what to choose for developing applications. There were two variants for me such as a native language with the tools or React Native.

I started googling this question and I saw that I was not the only one who tried to make this hard choice. There were opposite opinions and positions to this question that were a bit confusing. That’s why I’m going to guide you through the process of making a decision by me to make your life a bit easier and happier.

The definition

You can develop a Native application for one platform only. We know about the two most popular platforms these days such as iOS and Android. Therefore, you will use the Xcode for creating apps for iOS. And for Android, you will use the Android Studio. I guess that’s easy to understand.

React Native is a framework. You will see the signs of web development tools that have merged into the mobile development ones. You will need Javascript for building the software. However, you will also result into a native application.

I had the task to build an application for the two platforms, so I was thinking to use React Native. I was planning to develop only one application for two platforms. I planned to have one code that I could use for these systems. But I thought it to be to good to be truth. One code that could even adjust the visual elements for the platforms seemed unreal. So I decided to find out more.

Native Advantages

Api access

You can go on using the native environment to get access to all the APIs and all the tools. You won’t see any additional mappings of the layer when we talk about the updates of the functionality. You won’t see any dependencies or constraints that you were used to see in the native environment.

Other libraries

You will have a wide choice of libraries that you can use in the native environment thanks to the big public that will always help you build the application with ease. You will have the chance to improve your experience and your software as well.

Knowledge is power

If you are good at using a native language, you will have a good knowledge of the architecture. You cannot add all the required functionality through the framework, so I can admit that your knowledge is a real power here.

Take a look into the future

When considering the development of the application in three or five years, choosing the native language may become a safe option. You should also be ready for some possible changes like  the one with Objective-C and Swift that Apple did some time ago. However, this shouldn’t worry you too much as there were instructions on how to shift. You can feel safe as there’s a motivation to keep the platform updated.

Language rules

We can easily call native languages as the strict ones because we can easily detect all the errors. You can use all of them to develop software for iOS and Android. And there’s one good thing about them. You can learn them with ease. However, you will need some time to feel ok to use them.

Native Disadvantages

You need to build two apps

There’s one rule that can spoil all the impression from the native languages. You can run one app only on one platform. The result of using a native language is quiet predictive. You will create two separate apps for two systems. And they won’t look the same. And they won’t be alike. But don’t worry, you can have one backend for the two of them.

React Native Advantages

One application

As you may guess, you don’t have to build two or more applications for all the platforms. You take one code base and use it for iOS and Android. There’s no need to learn all those languages.

Save time

If your application is quite simple, you will save the precious time from the start to the publishing moment. And you can get more profit if you make your app ready on time.

Transition from web

You may face some problems or obstacles when moving from web to mobile development. If you know at least something about the Javascript frameworks, you will experience this transition with the minimum pain. You will spend little time learning all the things for crafting the software.

High speed

When you save the file in React Native, you can see all the changes on the mobile device in real time. You will greatly make the process of the app development faster.

Free to use

You will see an open source that gives you a chance to view the code. You can do anything with it starting from a simple attempt to understand how everything works to fixing all the bugs that you can ever notice.

React Native Disadvantages

A limited number of APIs

There’s one thing that may disappoint you. Not all the APIs are supported by React. The number of supported APIs is quite impressing, but you can face the situation when you have to get access to another API or use another functionality. But you can still use some native modules for these purposes.

Modules

You don’t get all the functionality together with React, but you can use Native Modules if needed. They are all written with the help of the native language. So you need to have at least the basic knowledge of languages and how to deal with them. If you have chosen React not to work with languages, you will feel uncomfortable in such situations. And you will make two codes for different platforms as well.

Other libraries

You won’t find many libraries that you can use with React. The public is growing, but the number of participants is little. You can use native modules if you want to use the libraries that were created for the platform.

Access to other apps

If you want to create software that will require the access to some apps like a camera, you won’t be able to use the framework for this purpose. You will need to use modules or other libraries as React doesn’t support all of these things.

Visuals

To make all graphic elements work correctly and make them display the right way, you will have to make too many if-phrases or even separate your code to meet the requirements of both platforms. As you know. The design of Android is different from iOS.

Take a look into the future

You don’t have any guarantee that React will be supported in five years or so. There can be one day when Facebook just stops updating this framework and that’s it. What will you do in this case?

The decision that I’ve come to

If you want to create a simple app is a short period of time for both systems, you can choose React Native. It suits these goals just perfectly. You can choose if you have had any experience in web programming.

If you have any other situation, it’s always better to choose Native. You will need some basic understanding of native languages even when crafting software with React. If these are your first steps in coding, I strongly recommend you native languages.

It was really complicated to make the right decision for me. My task was to build software that should contain some advanced functionality. And this app should be for both systems. There was one more thing about the maintenance in the future. React was a more preferable choice here.

However, I’m only learning to become a great iOS programmer. I have some experience using Swift and I like it a lot. As it’s only the beginning of my pathway, there’s lots more to learn and practice before I can be proud of being an iOS programmer. I had people around me who could assist me with learning and using the native languages.

After long hours of thinking, comparing and analyzing, I finally made my choice. I stopped at the native solution. If I wasn’t developing for iOS, I could have chosen another way. But now I can say for sure that the result of my choice will lead me to being a real pro.

 

Yaroslav Golovach
y