Expo Updates Protocol v1 · Без EAS

OTA-обновления для React Native
без EAS и облака Expo

Доставляйте обновления JavaScript и ассетов в ваши Expo / React Native приложения мгновенно — без облака Expo, без EAS и без оплаты за каждый запрос. Каналы, откаты, подпись кода и аналитика из коробки.

$ npm install -g otapush
$ otapush login
$ otapush init
$ otapush publish --channel staging --platform ios
✓ Update 8f3a2c1 published to staging (ios)

Всё, что умеет EAS Update. Без привязки к вендору.

Ваше приложение общается с сервером обновлений по стандартному протоколу Expo Updates — та же клиентская библиотека, которую вы уже используете, новый SDK не нужен.

Каналы

Каналы dev, staging и prod из коробки. Публикуйте в staging, проверяйте на реальных устройствах, продвигайте в prod одним кликом.

Мгновенный откат

Неудачный релиз отменяется в один клик. Откатите канал на предыдущее обновление — клиенты восстановятся при следующем запуске.

Статистика в реальном времени

Активные пользователи за месяц, проверки обновлений, загрузки и установки — с разбивкой по дням, каналам и платформам.

iOS + Android

Один конвейер публикации для обеих платформ. Состояние каналов раздельно по платформам, поэтому хотфикс для iOS не затронет пользователей Android.

Expo и bare React Native

Managed-проекты Expo и bare RN — init пропатчит app.json или нативные AndroidManifest/Expo.plist, а бандлы публикуются через expo export или react-native bundle.

Подпись кода

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

Без аккаунта Expo

Регистрация, init, publish — и всё. Без логина в Expo, без EAS CLI и без привязки к облаку: приложение общается с сервером обновлений по открытому протоколу.

Otapush, EAS Update, CodePush

App Center, а вместе с ним CodePush, закрыт 31 марта 2025 года. Вот чем отличаются оставшиеся варианты.

Протокол обновленийOtapushEAS UpdateCodePush (свой сервер)
Протокол обновленийExpo Updates Protocol v1Expo Updates Protocol v1Собственный, CodePush
Клиентская библиотекаexpo-updates без измененийexpo-updates без измененийreact-native-code-push
Аккаунт ExpoНе нуженОбязателенНе нужен
Кто держит серверМыExpoВы сами
Цена уходаПоменять один URL — клиент стандартныйПоменять один URL — клиент стандартныйЗаменить клиентскую библиотеку
Оплата в ₽, счёт для юрлицДаНетСвой счёт за хостинг

И Otapush, и EAS Update говорят на протоколе, который штатный клиент expo-updates уже умеет, — поэтому переход между ними это правка конфигурации, а не миграция. Это и есть честная причина выбирать любой из двух.

Простые тарифы

Оплата по месячным активным пользователям (уникальные устройства в месяц). Сервер продолжает отдавать обновления даже при превышении лимита — без внезапных отключений.

Free

0 ₽
  • До 10 MAU
  • Одно приложение
  • Каналы dev / staging / prod
  • Откаты в один клик
  • Базовая статистика
  • Поддержка сообщества

Для индивидуальных разработчиков

Начать бесплатно

Start

490 ₽/мес
  • До 1 000 MAU
  • До 3 приложений
  • Каналы dev / staging / prod
  • Откаты в один клик
  • Базовая статистика
  • Поддержка по email

Для индивидуальных разработчиков

Выбрать тариф

ProРекомендуем

2 490 ₽/мес
  • До 10 000 MAU
  • До 10 приложений
  • Каналы dev / staging / prod
  • Откаты в один клик
  • Полная статистика и аналитика
  • Подпись кода
  • Приоритетная поддержка

Для физических и юридических лиц

Выбрать тариф

Business

9 990 ₽/мес
  • До 100 000 MAU
  • Безлимит приложений
  • Каналы dev / staging / prod
  • Откаты в один клик
  • Полная статистика и аналитика
  • Подпись кода
  • SLA
  • Выделенный менеджер поддержки

Для физических и юридических лиц

Выбрать тариф

Enterprise

Индивидуально
  • Безлимит MAU
  • Безлимит приложений
  • Всё из тарифа Business
  • Помощь с on-premise развёртыванием
  • SLA
  • Выделенный менеджер поддержки

Для физических и юридических лиц

Свяжитесь с нами

Способы оплаты: Банковская карта (МИР / Visa / Mastercard) или СБП через эквайринг Т-Банка; Счёт на расчётный счёт для юридических лиц (от тарифа Pro).

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

Черновые цены — финальные будут объявлены до запуска.

Вопросы, которые задают перед переходом

Можно ли обновлять приложение React Native без публикации в App Store?

Да, если обновление меняет только JavaScript-бандл и ассеты. Лицензионный договор Apple (§3.3.1(B)) разрешает загружать интерпретируемый код при условии, что он не меняет заявленное назначение приложения и не обходит защиту ОС; в политике Google Play есть такое же исключение для интерпретируемых языков. Нативный код по-прежнему требует релиза через стор.

Нужен ли аккаунт Expo или EAS CLI?

Нет. Otapush реализует Expo Updates Protocol v1, поэтому клиентом служит уже подключённая к вашему приложению библиотека expo-updates. Вы указываете ей URL своего приложения в Otapush и публикуете через CLI otapush. Bare-проекты React Native тоже работают — otapush init сам пропишет нативную конфигурацию.

Что будет, если сервер обновлений недоступен?

Для пользователей — ничего. expo-updates запускает тот бандл, который уже есть на устройстве: последнее скачанное обновление или версию, зашитую в сборку, — и просто повторит попытку при следующем запуске. Недоступность сервера обновлений не роняет приложение.

Что именно считается активным пользователем за месяц?

Один MAU — это одно устройство, которое хотя бы раз за календарный месяц проверило обновление или скачало его. Устройство, проверившее сто раз, считается один раз. Сами публикации, каналы и трафик не тарифицируются вовсе.

Что происходит при превышении лимита тарифа?

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

Как перейти с EAS Update?

Укажите в конфигурации приложения URL своего приложения в Otapush, соберите бинарник один раз, чтобы новый URL и сертификат подписи попали в сборку, и опубликуйте обновление. Обе стороны говорят на одном протоколе, поэтому в вашем JavaScript ничего не меняется.

Можно ли оплатить не из России?

Пока не самостоятельно. Оплата картой и через СБП проходит в рублях через российский эквайринг, юрлица могут оплатить по счёту. Если вы за пределами России — напишите нам, договоримся.

Выпустите первое OTA-обновление сегодня

Бесплатный тариф — 10 MAU, то есть уникальных устройств в месяц. Карта не нужна.