From MozillaWiki
< Gaia‎ | System‎ | Updates
Jump to: navigation, search

App Updates: Background

App Types

There are three types of installed apps, each with their own update policies.

  • Core apps
    • Are packaged, certified, pre-installed, non-removable.
    • Are only updated within Full System or atomic Gecko+Gaia updates.
  • Pre-installed third-party apps
    • Are updated subject to same update policies as User-installed apps (see below)
  • User-installed apps
    • Are packaged or hosted.
    • Update policies are described in rest of this page.


For initial FxOS versions, should assume the following about users:

  • Data is slow, expensive, and intentionally constrained.
  • Very limited access to WiFi
  • Rarely in Roaming mode
  • Turn data connections off by default, and only activate for brief transactions.
  • Use multiple SIM cards.
  • Users think Installed vs Un-installed. Not Free vs Paid. (per Jonas)
  • Packaged apps can specify version notes within their mini-manifests

Technical parameters

  • Can poll Marketplace for update.
  • Will evaluate pushing updates to users in future versions.
  • Marketplace will know current version off app.
  • Updates can download and install while current version is open.
  • There is relatively low risk of new app versions breaking old.
  • There is a higher risk of Gecko changes breaking apps.
  • Content servers will know version of the installed app that they are sending content to.
  • Good apps will provide backwards compatibility
  • App revocation will be handled by the store. It will sign a special update with a "revoked" app type (vs. "certified" or "privileged").
  • Manifest enables devs to specify specific features required by apps.

Hosted apps

  • We cannot separate "Poll for update", from "Start update".
  • We can specify when poll happens, however. For v1 we can Add additional checks. But we cannot remove the "Poll on Open" behavior).
  • Have no way of knowing file size (contents are remotely hosted).
  • Current version can be used while new version downloads in background.


  • Web devs are used to users always being on latest version. Simplifies development.
  • Security also benefits when as many users as possible are up-to-date.


  • How are 3rd party apps tested with different versions of b2g releases?
  • What needs to be exposed regarding privacy? e.g. What data are sent for updates?
  • What happens when the manifest version changes? Does this trigger any sort of notification for the user?

User Experience

Design principles

  • Low-friction. Minimize user interruptions, connection speed impacts, etc.
  • Free. Avoid user charges.
  • Safe. Minimize changes and consequences of failed updates.
  • Patient. Support backwards compatibility for users who cannot update.
  • Friendly. Avoid presenting users with excess technical details.

Design Specs

For the latest UX specifications, please visit

Update Types

  • Manual: Individual
  • Manual: Batch
  • Silent