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 года. Вот чем отличаются оставшиеся варианты.
| Протокол обновлений | Otapush | EAS Update | CodePush (свой сервер) |
|---|---|---|---|
| Протокол обновлений | Expo Updates Protocol v1 | Expo Updates Protocol v1 | Собственный, CodePush |
| Клиентская библиотека | expo-updates без изменений | expo-updates без изменений | react-native-code-push |
| Аккаунт Expo | Не нужен | Обязателен | Не нужен |
| Кто держит сервер | Мы | Expo | Вы сами |
| Цена ухода | Поменять один URL — клиент стандартный | Поменять один URL — клиент стандартный | Заменить клиентскую библиотеку |
| Оплата в ₽, счёт для юрлиц | Да | Нет | Свой счёт за хостинг |
И Otapush, и EAS Update говорят на протоколе, который штатный клиент expo-updates уже умеет, — поэтому переход между ними это правка конфигурации, а не миграция. Это и есть честная причина выбирать любой из двух.
Простые тарифы
Оплата по месячным активным пользователям (уникальные устройства в месяц). Сервер продолжает отдавать обновления даже при превышении лимита — без внезапных отключений.
Free
- До 10 MAU
- Одно приложение
- Каналы dev / staging / prod
- Откаты в один клик
- Базовая статистика
- Поддержка сообщества
Для индивидуальных разработчиков
Начать бесплатноStart
- До 1 000 MAU
- До 3 приложений
- Каналы dev / staging / prod
- Откаты в один клик
- Базовая статистика
- Поддержка по email
Для индивидуальных разработчиков
Выбрать тарифProРекомендуем
- До 10 000 MAU
- До 10 приложений
- Каналы dev / staging / prod
- Откаты в один клик
- Полная статистика и аналитика
- Подпись кода
- Приоритетная поддержка
Для физических и юридических лиц
Выбрать тарифBusiness
- До 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, то есть уникальных устройств в месяц. Карта не нужна.