// Changelog

What we've shipped

Everything below is live in production. Bug fixes too small to notice are left out.

  1. Faster update checks worldwide

    Added an in-process cache in front of the hottest read paths, so an update check in a region far from the database no longer waits on a cross-region round trip. Devices see a response sooner and the service holds up better under bursts.

  2. Scoped API keys

    Access keys can now be issued read-only or full, and restricted to specific apps. A key used by a CI job that only publishes to one app no longer carries the ability to touch anything else in your account. Existing keys are unchanged and keep full access.

  3. Organization webhooks

    Webhooks can be owned by an organization instead of a person, so release notifications survive someone leaving the team. They follow the organization's apps automatically.

  4. Single sign-on hardening

    Linking a sign-in provider to an existing account now requires a verified email address on both sides, provider identifiers persist correctly, and email matching is case-insensitive. Existing sign-ins were unaffected.

  5. Device error logs

    A new Errors tab shows updates that failed to apply on real devices, with the release and the reason, and links straight through from the reporting page. Previously a failed rollout was only visible as an adoption curve that did not climb.

  6. Monthly active user tracking

    Usage is now measured by monthly active devices rather than raw install counts, which is the basis for the current pricing ladder and makes what you are billed for match what your app actually does.

  7. Auto-rollback notifications

    When a release is rolled back automatically because its error rate crossed your threshold, you now get an email and your webhooks fire, with the release and the measured rate. Rollback also handles a disabled target correctly instead of stalling.

  8. Notification preferences

    Choose which product emails you receive from Settings, per category, instead of all or nothing.

  9. Empty bundle uploads are rejected

    A build that produced an empty bundle could previously upload successfully and then fail on devices. The upload is now rejected at publish time, before it can reach anyone.

  10. Create access keys from the dashboard

    Access keys can be created and revoked in Settings without dropping to the CLI.

  11. Organizations

    Apps can be owned by an organization with per-member roles, rather than by an individual account. Invite teammates, assign roles, and keep ownership when people change.

  12. App transfers

    Move an app to another account by invitation, with a time-limited link the recipient accepts. Useful when an agency hands a project to a client.

Working on something specific? Tell us what you need, or see the documentation.