The React Native framework

React Native lets one team ship iOS and Android apps from a single JavaScript and React codebase that renders real native UI. Here is how it works, what it builds well, and where it falls short.

On this page

React Native is Meta's cross-platform framework for building mobile apps with JavaScript and React. Unlike a web view wrapped in an app shell, it renders real native UI components, so the result looks and behaves like a native app while one codebase drives both iOS and Android.

How React Native works

You describe the interface in React, and React Native maps each component to an actual platform view. A View becomes a native container, Text a native text control, Image a native image view. Nothing is drawn on a custom canvas, which is why the pixels, gestures, and accessibility behavior match what users already expect on their phone.

Your application logic runs in a JavaScript engine, usually Hermes, which Meta tuned for faster startup and lower memory use. That JavaScript needs a way to talk to the native side, and this is where the architecture matters. The old design routed everything through an asynchronous bridge that serialized each message into a JSON-like payload, sent it across threads, and deserialized it on the other side. Under load, that round trip became a bottleneck.

The new architecture removes it. JSI lets JavaScript hold direct references to native C++ objects and call their methods without serialization. The Fabric renderer handles UI, and TurboModules load native modules only when they are actually needed. For most teams the practical effect is a smoother, more predictable app, especially in animation and list-heavy screens.

What you can build with React Native

React Native is a good fit for the large class of apps that are mostly screens, data, and flows: social feeds, marketplaces, banking and fintech, delivery and logistics, booking, and internal business tools. If your product is defined by navigation, forms, lists, and API calls, it plays to the framework's strengths.

The proof is in production. Meta ships Facebook, Instagram, and Messenger on it, and companies like Shopify, Discord, Walmart, Bloomberg, and Tesla have built React Native into real apps used by millions. These are not toys or prototypes; they are shipping software with demanding reliability requirements.

React Native vs native development

Native development means writing two separate apps, one in Swift for iOS and one in Kotlin for Android. You get the deepest possible access to each platform and the best raw performance, at the cost of two codebases, two skill sets, and roughly double the surface area to build and maintain.

React Native collapses most of that into one shared codebase. You still reach for native code when you need a platform-specific capability, but the day-to-day work of building screens happens once. For a UI- and logic-heavy app, that trade usually favors React Native. For a game engine, a camera-processing tool, or anything that lives close to the hardware, native still wins. The broader native vs cross-platform decision deserves its own look before you commit.

React Native vs Flutter

React Native and Flutter are the two dominant cross-platform choices, and they disagree on one fundamental question: how to draw the UI. React Native maps to the platform's own native components. Flutter skips them and paints every pixel itself through a graphics engine, historically Skia and more recently Impeller.

The other split is language. React Native uses JavaScript or TypeScript, so teams already fluent in React and the web ecosystem carry that knowledge straight over. Flutter uses Dart, which is fast and pleasant but a fresh language for most hires. Neither approach is strictly better. React Native gives you native look-and-feel and an enormous JavaScript talent pool; Flutter gives you pixel-perfect consistency across platforms and a tightly integrated toolkit.

When React Native is the right choice

React Native earns its place when a team already knows React and the JavaScript ecosystem, when the app is defined more by interface and data than by hardware, and when shipping fast on both platforms matters more than squeezing out the last few frames of performance. The over-the-air update path, where you push fixes to the JavaScript layer without a full store release, is a real advantage for products that iterate weekly.

It also lowers the cost of entry into mobile app development for web-first teams. One group of engineers can own the product end to end rather than splitting into separate iOS and Android tracks.

The limits of React Native

The framework is not a universal answer. Heavy work on the JavaScript thread can still stutter the UI, and the new architecture reduces that risk without erasing it. Custom real-time graphics, low-latency sensor processing, and sustained high-frame-rate rendering are genuinely harder here than in fully native code, and they often push you into writing native modules for the hot paths.

Deep platform integrations still need native work, so a team with zero native experience can hit a wall on the harder 10 percent of features. None of this disqualifies React Native. It just means you should match the tool to the app: for most screen-and-data products it is a strong default, and for the hardware- intensive edge cases, plan for native code from the start.

Frequently asked questions

  • You write UI in React, and it maps each component to a real native view instead of drawing its own. Your JavaScript runs in an engine, usually Hermes, and talks to native code through the JSI layer. The new architecture, with the Fabric renderer and TurboModules, replaced the old asynchronous bridge that serialized every message.

  • It suits most consumer and business mobile apps, the kind built from screens, forms, lists, and API calls. Social feeds, marketplaces, banking, delivery, booking, internal tools. Facebook, Instagram, Shopify, Discord, and Bloomberg all ship it. React Native fits less well when an app leans on custom real-time graphics or heavy on-device computation, where native code tends to win.

  • Yes. Meta still maintains it and runs it in production, and the new architecture landed specifically to kill the old bridge bottleneck. It's one of the two dominant cross-platform choices next to Flutter, with a huge ecosystem and a deep hiring pool of React developers behind it.

  • React is a JavaScript library for building web interfaces in the browser with HTML and the DOM. React Native reuses React's component model but renders to native mobile views instead of DOM nodes, so a component maps to a native container rather than a div. You keep the same mental model while shipping to iOS and Android, which is the whole point.

  • For most apps, yes. One team ships both platforms, iteration is fast, and you can push over-the-air updates to the JavaScript layer without a store release. The trade-off shows up in performance-critical work, custom graphics, or deep hardware access, where you'll drop into native code. Match it to your app's demands rather than treating it as a universal answer.

Related expertise