Что это такое
React Native — мобильный фреймворк из экосистемы React. Его идея проста: разработчик описывает экран компонентами, а библиотека связывает этот компонентный код с нативными представлениями iOS и Android.
Проект появился внутри Meta как способ быстрее делать мобильные продукты без полного раздвоения команд под Objective-C, Swift, Java и Kotlin. Поэтому репозиторий хранит не только JavaScript-часть, но и значительный слой на C++, Java, Objective-C++ и платформенных сборочных файлах.
Что внутри репозитория
Внутри находятся ядро рантайма, набор базовых компонентов, мосты к платформенным API, код нового архитектурного слоя с Fabric и TurboModules, тесты, примеры и инфраструктура сборки. Это не библиотека виджетов, а фундамент, на котором строятся приложения и дополнительные пакеты.
Сильная сторона репозитория в том, что он показывает всю цену кроссплатформенности: здесь рядом живут JavaScript, C++, Android, iOS и документация для авторов нативных модулей.
Как используют
Команды берут React Native, когда хотят разделить большую часть логики интерфейса между iOS и Android, но сохранить доступ к нативным возможностям устройств. Типичный продукт все равно содержит платформенный код, особенно для камер, уведомлений, платежей и нестандартной навигации.
Для небольших команд проект ценен быстрым стартом и большим набором готовых библиотек. Для крупных команд важнее другое: общая компонентная модель, общий язык для экранов и возможность постепенно переносить отдельные части существующего приложения.
Сильные стороны и ограничения
Главное преимущество React Native — знакомая React-модель, быстрая итерация интерфейса и большой рынок разработчиков. Один и тот же компонентный подход можно использовать в вебе и на мобильных платформах, хотя код редко переносится без адаптации.
Ограничение в том, что абстракция не отменяет iOS и Android. Сложная анимация, тяжелые списки, нативные SDK и редкие устройства требуют понимания платформы. Если приложение почти целиком завязано на низкоуровневые возможности телефона, React Native становится не заменой нативной разработки, а слоем поверх нее.
Для React Native также важна связь с нативными модулями. Хорошая команда заранее решает, какие части останутся на Swift, Kotlin или Java, а какие можно держать в общем компонентном слое. Это снижает риск, что мобильное приложение станет набором обходных решений вокруг платформенных ограничений.
В сопровождении особенно важны версии React, Android SDK, Xcode, сборочных инструментов и сторонних библиотек. Если эти части обновляются хаотично, скорость разработки быстро теряется, даже когда сама идея общего кода остается привлекательной.
Пример
Небольшой экран React Native
Пример показывает обычную компонентную модель: состояние хранится в React, а на экране появляются нативные Text и Pressable.
import { useState } from 'react'
import { Pressable, Text, View } from 'react-native'
export function CounterScreen() {
const [count, setCount] = useState(0)
return (
<View>
<Text>Нажатий: {count}</Text>
<Pressable onPress={() => setCount(count + 1)}>
<Text>Добавить</Text>
</Pressable>
</View>
)
}