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.

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 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.
| Aspect | React | React Native |
|---|---|---|
| Type | JavaScript library | JavaScript-based framework |
| Primary use | Front-end web development | Mobile and desktop app development |
| Rendering target | Browser DOM via virtual DOM | Native UI components on iOS and Android |
| UI elements | HTML tags such as div, ul, p | Native components such as View, Text, FlatList |
| Styling | CSS | StyleSheet API |
| Created by | Meta (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 — View, Text, Image, ScrollView, FlatList — 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.
| Component | Role | Closest web equivalent |
|---|---|---|
| View | Generic container for layout | div |
| Text | Displays text | span, p |
| Image | Renders images from local or remote sources | img |
| ScrollView | Scrollable container for small content sets | div with overflow:scroll |
| FlatList | Performant list for long data sets | ul with virtualization |
| TextInput | Editable text field | input |
| Pressable | Touch-responsive wrapper | button |
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.
| Platform | Maintainer | Typical use |
|---|---|---|
| iOS | Meta (core) | iPhone and iPad apps |
| Android | Meta (core) | Phone and tablet apps |
| Windows | Microsoft | Desktop apps for Windows 10 and 11 |
| macOS | Microsoft | Desktop apps for macOS |
| tvOS and Android TV | Community | Smart TV apps |
| Web | Community (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.
| Benefit | Why it matters |
|---|---|
| Single codebase for iOS and Android | Reduces development time, headcount, and ongoing maintenance cost |
| Native rendering performance | Smooth animations and responsive UI on real devices |
| Fast Refresh | Near-instant feedback loop during development |
| JavaScript and React skill reuse | Web developers can ship mobile apps without learning Swift or Kotlin |
| Large open-source ecosystem | Ready-made libraries for navigation, state, animation, and monetization |
| Backed by Meta | Continuous 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.
| Limitation | Practical impact |
|---|---|
| Reliance on third-party libraries | Some platform APIs require community packages that may lag OS updates |
| Platform divergence | Pixel-perfect designs sometimes need branch logic per OS |
| Heavy computation | CPU- or GPU-intensive workloads may still need native modules |
| Debugging complexity | Issues can span JavaScript, native, and the runtime boundary |
| Upgrade churn | Major 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.
| App | Category |
|---|---|
| Social | |
| Social | |
| Microsoft Office | Productivity |
| Shopify | Commerce |
| Discord | Communication |
| Uber Eats | Food delivery |
| Coinbase | Finance |
| Wix | Website builder |
| Bloomberg | News 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.
| Framework | Language | UI approach | Backed by |
|---|---|---|---|
| React Native | JavaScript / TypeScript | Real native UI components | Meta |
| Flutter | Dart | Custom rendering engine (Impeller) | |
| Swift / Kotlin | Swift, Kotlin | Direct platform APIs | Apple, Google |
| .NET MAUI | C# | Native handlers per platform | Microsoft |
| Ionic / Cordova | JavaScript | WebView wrapper | Ionic, 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:
- Install Node.js and a package manager (npm or Yarn).
- Install the Expo CLI or the React Native CLI.
- Create a new project with
npx create-expo-app MyAppornpx react-native init MyApp. - Run the app with
npx expo start(Expo) ornpx 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
react-native-iap, expo-iap, or Adapty’s React Native SDK) to integrate Apple StoreKit and Google Play Billing into a React Native app.