React Native

React Native is an open-source framework created by Meta (formerly Facebook) that lets developers build mobile applications for iOS and Android using a single JavaScript and React codebase. Unlike web-based hybrid frameworks, React Native renders real native UI components — so apps look, feel, and perform like those built with Swift or Kotlin. Released in 2015 under the MIT license, it powers parts of Facebook, Instagram, Microsoft Office, Shopify, Discord, and Uber Eats, making it one of the most widely adopted cross-platform mobile development frameworks in the world.

What is React Native?

React Native is a JavaScript-based framework for building native mobile applications. The word “framework” means it provides a ready-made platform with pre-built components, libraries, and reference material, so developers don’t have to start every project from scratch. The word “native” means apps are rendered using each operating system’s actual UI elements — not a web view inside a wrapper — which is what allows React Native apps to behave and feel like apps written directly in Swift, Objective-C, Kotlin, or Java.

React Native

The framework was first released by Facebook’s engineering team in 2015 and is distributed under the permissive MIT license. It extends the component-based architecture of React (the popular web library) to mobile, letting front-end developers reuse their existing JavaScript and JSX skills to ship apps on phones, tablets, TVs, and even desktops.

What does “native” actually mean here?

A native application is one that is written for, and runs directly on, a specific operating system. A native iOS game runs on iOS frameworks; a native Android game runs on Android frameworks. Native apps tend to be faster and more responsive because they speak the operating system’s own language. React Native gets to this same end result through a different path: instead of asking developers to learn Swift or Kotlin, it lets them write JavaScript that is then mapped to the platform’s real native UI components at runtime.

React vs React Native

React Vs React Native

React and React Native share the same syntax and component model, but they target different surfaces. React renders to the browser’s DOM through a virtual DOM; React Native renders to the operating system’s native UI through native modules.

AspectReactReact Native
TypeJavaScript libraryJavaScript-based framework
Primary useFront-end web developmentMobile and desktop app development
Rendering targetBrowser DOM via virtual DOMNative UI components on iOS and Android
UI elementsHTML tags such as div, ul, pNative components such as View, Text, FlatList
StylingCSSStyleSheet API
Created byMeta (Facebook)Meta (Facebook)

How does React Native work?

At a high level, a React Native developer writes JavaScript and JSX (the same syntax used in React for the web), but instead of producing HTML, the code is mapped to real native UI components on each platform. A <Text> element becomes a UILabel on iOS and a TextView on Android. A <View> becomes a UIView or an Android ViewGroup. The same JavaScript runs on both platforms, but what the user sees is genuinely native.

For years, the JavaScript side communicated with native modules through an asynchronous “bridge.” Starting with version 0.76 in late 2024, React Native made its New Architecture the default, replacing the bridge with three core pieces: JSI (JavaScript Interface) for direct synchronous calls between JavaScript and native code, TurboModules for lazy-loaded native module access, and Fabric for concurrent UI rendering. The practical result is faster cold starts, smoother animations, and lower memory use compared with the legacy bridge.

Component-based architecture

React Native inherits React’s idea of composing UIs out of small, reusable components. State is managed with familiar tools such as the useState hook, useEffect, or external libraries like Redux. Lifecycle methods like componentDidMount and componentWillUnmount behave the same way they do on the web, which is why developers who already know React can transition to mobile in days rather than months.

Code sharing across platforms

A single JavaScript codebase can target both iOS and Android because most React Native components — ViewTextImageScrollViewFlatList — are universal. When platform-specific behavior is needed, developers use the Platform module to branch on Platform.OS, or use platform-specific file extensions (Component.ios.js and Component.android.js). When something truly native is required, native modules written in Swift, Objective-C, Kotlin, or Java can be exposed to the JavaScript layer.

Core components and features

React Native ships with a set of cross-platform primitives that map to the native UI of each OS. Knowing them is essentially knowing how to lay out a React Native screen.

ComponentRoleClosest web equivalent
ViewGeneric container for layoutdiv
TextDisplays textspan, p
ImageRenders images from local or remote sourcesimg
ScrollViewScrollable container for small content setsdiv with overflow:scroll
FlatListPerformant list for long data setsul with virtualization
TextInputEditable text fieldinput
PressableTouch-responsive wrapperbutton

Beyond components, React Native ships with several features that meaningfully shape day-to-day development:

  • Fast Refresh. Code changes appear in the running app within a second, without losing component state. This is the biggest single productivity win compared with traditional native development.
  • Native module bridging. Anything platform-specific — camera, GPS, biometrics, push notifications, payments — can be wrapped in a native module and called from JavaScript.
  • Third-party ecosystem. The npm registry exposes hundreds of thousands of JavaScript packages to React Native projects, including navigation libraries (React Navigation), animation libraries (Reanimated), and SDK wrappers for analytics, attribution, and monetization.
  • Declarative UI. Like React on the web, you describe what the UI should look like for a given state, and the framework handles the updates.

Supported platforms

React Native is primarily known for iOS and Android, but its reach extends well beyond mobile, largely thanks to forks maintained by Microsoft and the community.

