flitz publishes
List your organization's publish history, newest first, and delete a publish; --app, --track, --limit, --all, and --json.
flitz publishes lists your organization's publishes, and
flitz publishes delete deletes one. Every publish belongs to an app and one of
its tracks — see Apps and tracks. The Publishes page
of the portal shows the same history.
flitz publishes3c1f9e2a-7d41-4b8e-9c33-1a2b3c4d5e6f 2026-09-28 14:02 complete acme_app feature/login 1.4.0+12 (sprint 42) Onboarding redesign https://…
8a7b6c5d-1e2f-4a3b-8c9d-0e1f2a3b4c5d 2026-09-27 17:45 complete acme_app main 1.4.0+11 https://…
0f1e2d3c-4b5a-4968-8776-655443322110 2026-09-27 09:10 pending acme_app main 1.4.0+11 https://…Each line is one publish: its id, when it started (in your local time), its
state, the app key, the track, the pubspec.yaml version with the
--version-name label in parentheses, the --name title, and the
landing-page link. See flitz publish → Publish history
for how a publish gets these fields. With no publishes it prints
No publishes yet. on stderr and exits 0. When more publishes exist than it
listed, it says so on stderr:
More publishes exist; pass --limit (up to 200) to list more.
Flags
publishes accepts the global options, including
--json, plus these:
| Flag | Default | Purpose |
|---|---|---|
--app <key> | — | Only this app's publishes. |
--track <track> | — | Only this track's publishes. Takes a track key or a branch name: --track feature/login lists the track feature-login. Without --app it uses the current project's app key (app: in flitz.yaml, else the pubspec name). |
--limit <n> | 20 | How many to list, from 1 to 200. Anything else fails with --limit must be an integer between 1 and 200; got '<n>' (exit 1). |
--all | — | Include publishes that never landed (abandoned). |
States
| State | Meaning |
|---|---|
complete | The bundle finished uploading, and publish marked the publish complete. Its links work. |
pending | Not marked complete yet: the publish is in flight, or it failed or was interrupted before publish marked it complete. |
abandoned | Still pending an hour after it started. The bundle never landed. |
By default the list shows complete and pending publishes; --all adds
abandoned ones. Deleted publishes, and the publishes of a deleted app, never
appear.
--json
flitz publishes --json > history.jsonThe document is { "publishes": [ … ] }, newest first. Each entry carries
id (the same id that publish --json
prints), app and track (each { "key", "name" }), trackUrl, appName,
appVersion, name, versionName, and comment when set, state,
createdAt, completedAt once complete, bundleUrl, pageUrl, and actor,
whose machine field is true for a publish made with the organization API
key. comment appears only here, not in the table.
jq -r '.publishes[] | select(.state == "complete") | .pageUrl' history.jsonThe document does not say whether more publishes exist; raise --limit, or
browse the full history in the portal.
Delete a publish
flitz publishes delete <id>Delete publish <id>? Its links stop working, and it cannot be restored. [y/N]Takes one id from flitz publishes. On yes it prints Deleted publish <id>.:
the publish leaves the history, its landing page and bundle links stop
working, and if it was its track's newest build, the track link opens the
previous complete one. Nothing restores it. Declining exits 1 with
publish <id> was left in place. In a script, pass --yes; without a
terminal and without --yes the command fails (exit 1). An unknown id fails
with publish <id> does not exist (exit 1).
--yes skips the confirmation
--yes, and assume_yes: true in config.yaml,
answer the delete prompt too. A deleted publish cannot be restored.
Who can run them
| Command | Who |
|---|---|
publishes | Any member of the organization, and a CI job with FLITZ_APIKEY. |
publishes delete | Any member, signed in with flitz login. Under FLITZ_APIKEY it refuses before any request, with publish deletion requires an interactive session (exit 3). |
Both need an active organization license; while it is inactive they fail with exit 3. Links already shared keep working regardless.