← назад в блог

6 мин чтения#мобильные приложения

React Native и Expo простыми словами: гид для владельца бизнеса

React Native и Expo простыми словами: как один код становится приложениями для iOS и Android, что дают OTA-обновления и EAS Build и когда это нужно.

React Native позволяет собрать настоящие приложения для iOS и Android из одного общего кода на JavaScript/TypeScript. Expo — набор инструментов поверх него, который берёт на себя самые неприятные части: сборки в облаке, публикацию в сторы и небольшие обновления без ожидания модерации. Для большинства бизнес-приложений эта связка означает одну команду, один код и более быстрый путь в оба стора.

Разберём, что это значит для бюджета, сроков и продукта, — без лишних терминов.

Что такое React Native

React Native — фреймворк с открытым исходным кодом, созданный в Meta. Разработчики пишут приложение один раз на React (та же библиотека, на которой сделаны многие современные сайты), а React Native превращает его в нативные элементы интерфейса на каждой платформе. Кнопка в приложении на React Native — это настоящая кнопка iOS на iPhone и настоящая кнопка Android на Android, а не веб-страница, притворяющаяся приложением.

В этом ключевое отличие от «сайтов в обёртке»: приложение выглядит, прокручивается и ощущается как родное для телефона и может пользоваться камерой, уведомлениями, геолокацией, биометрией и другими функциями устройства.

Meta использует React Native в Facebook и Instagram, а в официальной витрине есть приложения Microsoft (Office, Outlook, Teams), Amazon и Shopify — последний делает на нём все свои мобильные приложения. Это зрелая и хорошо поддерживаемая технология, а не эксперимент.

Что такое Expo

Expo — это фреймворк и набор сервисов вокруг React Native. Официальная документация React Native рекомендует начинать новые приложения с фреймворка и в первую очередь указывает именно на Expo. На практике Expo даёт:

  • Готовую основу проекта — навигацию (Expo Router), шрифты, иконки, заставку и большой набор модулей для работы с устройством (камера, уведомления, геолокация, файлы и многое другое).
  • EAS Build — облачные сборки для iOS и Android. Разработчику не нужно держать собственные машины для сборки под каждую платформу, а сборку для iOS можно получить даже без Mac.
  • EAS Submit — загрузку сборок в App Store Connect и Google Play Console.
  • EAS Update — обновления «по воздуху» (OTA) для JavaScript-части приложения.

EAS расшифровывается как Expo Application Services. У сервиса есть бесплатный тариф и платные планы; актуальные лимиты проверьте на expo.dev, прежде чем строить на них график релизов.

Один код: что общее, а что нет

«Один код» — правда для подавляющей части приложения, но не на все 100%. Честная раскладка:

Часть приложенияОбщая для iOS и Android?
Экраны, бизнес-логика, запросы к APIДа
Дизайн-система, навигацияДа, с небольшими правками под платформу
Push-уведомления, камера, геолокацияДа, через модули Expo (настройка в сторах разная)
Страницы в сторах, иконки, скриншотыНет — у каждого стора свои требования
ТестированиеНет — проверять нужно на обеих платформах
Редкие нативные функции (необычное железо, новейшие API)Иногда нужен нативный модуль

То есть за само приложение вы не платите дважды, но платите за тестирование на двух платформах и оформление двух страниц в сторах. И это всё равно обычно намного меньше, чем два отдельных приложения на Swift и Kotlin. Если вы пока сомневаетесь, нужно ли приложение вообще, почитайте PWA или приложение на React Native.

OTA-обновления: исправления без модерации

Обычно любое изменение в мобильном приложении требует новой сборки и проверки в сторе. С EAS Update многие изменения обходятся без этого. Разработчик публикует обновление JavaScript-кода и ресурсов, и пользователи получают его при следующем открытии приложения.

# опубликовать обновление для пользователей канала production
eas update --channel production --message "Исправлен текст кнопки оплаты"

