React Native


React Native — это открытый фреймворк пользовательского интерфейса, разработанный компанией Meta Platforms (ранее Facebook Inc.) и сообществом[2]. React Native используется для разработки приложений под Android[3],[4] Android TV[5], iOS[4], macOS[6], tvOS[7], Web[8], Windows[6] и UWP[9], позволяя разработчикам использовать фреймворк React совместно с родными возможностями платформ[10]. Технология применяется для создания Android- и iOS-приложений в компаниях Facebook, Microsoft и Shopify[11]. Также React Native используется при разработке приложений виртуальной реальности для Oculus[12].

Общие сведения
React Native
Тип фреймворк для приложений
Разработчики Meta Platforms и сообщество
Написана на C++, Java, JavaScript, Objective-C, Kotlin
Операционная система кроссплатформенность
Первый выпуск 26 марта 2015
Аппаратные платформы Android, Android TV, iOS, macOS, tvOS, Web, Windows, UWP, VR, visionOS
Последняя версия
Репозиторий github.com/facebook/reac…
Лицензия MIT License
Сайт reactnative.dev

История

В 2012 году Марк Цукерберг отметил: «Самая крупная ошибка компании заключалась в том, что мы слишком сильно полагались на HTML5, а не на нативные технологии»[13].[14] Использование HTML5 в мобильной версии Facebook привело к нестабильности приложения и медленному получению данных[15]. Цукерберг пообещал, что в ближайшее время Facebook предоставит лучший мобильный опыт.

Внутри Facebook Джордан Уолке разработал ПО, генерирующее элементы пользовательского интерфейса для iOS из фонового потока JavaScript, что стало основой для веб-фреймворка React. Был организован внутренний хакатон, чтобы доработать этот прототип и создать возможность нативной разработки с помощью новой технологии[16].

В 2015 году после нескольких месяцев работы Facebook выпустила первую версию конфигурации React JavaScript. Во время технической презентации Кристофер Шедо отметил, что Facebook уже использует React Native в продакшене для своих приложений Groups и Ads Manager[17].

Реализация

Принципы работы React Native во многом совпадают с React, за исключением того, что React Native не оперирует DOM или Virtual DOM браузера[18]. Исполняющийся в фоновом процессе (на конечном устройстве) поток JavaScript интерпретирует код приложения и взаимодействует с нативной платформой через сериализованные данные по асинхронному мосту с батч-обработкой[19].[20]

Компоненты React оборачивают существующий нативный код и взаимодействуют с нативными API через декларативную парадигму UI и JavaScript[21]. В современных приложениях на React Native часто применяется TypeScript благодаря статической типизации[22].

Стилями в React Native управляют похожим на CSS синтаксисом, но без использования HTML или CSS напрямую[23]. Вместо этого управляющие сообщения передаются из JavaScript-потока для манипуляции view нативного UI. Благодаря плагинам возможна интеграция Tailwind с React Native.

React Native также доступен для Windows и macOS, поддержку которых обеспечивает Microsoft.

Пример Hello World

Пример программы Hello, World! на React Native:

import { AppRegistry, Text, View, Button } from 'react-native';
import React from 'react';

const HelloWorldApp = () => {
  const [count, setCount] = React.useState(0);

  const incrementCount = () => {
    setCount((prevCount) => prevCount + 1);
  };

  return (
    <View>
      <Text>Hello world!</Text>
      <Text>{count}</Text>
      <Button onPress={incrementCount} title="Increase Count" />
    </View>
  );
};

export default HelloWorldApp;

AppRegistry.registerComponent('HelloWorld', () => HelloWorldApp);

Пример с TypeScript

Пример компонента-счётчика на TypeScript:

import { Button, Text, View } from "react-native";
import React from "react";

interface CounterProps {
    title: string; // обязательное свойство
    baseNumber?: number; // опциональное свойство
}

const Counter: React.FC<CounterProps> = ({ title, baseNumber }) => {
    const [count, setCount] = React.useState<number>(baseNumber || 0);

    const incrementCount = (): void => setCount((prevCount) => prevCount + 1);

    return (
        <View>
            <Text>{count}</Text>
            <Button onPress={incrementCount} title={title}></Button>
        </View>
    );
};

