Mobile release infrastructure

Ship React Native apps.All the way into the store.

Most mobile CI stops at a green build. Ubriot carries the release the rest of the way: signing, TestFlight and Google Play submission, OTA updates and push. When something breaks, Ubriot AI diagnoses it against your app's own release history.

BUILDS

iOS + Android

SUBMISSION

TestFlight + Play

UPDATES

OTA channels

PUSH

APNs + FCM

release · ios · productionlive
00:00.14$ git push origin main
00:02.90· clone · install · pods
04:11.02· xcodebuild archive, signed
06:48.55· uploaded to App Store Connect
07:02.18· AI checks the build for store blockers
11:23.71TestFlight: ready to test

BUILD

#312

DURATION

11m 23s

STATUS

READY

Artifact

binary, build log, and source ref kept together

Store state

upload, processing result, and next owner visible

Retry rule

rerun only after signing, track, or metadata changed

Done state

source ref, artifact, store result, and health proof agree

Built on Ubriot

ArkifiArkifiSoreliaSoreliaZentygoZentygoDurraDurra
“We ship our mobile commerce apps to the App Store and Google Play on Ubriot. Builds, store submission, and over-the-air updates run through one pipeline, so a lean team ships at the pace of a much bigger one.”
Samson Ajayi, CEO, Arkifi (partner)

Live platform stats

Totals across apps shipping on Ubriot

0native builds completed
0store submissions shipped
0OTA updates published

Platform

Every step from commit to store, in one place.

XCODEBUILD · GRADLE

Native builds

Signed iOS and Android builds with clear logs, artifacts, and status. No per-build-minute meter.

ASC · PLAY CONSOLE

Store submission

Ship to TestFlight or Google Play from the dashboard or CLI, without hopping between tools.

PRODUCTION · STAGING

OTA updates

Publish JavaScript updates to a channel, then roll forward or back instantly. No app review wait. Works with Expo and bare React Native.

APNS · FCM

Push notifications

Direct APNs and FCM delivery, priced per device, not per monthly active user. Campaigns and delivery logs included.

Learn about Notify
PRE-SUBMIT · RISK

Submission check

Ubriot scans your app for the App Store rejection triggers that cost teams weeks, missing permission strings, Sign in with Apple, placeholder ids, before you submit.

MEMORY · OTA SAFETY

Release intelligence

When a build fails, Ubriot diagnoses it against your app's own history. Before an OTA, it warns you if the update would downgrade the runtime your users are on.

See release intelligence
HEALTH · ROLLBACK

Release safety

After every release, Ubriot watches your app's backend health and, if it degrades, alerts you and offers a one-click rollback. Continuous uptime checks included.

See release safety
DEVICE · QA

Ubriot Console

Open builds, artifacts, logs, AI diagnosis, and release readiness on a real phone instead of living in the simulator.

Open the Console
BUILD TIME · SUCCESS RATE

Build analytics

Build time, success rate, and where the time goes, per app, with compute and OS telemetry across every run.

TESTFLIGHT · PLAY

Store follow-through

A release stays open until the store upload, processing result, and retry owner are visible beside the build artifact.

TRUST · METRICS

Proof before numbers

Public counters stay hidden when the stats API is unavailable, so marketing proof never falls back to invented volume.

CREDENTIALS · STORE

Intentional release holds

A production build stays blocked when signing, store access, or metadata is missing, with the exact owner beside the artifact.

RETRY · OWNER

Retry owner

Before a blocked release runs again, Ubriot shows whether the signing owner, store track, or submission error actually changed.

HOLD · PROOF

Blocked on purpose

If store access or signing proof has not changed, the release stays blocked with the owner visible instead of burning another build.

VERSION · STORE

Duplicate build guard

Store uploads that reuse an iOS build number or Android version code stop with a clear bump-next message before another retry burns review time.

BLOCKER · DIFF

Retry diff

A blocked release shows whether credentials, track, metadata, or artifact changed since the last failed submission before another build starts.

RECEIPT · STORE

Retry receipt

Every retry keeps the previous blocker, changed proof, store response, and owner together before anyone calls the release unblocked.

Ubriot Notify · included

Push notifications without the per-MAU bill.

Direct APNs and FCM delivery, priced per registered device. Auto-retry, campaigns, and delivery logs in the same dashboard as your builds.

at 100,000 registered devices

Typical per-MAU tier

~$1,200/mo

Ubriot Pro

$99/mo

Direct APNs + FCM

No relay

Per-device

Not per-MAU

Auto-retry

5x, backoff

Token cleanup

Automatic

Illustrative vs typical per-MAU tiers · third-party pricing varies

Workflow

One command when you want speed. One dashboard when you need control.

01

Connect

Point Ubriot at a Git repository and branch.

02

Credential

Upload signing credentials once. Ubriot handles certificates from then on.

03

Ship

Native builds to the stores, or OTA updates straight to devices, from one CLI.

04

Track

Follow store processing from upload to ready, with logs and AI diagnosis when a build fails.

Ubriot build log terminal on a laptop

Overview

What is Ubriot?

Most teams assemble the release pipeline by hand: a CI service for builds, Fastlane for signing and uploads, a separate provider for OTA updates, and yet another vendor for push. Each piece carries its own config, billing, and ways to break. Ubriot puts native builds, store submission, OTA, and push in one platform you drive from one dashboard or CLI. Connect a Git repository, add your signing credentials once, and ship, with no per-build-minute meters and no per-monthly-active-user push bills.

Built for
React Native and Expo mobile teams
Replaces
CI minutes, Fastlane, OTA and push vendors
Driven by
One dashboard or one CLI command

Ready

Ship with Ubriot AI.

Connect a repo, add your signing keys once, and ship builds, store submissions, and updates from one CLI.