Analytics and metrics
Analytics and metrics
Patch records download, install, success, and failure events from the client SDK. Use the dashboard and CLI to monitor rollout health.
The client posts events to {apiUrl}/v1/metrics/events. Metrics failures never block the update flow; the SDK queues and retries natively.
Dashboard
The web dashboard is your team's control plane in the browser: apps, deployments, release history, New release (command builder or .cmpatch upload), promote/rollback/rollout actions, members, and API tokens.
Under Metrics, drill from apps to deployments for rollups. See Web dashboard for a full walkthrough. Open it at your API URL after install (e.g. https://updates.example.com/).
CLI metrics
Deployment-level metrics
cmpatch deployment metrics --app MyApp-iOS --deployment Production --format table
Useful for overall adoption and health across all releases in a deployment.
Per-release metrics
cmpatch release metrics --app MyApp-iOS --deployment Production --label v4 --format table
Typical event types include Downloaded, Installed, Success, Failed, and Active.
What to watch during a rollout
Install rate
High downloads with low installs can indicate install-mode issues, binary version mismatches, or client errors.
Failures and rollbacks
Spikes after a release often mean a bad bundle or incompatible native project. Check Debugging and consider rollback.
Active count
How many devices are running a given release label, helps confirm a gradual rollout is progressing.
Monitoring such as Datadog or Sentry
Tools like Datadog or Sentry need extra information to see which OTA release a device has installed. That usually means uploading a source map for each release.
OTA JS ships minified, so without a map your crash tool only shows a wall of names. Upload the map to a tool such as Datadog or Sentry. Keeping a copy on Patch alone does not symbolicate those stack traces.
You can still attach a map when you publish (cmpatch release create --sourcemap …, or cmpatch release-react --sourcemap-output …). Patch stores it privately under _internal. Apps never download it for OTA, and Patch does not push it to your crash tool for you.
In practice: build the map in the same CI job as the release, then run your tracker’s upload step (for example Datadog’s React Native / datadog-ci flow). Use a version tag that matches how you label that OTA release in RUM or errors.
Example rollout monitoring workflow
release with --rollout-percentage 10
→ watch deployment metrics for 24h
→ increase rollout or promote to Production
→ rollback if failure rate spikes
See Production control for rollout commands.