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.

  • #412 iOSBuilding, Building
  • #409 AndroidOn Google Play, Done
  • #410 iOSNeeds you, Needs you
  • #411 iOSSigning, Building
  • #406 iOSOn TestFlight, Done
  • Builds iOS + Android
  • Submission TestFlight + Play
  • Updates OTA channels
  • Push APNs + FCM

One release, start to finish

Watch a release ship itself.

Every build keeps its artifact, store state and next owner together, so a green build is never mistaken for a finished release.
iOS production releaseLive
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.71✓ TestFlight: 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

  • Wait state

    unchanged blockers keep the release open with an owner

Platform

Every step from commit to store, in one place.

01

Native builds

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

Store submission

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

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.
04

Push notifications

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

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.
06

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
07

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
08

Ubriot Console

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

Build analytics

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

Store follow-through

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

Intentional release holds

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

Retry owner

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

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.
14

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.
15

Retry diff

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

Retry receipt

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

Retry justification

A blocked release shows the exact credential, track, metadata, or artifact change that made the next retry worth running.
18

Retry wait state

When nothing material changed, Ubriot keeps the release in a wait state with the blocker, owner, store target, and next proof visible.

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 with backoff

  • Token cleanup

    Automatic

Illustrative, compared with typical per-MAU tiers. Third-party pricing varies.

Workflow

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

  1. 1

    Connect

    Point Ubriot at a Git repository and branch.
  2. 2

    Credential

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

    Ship

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

    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

Ship with Ubriot AI.

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