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, используют сторонние модули в собственной сборке.