Expo Updates protocol, on Cloudflare

Over-the-air updates for Expo, under your own keys.

Publish a signed update in seconds, test it on preview, promote it with an approval, and roll it back when something breaks. One service for every app and team you run.

~/my-app
$ otaflow publish -m "Fix checkout crash"
 exported 214 assets, 3 new
 Published 4f2c9a1e to preview

$ otaflow promote --wait
 Requested: waits for the owner or manager
 Approved by Mina. Live on production.

$ otaflow rollback --channel production --previous
 Rolled production back to 9b07d3c2

Built for teams that ship to the stores and still need to move fast.

Your signing key stays yours

Updates are signed on your machine or in your CI. Otaflow stores only the public half and checks every signature before it accepts a publish.

Preview, then production

Everyone can publish to preview. Reaching production takes the account owner, or a promotion the owner or manager approves.

Roll back in one command

Go back to any earlier update, or return devices to the JavaScript embedded in the binary. The rollback is signed with your key like any other update.

A brake that needs no key

Pause a channel and devices stop receiving updates within seconds. Resume when you are ready. Nothing is deleted.

Teams without the sprawl

Owner, one manager, members per app. CI gets API keys scoped to an app and to what it may do. Approving a promotion is never one of them.

Tenants never meet

Every query is scoped to an account and an app. Assets are content-addressed and immutable, served from the edge.

How it works

  1. 01

    Publish

    otaflow publish exports, hashes and signs your update, then uploads only the files that changed.

  2. 02

    Promote

    Test on preview. Ask for production; the owner or manager approves from the dashboard, or from the CLI.

  3. 03

    Recover

    Something wrong? otaflow rollback --previous puts the last good update back, signed.

We are onboarding partners first.

Accounts are opened by hand while Otaflow is young, and partners get a plan without paying. Tell us about your app and we will set you up.