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 выглядит так:
- Разработка — команда работает в development-сборках на реальных телефонах.
- Тестовые сборки — тестировщики получают устанавливаемые версии (TestFlight на iOS, внутреннее тестирование в Google Play).
- Продакшн-сборка —
eas buildсоздаёт готовые для сторов файлы под обе платформы. - Отправка —
eas submitзагружает их в сторы. - Модерация и релиз — Apple и Google проверяют приложение, после одобрения вы его публикуете.
- Обновления — мелкие исправления через 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 — стек, который я использую в разработке мобильных приложений. Откройте конструктор проекта, выберите «мобильное приложение» и нужные функции — получите оценку и понятный следующий шаг.