Expo

Фреймворк и набор сервисов вокруг React Native: упрощает создание, сборку, публикацию и обновление мобильных приложений.

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

Из чего состоит

  • Expo SDK — готовые модули для функций устройства: камера, геолокация, уведомления, файлы, биометрия, защищенное хранилище. Их подключают одной командой, без нативного кода на Swift и Kotlin.
  • Expo Router — навигация между экранами по структуре файлов, как маршруты страниц в Next.js.
  • Expo Go — приложение для телефона, в котором можно сразу открыть разрабатываемый проект, просканировав QR-код, без сборки и установки.
  • EAS (Expo Application Services) — облачные сборка, подпись, публикация в магазины и обновления «по воздуху».

Как выглядит работа

# Командная строка
npx create-expo-app@latest client-app
cd client-app
npx expo start

Три команды создают проект и запускают его. Разработчик сканирует QR-код телефоном и видит приложение; каждое сохранение кода сразу отражается на экране.

Обновления без магазина

Изменения в JavaScript-части приложения можно доставить пользователям напрямую: при следующем запуске приложение загрузит новую версию. Исправление ошибки доходит до людей за минуты, а не после проверки в App Store и Google Play. Изменения нативной части и новые разрешения по-прежнему требуют выпуска новой версии через магазины, а правила магазинов ограничивают, что можно менять таким способом.

Ограничения и как их обходят

  • Свой нативный код. Если нужна библиотека, которой нет в Expo SDK, создается собственная сборка приложения (development build), и в нее можно подключить любой нативный модуль. Ранние ограничения Expo в этом смысле в прошлом.
  • Облачные сервисы. EAS работает на серверах за рубежом. Для проектов с требованиями к размещению данных сборку выполняют локально или на своих серверах — это поддерживается, а обновления можно раздавать с собственного сервера.
  • Размер приложения может быть немного больше, чем при ручной настройке.

Expo ускоряет старт мобильных проектов и снимает с команды рутину сборки и публикации — особенно ценно, когда нет отдельных специалистов по iOS и Android. Для доступа к Bluetooth-устройствам, например по BLE, используют сторонние модули в собственной сборке.