Releases: mercuretechnologies/expo-open-ota
Release list
v3.0.5
What's Changed
- Fix concurrency issues in GCS and S3 bucket operations by @axelmarciano in #106
- feat: implement advisory lock for PostgreSQL migrations to prevent race conditions by @axelmarciano in #108
- audit logs by @axelmarciano in #109
Changes
- Docker image:
ghcr.io/mercuretechnologies/expo-open-ota:v3.0.5 - Helm chart:
helm install expo-open-ota oci://ghcr.io/mercuretechnologies/charts/expo-open-ota --version 3.0.5
Full Changelog: v3.0.4...v3.0.5
v3.0.4
Changes
- Docker image:
ghcr.io/mercuretechnologies/expo-open-ota:v3.0.4 - Helm chart:
helm install expo-open-ota oci://ghcr.io/mercuretechnologies/charts/expo-open-ota --version 3.0.4
What's Changed
- Support TypeScript for EoAS init and add DISABLE_CODE_SIGNING conditions by @axelmarciano in #103
Full Changelog: v3.0.3...v3.0.4
v3.0.3
Changes
- Docker image:
ghcr.io/mercuretechnologies/expo-open-ota:v3.0.3 - Helm chart:
helm install expo-open-ota oci://ghcr.io/mercuretechnologies/charts/expo-open-ota --version 3.0.3
What's Changed
- feat/rbac by @axelmarciano in #98
Full Changelog: v3.0.2...v3.0.3
v3.0.2
Changes
- Docker image:
ghcr.io/mercuretechnologies/expo-open-ota:v3.0.2 - Helm chart:
helm install expo-open-ota oci://ghcr.io/mercuretechnologies/charts/expo-open-ota --version 3.0.2
What's Changed
- Add Azure blob storage bucket by @axelmarciano in #97
Full Changelog: v3.0.1...v3.0.2
v3.0.1
Changes
- Docker image:
ghcr.io/mercuretechnologies/expo-open-ota:v3.0.1 - Helm chart:
helm install expo-open-ota oci://ghcr.io/mercuretechnologies/charts/expo-open-ota --version 3.0.1
What's Changed
- feat: generalize generic CDN to any cloud storage via CDN_BASE_URL by @axelmarciano in #96
Full Changelog: v3.0.0...v3.0.1
v3.0.0
Expo Open OTA v3
v3 is the largest release since the project started. The server now hosts all your Expo apps behind a single deployment, with a web dashboard, progressive rollouts, A/B testing and an enterprise edition built on the same open-source core. It has been serving production traffic throughout the beta, to apps totaling more than a million monthly active users.
Coming from v2? Read the migration guide before upgrading, this release contains breaking changes.
Highlights
Multi-app support
One server hosts all your Expo apps. Each app gets its own branches, channels, API tokens and update history, and no Expo account is required anymore.
Control plane mode and the dashboard (#65, #87)
Plug in PostgreSQL and the server migrates itself into control plane mode: a web dashboard where your team signs in with individual accounts to manage apps, channels, tokens and rollouts. Stateless mode still works with nothing but a bucket and a few environment variables, and remains the simplest way to get started.
Progressive rollouts (#91)
Ship an update to 10% of devices, watch your metrics, then increase, finish or revert in one click from the dashboard, or from the CLI with npx eoas publish --branch production --rollout-percentage 10.
A/B testing
A channel can serve two branches at once, with devices split deterministically between them. Test two variants in production and promote the winner.
Enterprise edition (#88, #89, #90, #94)
For teams that need tighter control, the Enterprise edition adds single sign-on through any OIDC provider (Microsoft Entra ID, Okta, Google Workspace, Keycloak...), protected branches that only explicitly allowed tokens can publish to, and per-token IP allowlists. Everything else stays MIT-licensed and free.
Breaking changes
- Apps now identify themselves with the
expo-app-idrequest header instead of the server-sideEXPO_APP_IDenvironment variable. Add it toupdates.requestHeadersin your app config and rebuild. - The bucket layout now includes the app id. The re-path runs automatically on first v3 boot and needs delete permission on the bucket (
s3:DeleteObjecton S3,roles/storage.objectAdminon GCS). The server answers503until it completes. - Publishing requires
eoasv3: publish routes moved under/{appId}/. - Dashboard sign-in now takes
ADMIN_EMAILtogether withADMIN_PASSWORD. S3_KEY_PREFIXis renamed toBUCKET_KEY_PREFIX(the old name still works with a deprecation warning).- Prometheus metrics carry an
appIdlabel, andupdate_error_users_totalnow counts unique clients.
The migration guide walks through both paths, staying stateless or moving to control plane mode.
Also in this release
- Readiness and liveness probes so orchestrators gracefully (#93)
- PostgreSQL-backed stores with full test coverad to Go 1.25
- The repository moved to [mercuretechnologies/eub.com/mercuretechnologies/expo-open-ota). Images
and charts are published to bothghcr.io/mercuracyghcr.io/axelmarciano` namespace, so
existing deployments keep receiving updates with
Install or upgrade
- Docker: `ghcr.io/mercuretechnologies/expo-open
- Helm:
helm install expo-open-ota oci://ghcr.its/expo-open-ota --version 3.0.0 - CLI:
npx eoas@3
Full changelog: https://github.com/mercureteompare/v2.3.22...v3.0.0
v3.0.0-beta.7
Changes
- Docker image:
ghcr.io/mercuretechnologies/expo-open-ota:v3.0.0-beta.7 - Helm chart:
helm install expo-open-ota oci://ghcr.io/mercuretechnologies/charts/expo-open-ota --version 3.0.0-beta.7
v3.0.0-beta.6
Changes
- Docker image:
ghcr.io/mercuretechnologies/expo-open-ota:v3.0.0-beta.6 - Helm chart:
helm install expo-open-ota oci://ghcr.io/mercuretechnologies/charts/expo-open-ota --version 3.0.0-beta.6
v3.0.0-beta.4
Changes
- Docker image:
ghcr.io/mercuretechnologies/expo-open-ota:v3.0.0-beta.4 - Helm chart:
helm install expo-open-ota oci://ghcr.io/mercuretechnologies/charts/expo-open-ota --version 3.0.0-beta.4
v3.0.0-beta.10
What's Changed
- feat: implements progressive rollouts by @axelmarciano in #91
Full Changelog: v3.0.0-beta.7...v3.0.0-beta.10