React Native (RN) is an open source framework created by Facebook (Meta) that enables building mobile applications that run on iOS, Android and Web platforms. Developers code in the Javascript programming language with the idea that you write once and deploy to the platforms above.

The Promise

From a business perspective the notion that your business logic can be written in one language but shared across multiple platforms is very attractive. You write your application in Javascript and have immediate access to 95% of mobile platforms.

Technically one of the big advantages of RN is the use of declarative syntax to describe an apps user interface. It is based on the React web language and very similar to HTML / XML.

import React from 'react';
import { Text, View } from 'react-native';

const HelloWorldApp = () => {
  return (
    <View
      style={
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center'
      }>
      <Text>Hello, world!</Text>
    </View>
  )
}
export default HelloWorldApp;

This enables speedy development of UI. Web developers are familiar with these languages and find it easy to transition to mobile development.

The Reality

Unfortunatley it’s been our experience working with React Native that instead of converging on one programming language, Javascript, what ends up happening is you add an additional language to worry about. The reality is that you will have to still employ the use of the native programming language in many cases especially those that involve your code interacting directly with the device hardware (ex: the camera).

Another issue is performance. React Native apps have a Javscript engine running inside your application that interprets your code and runs it in the native context. This causes noticeable degredation in many cases causing apps to perform slugishly and noticeably slower than the same native code.

Finally when it first came out the declarative UI syntax was a primary advantage of RN. Since then native iOS & Android have released SwiftUI & Jetpack Compose, native offerings of declarative UI.

Conclusion

While a compelling technology when first introduced React Native is starting to show it’s age as the native platforms provide declarative UIframeworks native speed and tool integration. Coupled with the cons enumerated above it’s not a techology we will continue to follow and use for most projects.