OTA updates
OTA updates are limited. Venelx hosts the release records, channels, staged rollout and rollback, and serves an update manifest. Your app must be set up to check that manifest and load the bundle itself, and there is no CLI, code-signing or asset hosting yet. Treat this as an early feature.
OTA (over-the-air) updates let you ship a new JavaScript bundle to an app that's already
installed, without a store release. Open OTA in your project:
https://app.venelx.com/project/<projectId>/ota.
Channels
Every project gets three channels automatically: Production (production), Staging
(staging) and Beta (beta). Each channel points at one active release and has a
rollout percentage.
Publish a release
On the OTA page, Publish bundle:
| Field | Meaning |
|---|---|
| Channel | Where the release goes. |
| Version | Your release version, for example 1.2.0. |
| Runtime version | Only apps built with the same runtime version receive the update. |
| Bundle URL | A URL where the bundle is already hosted. |
Publishing makes the release the channel's active release. The page lists recent releases with their runtime version and rollout.
The API also accepts a bundle file upload, a message and a starting rollout percentage
(POST /api/<projectId>/ota/publish, developer role).
Staged rollout
A channel's rollout is a percentage from 1 to 100 (set via
PATCH /api/<projectId>/ota/channels/<slug>/rollout, admin role). Devices are placed into a stable bucket by
their device id; only devices in the first N percent get the release. A device that checks in without a
device id is treated as part of the rollout.
Rollback
Click Rollback on a channel (admin role). The active release is marked rolled back and the channel returns to the previous release; if there is none, the channel has no active update.
What the app calls
Your app checks for updates with:
GET https://api.venelx.com/api/ota/manifest?projectId=<projectId>&channel=production&runtimeVersion=<runtime>&deviceId=<id>
It returns the active release (id, runtime version, bundle URL and hash, version, message), or
204 No Content when there is nothing for that runtime version, channel or device bucket. This
endpoint is public (no sign-in).