The gap between web and native mobile
In 2015 mobile development is split into two separate worlds: iOS requires Objective-C and the Xcode ecosystem, Android requires Java and Android Studio. Each platform has its own APIs, its own patterns and its own release cycle. Maintaining two distinct codebases for the same application multiplies development costs and introduces inevitable functional divergences. Hybrid solutions based on WebView — such as Cordova and PhoneGap — run web code inside an embedded browser, but the result does not match the performance and fluidity of native interfaces.
Facebook tackles the problem with a different approach: apply the declarative paradigm of React to mobile development, but translate components into real native widgets rather than rendering them in a WebView.
JavaScript components, native widgets
React Native allows developers to write components in JavaScript using the same declarative syntax as React for the web. The fundamental difference lies in rendering: a <View> component does not produce an HTML <div>, but a UIView on iOS and an android.view.View on Android. A <Text> component produces a native label, a <ScrollView> produces the platform’s native scrolling.
The developer works with a single language and a single mental model, but the resulting interface uses the operating system’s native controls. Animations, haptic feedback, screen navigation — everything happens at the native level, not in a browser.
The asynchronous bridge
React Native’s architecture is built on a bridge that connects two separate worlds: the JavaScript thread, where application logic resides, and the native thread, where rendering takes place. The two threads communicate asynchronously through messages serialised in JSON: JavaScript sends descriptions of interface changes, the native side applies them. This separation ensures that the rendering thread is never blocked by heavy JavaScript computation.
Hot reload and code sharing
One of the features most valued by developers is hot reload: by modifying JavaScript code, changes appear immediately in the running application without losing the current state. This drastically reduces the feedback cycle compared to traditional native compilation, which on complex projects takes minutes.
React Native also enables sharing significant portions of code between iOS and Android versions — business logic, state management, network calls — while retaining the ability to access platform native APIs directly when needed, through modules written in Objective-C or Java.
Link: reactnative.dev