PlatformMaintainerTypical use
iOSMeta (core)iPhone and iPad apps
AndroidMeta (core)Phone and tablet apps
WindowsMicrosoftDesktop apps for Windows 10 and 11
macOSMicrosoftDesktop apps for macOS
tvOS and Android TVCommunitySmart TV apps
WebCommunity (React Native for Web)Browser deployment of RN apps

Benefits of React Native

The framework’s continued popularity comes down to a handful of practical advantages that matter more on real product teams than in benchmarks.

BenefitWhy it matters
Single codebase for iOS and AndroidReduces development time, headcount, and ongoing maintenance cost
Native rendering performanceSmooth animations and responsive UI on real devices
Fast RefreshNear-instant feedback loop during development
JavaScript and React skill reuseWeb developers can ship mobile apps without learning Swift or Kotlin
Large open-source ecosystemReady-made libraries for navigation, state, animation, and monetization
Backed by MetaContinuous investment, predictable release cadence, long-term stability

Limitations and challenges

React Native is not a fit for every project. The trade-offs are real and worth weighing before committing.

LimitationPractical impact
Reliance on third-party librariesSome platform APIs require community packages that may lag OS updates
Platform divergencePixel-perfect designs sometimes need branch logic per OS
Heavy computationCPU- or GPU-intensive workloads may still need native modules
Debugging complexityIssues can span JavaScript, native, and the runtime boundary
Upgrade churnMajor version upgrades can require coordinated changes in native code and dependencies

Examples of apps built with React Native

React Native is used in production by some of the largest mobile apps in the world. Its track record across consumer, enterprise, and developer tools is one of the clearest signals that it scales.

AppCategory
FacebookSocial
InstagramSocial
Microsoft OfficeProductivity
ShopifyCommerce
DiscordCommunication
Uber EatsFood delivery
CoinbaseFinance
WixWebsite builder
BloombergNews and finance

React Native vs other mobile development frameworks

Within the cross-platform space, React Native is most often compared with Flutter, Google’s UI toolkit built around the Dart language. Native development with Swift or Kotlin remains the third option whenever maximum platform-specific polish is the goal. For a deeper breakdown of how the two leading cross-platform frameworks line up across performance, ecosystem, hiring, and cost in 2026, see Flutter vs React Native.

FrameworkLanguageUI approachBacked by
React NativeJavaScript / TypeScriptReal native UI componentsMeta
FlutterDartCustom rendering engine (Impeller)Google
Swift / Kotlin Swift, KotlinDirect platform APIsApple, Google
.NET MAUIC#Native handlers per platformMicrosoft
Ionic / CordovaJavaScriptWebView wrapperIonic, Apache

Getting started with React Native

There are two common entry points: the React Native CLI (sometimes called “bare” React Native) and Expo. Expo is a managed toolkit on top of React Native that simplifies setup, handles a lot of the native plumbing automatically, and ships with built-in libraries for camera, location, notifications, and authentication. For most new projects in 2026, Expo with EAS Build is the recommended starting point.

A minimal setup looks like this:

  1. Install Node.js and a package manager (npm or Yarn).
  2. Install the Expo CLI or the React Native CLI.
  3. Create a new project with npx create-expo-app MyApp or npx react-native init MyApp.
  4. Run the app with npx expo start (Expo) or npx react-native run-ios / run-android (bare).

From there, the typical toolchain includes React Navigation for screen routing, an SDK or two for analytics and attribution, and platform-specific configuration for the App Store and Google Play.

React Native and in-app purchases

One area where React Native does not ship a built-in solution is monetization. There is no native React Native API for in-app purchases or subscriptions — those still go through Apple’s StoreKit and Google Play Billing, which means a React Native app needs either a wrapper library or a third-party SDK to handle them. Popular options include the open-source react-native-iap and expo-iap packages, as well as managed services like Adapty’s react-native-adapty SDK, which adds server-side receipt validation, paywall configuration, A/B testing, and subscription analytics on top of the native store APIs. For a full walkthrough, see the React Native in-app purchases tutorial.

FAQ

No. React is a JavaScript library for building user interfaces in the browser. React Native is a framework that uses the same component model and syntax, but renders to native mobile UI components on iOS and Android instead of HTML in a browser.

Yes. React Native is open source and released under the MIT license, which allows free commercial and non-commercial use.

A hybrid app typically packages a web application inside a WebView and uses plugins to access device features. React Native does not use a WebView for its UI — it renders real native components and communicates with native modules through JSI, which generally produces better performance and a more native feel.

Yes. With community and Microsoft-maintained variants, React Native can target Windows, macOS, tvOS, Android TV, and the web (via React Native for Web).

For most apps, no. You can build the entire app in JavaScript or TypeScript. You only need to touch Swift, Objective-C, Kotlin, or Java when integrating a feature that no existing library wraps.

No. There is no built-in IAP API. Developers use third-party libraries or managed SDKs (such as react-native-iapexpo-iap, or Adapty’s React Native SDK) to integrate Apple StoreKit and Google Play Billing into a React Native app.
Table of contents