Что OTA-обновления могут изменить: тексты, вёрстку, стили, исправления ошибок в логике, картинки.

Что они не могут: всё нативное — новые разрешения, новые нативные библиотеки, иконку приложения, обновление SDK. Для этого нужна новая сборка и обычный релиз через стор.

И ещё одно правило: политики сторов продолжают действовать. OTA — для исправлений и улучшений, а не для того, чтобы превратить приложение во что-то, чего модераторы никогда не видели. При таком подходе это огромная экономия времени: опечатка на экране оплаты не должна ждать проверки.

EAS Build и публикация по шагам

Типичный процесс релиза с Expo выглядит так:

  1. Разработка — команда работает в development-сборках на реальных телефонах.
  2. Тестовые сборки — тестировщики получают устанавливаемые версии (TestFlight на iOS, внутреннее тестирование в Google Play).
  3. Продакшн-сборка — eas build создаёт готовые для сторов файлы под обе платформы.
  4. Отправка — eas submit загружает их в сторы.
  5. Модерация и релиз — Apple и Google проверяют приложение, после одобрения вы его публикуете.
  6. Обновления — мелкие исправления через EAS Update, крупные изменения через новые сборки.

Сторона сторов — аккаунты, модерация, скриншоты, политика конфиденциальности — отдельная большая тема: см. как опубликовать приложение в App Store и Google Play.

Когда React Native и Expo подходят отлично

  • Бизнес- и сервисные приложения — запись, доставка, лояльность, маркетплейсы, личные кабинеты клиентов.
  • Контент и продажи — каталоги, заказы, уведомления.
  • MVP, которому нужны сторы — одна команда выпускает обе платформы, что хорошо ложится на запуск MVP.
  • Продукты, у которых уже есть сайт на React — опыт команды, а иногда и часть логики можно переиспользовать.

Когда стоит подумать ещё раз

  • Игры с тяжёлой 3D-графикой — для них обычно лучше подходят игровые движки.
  • Приложения, построенные вокруг очень новых или необычных нативных API — возможно, но может потребовать собственных нативных модулей и больше времени.
  • Если хватит сайта — PWA может быть дешевле, когда сторы и глубокий доступ к устройству не нужны.

Чек-лист перед стартом проекта на Expo

  • Понятный список нужных функций устройства (камера, push, геолокация, оплата)
  • Решение: iOS, Android или обе платформы на старте
  • Аккаунты разработчика Apple и Google оформлены на вашу компанию
  • Доступ к аккаунту Expo/EAS вашей организации, а не только к личному аккаунту разработчика
  • Согласована стратегия обновлений: что идёт через OTA, а что через стор
  • Аналитика и отчёты о сбоях запланированы с первого дня

Частые вопросы

Приложение на React Native — это «настоящее» нативное приложение?

Да. Оно использует нативные элементы интерфейса и распространяется через App Store и Google Play, как любое другое приложение. Пользователи обычно разницы не замечают.

Обязательно ли использовать Expo с React Native?

Строго говоря, нет, но для большинства новых приложений это рекомендуемый путь. Expo снимает много работы по настройке и поддержке, а собственный нативный код при необходимости всё равно можно добавить.

Могут ли OTA-обновления полностью заменить релизы в сторах?

Нет. Они покрывают изменения JavaScript и ресурсов. Всё, что затрагивает нативный код, разрешения или суть приложения, по-прежнему идёт через новую сборку и модерацию.

Можно ли на React Native и Expo сделать ещё и веб-версию?

Expo поддерживает веб как платформу, так что часть приложения может работать в браузере. Но для продающего сайта или страниц под SEO обычно лучше отдельный сайт.

Задумываетесь о приложении?

Если нужно приложение для iOS и Android без оплаты двух отдельных команд, React Native с Expo — стек, который я использую в разработке мобильных приложений. Откройте конструктор проекта, выберите «мобильное приложение» и нужные функции — получите оценку и понятный следующий шаг.