Примечания

  1. Release 0.81.4 — 2025.
  2. Глава 1. Что такое React Native? (англ.). oreilly.com. O’Reilly Media, Inc.. Дата обращения: 30 июля 2020. Архивировано 19 сентября 2025 года.
  3. Выпуск React Native для Android (англ.). code.facebook.com (14 сентября 2015). Дата обращения: 6 ноября 2016. Архивировано 1 октября 2015 года.
  4. 1 2 Shankland, Stephen Масштабный шаг Mozilla в сторону открытого ПО изменил правила тех-индустрии (англ.). CNET (29 марта 2018). Дата обращения: 11 мая 2022. Архивировано 25 мая 2025 года.
  5. Разработка для TV-устройств · React Native (англ.). reactnative.dev. Дата обращения: 2 октября 2020.
  6. 1 2 React Native для Windows и macOS · Создание нативных приложений с помощью Javascript и React (англ.). microsoft.github.io. Дата обращения: 2 октября 2020. Архивировано 19 сентября 2025 года.
  7. React Native для Apple TV (амер. англ.). React Native for Apple TV. Дата обращения: 2 октября 2020. Архивировано 21 сентября 2020 года.
  8. React Native для Web (англ.). GitHub. Дата обращения: 6 ноября 2019. Архивировано 10 октября 2025 года.
  9. Windows Apps Team. React Native на Universal Windows Platform (англ.). blogs.windows.com (13 апреля 2016). Дата обращения: 6 ноября 2016. Архивировано 14 апреля 2016 года.
  10. Внештатные платформы (англ.). reactnative.dev. Facebook, Inc.. Дата обращения: 30 июля 2020. Архивировано 26 февраля 2020 года.
  11. React Native Showcase (англ.). reactnative.dev. Дата обращения: 4 апреля 2023. Архивировано 31 августа 2025 года.
  12. React Native во втором полугодии 2021 · React Native (англ.). reactnative.dev. Дата обращения: 20 августа 2021. Архивировано 10 октября 2025 года.
  13. Главная ошибка Цукерберга? «Ставка на HTML5» (англ.). Mashable. Дата обращения: 7 апреля 2018. Архивировано 12 сентября 2012 года.
  14. Zuckerberg, Mark Беседа у камина с основателем и CEO Facebook Марком Цукербергом (англ.). TechCrunch (12 сентября 2012). Дата обращения: 16 августа 2021. Архивировано 9 апреля 2025 года.
  15. Warren, Christina Главная ошибка Цукерберга? «Ставка на HTML5» (англ.). Mashable. Дата обращения: 29 октября 2020. Архивировано 12 сентября 2012 года.
  16. Краткая история React Native (англ.). jobninja.com. Дата обращения: 16 января 2018. Архивировано 5 июня 2023 года.
  17. React Native: современные веб-технологии для мобильных приложений (англ.). code.facebook.com (26 марта 2015). Дата обращения: 16 января 2018. Архивировано 10 апреля 2015 года.
  18. Eisenman, Bonnie. Learning React Native. — O'Reilly, 2016. — ISBN 978-1-491-92900-1.
  19. Bridge в React Native (англ.) (14 октября 2015). Дата обращения: 16 января 2018. Архивировано 10 февраля 2025 года.
  20. Как мы разрабатываем приложения на React Native: 7 советов для экономии времени. Часть 2 (англ.). Дата обращения: 6 ноября 2019.
  21. Как создать сканер документов на React Native (англ.). sdk.docutain.com. INFOSOFT. Дата обращения: 6 сентября 2024. Архивировано 19 июля 2025 года.
  22. Использование TypeScript (англ.). reactnative.dev. Meta Platforms, Inc.. Дата обращения: 14 июля 2023. Архивировано 26 февраля 2020 года.
  23. React Native Style (англ.). Дата обращения: 24 февраля 2021. Архивировано 15 августа 2025 года.

Литература

  • Eisenman, Bonnie. Learning React Native. — O'Reilly, 2016. — ISBN 978-1-491-92900-1.