This is a brief overview of what React Native is, at a high level. I wanted to put myself in the shoes of clients who want to be educated about some of the technology out there, without going cross-eyed. And I also wanted to speak for developers who are very new to the field and want to know about this technology without going deep into the rabbit hole yet. I hope to explain why React Native is so popular, and why you should probably use it.
Mobile apps are part of our every day lives, with new ones coming to app stores daily. Apple and Google have given us tools to develop apps and publish them to the app stores. Each platform has different requirements in how to develop for that platform. iOS for example, requires that you program in a programming language called Swift, or Objective C. Android requires that you program in Kotlin or Java. This is what we call "native" programming, and building "native" apps. These apps perform very well, because they compile down to bytecode and are ran by the device processor very efficiently.
Native programming creates a big problem when you want to develop an app that is published to both the app store and the Google Play store. The app programmed in native languages, only works for its respective store and device. We cannot, for example, publish an app we built with iOS tools to the Google Play store. We also cannot install an iOS app into an Android phone, and vice-versa.
This means a developer that would like to target both stores in turn has to build the app twice, once for iOS and once for Android. This is highly inefficient, not to mention costly.
Enter the hybrid applications. This issue with incompatibility made some smart developers to come up with interesting ways to get around this. One such work-around (to put it at its simplest terms) was to create native apps that just display a web view, a sort of simplified web browser component, where the developer could load a web application with the look and feel of an app.
This web app would be bundled with the native application and since the application was really a web app, most of the code could be reused for both iOS and Android platforms. Not only that, but now web developers could use their existing skills to program mobile applications. This was great! The apps had access to native components as needed as well, if there were platform specific features they needed to target.
This worked suprisingly well, and was a great solution for most apps. It is still widely used today. The need for native development was still needed though, because the performance of these "hybrid" apps, was nowhere near that afforded by native apps. The struggle continued.
Now we come to React Native. The intention with React Native is to bring the best of both web and native worlds together, with improved performance. With React Native, the embedded web view was ditched, and developers had full native access. The user interface would live mainly in a layer separate from the full native layer, where it could "bridge" over to the native layer if it needed to.
This user interface layer is an environment similar to a web browser environment, where a web developer could feel right at home here, programming in Javascript (the web's programming language) and a markup language similar to HTML called JSX.
This Javascript layer's code can be shared between iOS and Android, and if developers need to use platform specific features, or if they need that fast native performance, they can easily bridge over to the native layer and make use of anything they need.
This is the power of React Native. The developer chooses what they want to make native, and what can be shared between platforms. You no longer need to hire two developers to program two separate apps. Now you can hire one developer to program most apps and only tap into native code if absolutely necessary.
I hope this has given you some very basic understanding on what React Native is. I hope to write some more articles that will slowly introduce you to more React Native concepts and topics that you might find interesting ?