Concepts
Organizations, apps, releases, patches, and channels, and how they fit together.
Organization
└── App one per package ID, e.g. com.acme.demoapp
├── Channels stable (always there), staging, beta, …
└── Releases 1.4.0+12, 1.5.0+13, …
└── Patches 1, 2, 3, … each published to one or more channels
Organization
Everything in Retrojet belongs to an organization. Signing up creates one for you, and you are its Owner. Other organizations can add you as a member, so one account can work in several.
| Role | Can do |
|---|---|
| Owner | Everything an Admin can, plus making someone an Owner or removing that role. |
| Admin | Rename the organization, add and remove members, change roles, create and delete apps and channels, delete releases. |
| Member | See everything, create releases and patches with the CLI, promote and roll back patches. |
An organization always keeps at least one Owner. You can only add people who already have a Retrojet account, and adding members needs a paid plan (see Plans and limits).
App
An app is one Flutter project, identified by its package ID (applicationId on Android, bundle ID on Apple
platforms). The package ID is unique inside an organization.
Each app has an app ID, a UUID. retrojet init writes it to retrojet.yaml in your project, and your app uses
it to ask for patches.
Channel
A channel is a group of devices that receives patches together. Every app starts with stable, which you
cannot delete. Add others, such as staging or beta, from the console to test a patch on a few devices before
everyone gets it.
A channel that a patch has been published to cannot be deleted either.
Release
A release is a build of your app that you ship through the store, for example version 1.4.0+12. The CLI uploads it
to Retrojet so later patches can be built against it. A release records the Flutter version it was built with and
one entry per platform (android, ios, …).
While the CLI is still uploading, a platform shows as draft. Once the upload is complete it becomes active.
Deleting a release also deletes all of its patches, and cannot be undone. Only Owners and Admins can do it, and only from the console. To stop one bad patch, roll it back instead.
Patch
A patch is a change to the Dart code of one release. Patches are numbered per release: 1, 2, 3, …
| Status | Meaning |
|---|---|
| draft | Created by the CLI, upload not finished. Devices never see it. |
| published | Live on at least one channel. |
Every patch artifact is signed when it is uploaded. A patch only applies to the release it was built for: a device on
1.4.0+12 never receives a patch for 1.5.0+13.
Promote
Publishing sends a patch to its first channel. Promote adds the same patch to another channel, for example from
staging to stable. The content stays exactly the same, and promoting does not count as a new publish on your plan.
Rollback
Rollback withdraws a published patch from one channel, so devices on that channel no longer receive it. Other channels are not affected. Rollback is available in the console, so anyone on the team can react from a browser.
Devices and installs
Your app on a user’s device checks for a patch for its release and channel, downloads it, and reports the result: download, install, install failure, or update failure. These reports feed the install and device counts on the Usage page.