← All open source projects

React Native

react/react-native

React Native is a framework for building mobile apps with React while rendering native iOS and Android interfaces.

Forks 25,181
Author react
Language C++
License MIT
Synced 2026-06-27

What it is

React Native is a mobile framework from the React ecosystem. Developers describe screens as components, and the framework connects that component code to native iOS and Android views.

The project started at Meta as a way to ship mobile products faster without splitting every feature across fully separate Objective-C, Swift, Java, and Kotlin teams. The repository therefore contains JavaScript, C++, Java, Objective-C++, and platform build code.

What is inside

The repository includes the runtime core, base components, bridges to platform APIs, the newer Fabric and TurboModules architecture, tests, examples, and build infrastructure. It is a foundation for applications and libraries, not just a widget kit.

Its value is that it exposes the real cost of cross-platform mobile work: JavaScript, C++, Android, iOS, and native-module guidance live in one public codebase.

How it is used

Teams use React Native when they want to share a large part of interface logic across iOS and Android while keeping access to device capabilities. Real products still include native code for cameras, notifications, payments, and platform-specific navigation.

Small teams get faster starts and a broad library ecosystem. Larger teams get a common component model and a path for moving selected parts of an existing app into a shared layer.

Strengths and limits

The main strength is the familiar React model, fast interface iteration, and a large hiring pool. The same component thinking can be used on web and mobile, even when code is not copied unchanged.

The limitation is that iOS and Android do not disappear. Complex animation, heavy lists, native SDKs, and unusual devices still require platform knowledge.

React Native also depends on native modules. A good team decides early which parts stay in Swift, Kotlin, or Java and which parts can live in the shared component layer. That reduces the risk of building the app around platform workarounds.

Maintenance depends on React versions, Android SDK, Xcode, build tooling, and third-party libraries. If those pieces move chaotically, development speed disappears even though the shared-code idea still looks attractive.

Example

A small React Native screen

This example shows the component model: React owns state, while Text and Pressable render as native mobile controls.

Language: React
import { useState } from 'react'
import { Pressable, Text, View } from 'react-native'

export function CounterScreen() {
  const [count, setCount] = useState(0)

  return (
    <View>
      <Text>Presses: {count}</Text>
      <Pressable onPress={() => setCount(count + 1)}>
        <Text>Add</Text>
      </Pressable>
    </View>
  )
}