Free to start · Open source
OTA updates for Expo apps. Signed, staged, instantly reversible.
Ship JavaScript fixes to your React Native app without waiting for a store review. Sign up, run one command in your app, and publish your first update in minutes.
$ npx tidepush publish --channel production \
-m "Fix fee copy on the send screen"
• Exporting ios + android bundle(s)…
• Reading app config and runtime version…
ios runtime 3f9c1a… bundle 7.9 MB 42 assets
android runtime 3f9c1a… bundle 8.1 MB 42 assets
• Uploading 2/86 files (16.0 MB)…
✔ Published to production at 100% (group 7c1e0b52-…)
ios 9b0e6c1d-…
android 4f2a8e77-… Tidepush is an update service that speaks the open Expo Updates protocol. Your app keeps using the official expo-updates library; you point it at Tidepush instead of Expo's service. You publish with a command-line tool, from your laptop or CI, and watch and control every release from the dashboard.
One command to publish, one library you already use.
npx tidepush publish runs expo export, uploads only the files Tidepush doesn't have yet, and records a new update.
On launch, expo-updates asks Tidepush: “anything newer for my channel and runtime?”
It downloads the signed update in the background and runs it on the next launch.
Everything you need to ship and undo JavaScript updates safely.
Your app keeps the official expo-updates library. You only point updates.url at Tidepush.
Every manifest and rollback is signed with your app's own key. The app refuses anything unsigned or changed.
Ship to 5% of devices, watch, then widen. Devices that already have the update keep it.
One command puts devices back on the previous update, or on the bundle built into the app.
Test an update on staging builds, then promote the exact same files to production.
See which devices run which update and runtime, plus a full audit log of who did what.
Organizations with owner, admin and read-only roles. Sign in with GitHub. Per-app tokens for CI.
The same AGPL code runs the service. Export your signing key and run it yourself whenever you want.
Start on the free plan, no card needed. Paid plans are priced by monthly active devices: installs that checked for an update that month. Not by downloads, and not by how often you publish.
Going over your plan never stops updates reaching your users. See plans and limits →
The service runs the same code that's on GitHub, under the GNU AGPL-3.0. Teams that must keep keys and data on their own infrastructure can run it themselves, and you can export your signing key at any time. You're never locked in.
Sign up, run npx tidepush init in your app, build once, publish.