Formerly known as Expo Open OTA (expo-open-ota)
xprem sends over-the-air (OTA) updates to Expo and React Native apps. It speaks the official Expo Updates protocol, so any app running expo-updates can talk to it. It is an open-source alternative to EAS Update, on your own servers.
The server also handles branch and channel mapping, progressive rollouts and rollbacks. It is compatible with expo-observe, which reports logs, metrics and events back from your apps.
Documentation · Quick start · Website · Issues · Contact
xprem has served OTA updates in production since early 2025, to apps totaling more than a million monthly active users.
- Publish, roll back, republish OTA updates from the eoas CLI, in CI or from the dashboard
- Channels & Branches mapping: Build your apps with different release channels (e.g. production/staging) and point them to specific branches.
- Progressive rollouts: Serve an update to a percentage of your users' fleet and update it progressively / roll it back.
- A/B testing: one channel can serve two branches at once, with devices split deterministically between them
- Multi-app: one server can host multiple applications
- Observability: the xprem server can collect events & metrics from expo-observe and store everything in your own ClickHouse instance.
- End-to-end code signing: the server signs every manifest with a private key you own; the matching certificate ships inside the app, and expo-updates refuses any update that does not verify against it: a compromised bucket or CDN cannot push code into your app.
- MCP server: Your xprem server comes with an MCP server that allows agents to operate branches, channels and rollouts and query telemetry over OAuth, with per-user permissions
- Deployment: Docker image, Helm chart, or a single static Go binary; a stateless mode runs without any database
Your updates stay in your own infrastructure. xprem uploads every bundle and its assets to your bucket, and devices download them from your CDN.
Most providers are already supported. If yours is missing, feel free to open an issue.
xprem is one Go process, deployed as a single instance or as many replicas as you need. The project ships a Docker image and a Helm chart to keep the deployment simple, plus npx eoas server:init, a utility that sets up the environment for your configuration.
We want to ship an update server that is fast and cheap to run. We benchmarked it against the traffic of a fleet of one million monthly active users, on a single vCPU and a small database, with telemetry enabled:
| Server | EC2 c6g.medium · 1 vCPU (Graviton2) · 2 GiB RAM |
| Database | RDS PostgreSQL db.t4g.small · 2 vCPU · 2 GiB RAM |
| Storage | Google Cloud Storage |
| Enabled | Code signing · device telemetry |
| Phase | Rate | Mean | p95 | p99 | Errors |
|---|---|---|---|---|---|
| Real fleet traffic | 230 req/s | 1.46 ms | 1.58 ms | 2.35 ms | 0 |
| Capacity probe | 650 req/s | 1.02 ms | 1.39 ms | 2.28 ms | 0 |
| Full-fleet rollout | 938 req/s | 3.15 ms | 20.5 ms | 55.2 ms | 0 |
The method and the raw numbers are committed in test/load/results. Feel free to challenge them.
The documentation is exposed as an MCP server, so your AI tools can answer questions about xprem with the docs as their source:
https://mercure-technologies.gitbook.io/xprem/~gitbook/mcp
Use the install buttons at the top of this page for Cursor and VS Code. For Claude Code:
claude mcp add --transport http xprem-docs https://mercure-technologies.gitbook.io/xprem/~gitbook/mcpAny other MCP-compatible client (ChatGPT connectors included) can be pointed at the same URL.
xprem was originally built to run in production for apps with hundreds of thousands of monthly active users, under strong security and performance constraints. The server is production-ready and enterprise-ready, and it is actively maintained. Feel free to contact us at contact@xprem.dev if you want to know more.
-
No per-user pricing.
-
You own the data.
-
Runs on a private or offline network.
-
You control the scaling.
-
No intermediary in the path.
-
No vendor dependency.
Contributions are welcome! For anything beyond a small fix, please open an issue before writing code. xprem is an open-core project and some advanced features are reserved for the commercial edition; the boundary is documented in CONTRIBUTING.md.
xprem is not officially supported or affiliated with Expo. This is an independent open-source project.
The core is MIT and will stay MIT. Enterprise features live in ee/ directories and are covered by a commercial license (see ee/LICENSE); everything else is MIT (see LICENSE).

