Early accessCode push for Flutter

Ship Flutter fixes without waiting for app review.

Release your app once through the store. After that, Retrojet delivers Dart changes as signed patches, straight to the devices that run that release, on the channel you choose.

Terminal demo: retrojet login signs in through the browser, retrojet init connects the Flutter app com.acme.demoapp, and retrojet patch android builds, signs, and uploads patch 3 for release 1.4.0+12, then publishes it to the staging channel.

Everything you need to patch a Flutter app that's already live

The CLI creates releases and patches from your project. The console is where your team checks them, promotes them, and rolls them back.

Over-the-air Dart patches

Change Dart code, run one command, and devices on that release download the patch and use it on the next launch.

Read more

Channels

Every app starts with stable. Add staging or beta to try a patch on a few devices before everyone gets it.

Read more

Promote, unchanged

Move a patch from staging to stable. Same content, and promoting doesn't count as a new publish on your plan.

Read more

Rollback per channel

Withdraw a patch from the channel where it hurts. Other channels keep what they have.

Read more

Signed and pinned

Every patch artifact is signed on upload and only applies to the release it was built for.

Browser sign-in

retrojet login uses PKCE. The access token never passes through the browser.

Teams and roles

Owner, Admin, and Member roles in every organization. One account can work in several.

Install reports

Devices report downloads, installs, and failures. Installs and devices are never limited.

Departures--:--
How an update reaches your users
CodeStepGateStatus
RLSRelease 1.4.0+12androidBoarded
PTCPatch 3stagingTesting
PRMPromotestableDeparted
RBKRollbackbetaStandby

RBK Something wrong? Roll a patch back on one channel without touching the others.

From a merged fix to your users, in four steps

Publish a release through the store as usual, and Retrojet keeps a copy of it. Every Dart change after that is a patch for that release, built and uploaded by the CLI.

  1. 01

    Release

    Build your app with the Retrojet CLI and upload it. This is the same build you submit to the store.

  2. 02

    Patch

    Change Dart code and publish a patch for that release to one channel, for example staging.

  3. 03

    Promote

    Looks good on staging? Promote the same patch to stable. Only who receives it changes.

  4. 04

    Rollback

    Something wrong? Roll the patch back on that channel. Other channels aren't touched.

Start free. Upgrade when your team grows.

Patch installs and devices are never limited on any plan. Draft patches and promotions don't count toward the monthly limit.

Free

For your first app

$0

  • 1 app
  • 10 patches published per month
  • Unlimited patch installs and devices
  • Channels, promote, and rollback
Start free
Most teams

Pro

For teams shipping several apps

Talk to us

  • Unlimited apps
  • Unlimited patches
  • Add members with Owner, Admin, and Member roles
  • Unlimited patch installs and devices
See plan details

Enterprise

For larger organizations

Talk to us

  • Everything in Pro
  • Unlimited apps and patches
  • Unlimited members
  • Unlimited patch installs and devices
See plan details

Early access, honestly

Retrojet is in early access. This is the real state of each piece, so you can plan around it.

Read the docs →
  • Console

    Organizations, members, apps, channels, usage, promote, and rollback.

    Ready
  • retrojet login, whoami, logout

    Browser sign-in, token saved on your machine.

    Ready
  • retrojet init

    Connects a Flutter project to an app.

    Ready
  • retrojet release, retrojet patch

    Being built in the CLI now.

    In progress
  • Install script, CI tokens

    Manual install works today.

    Planned

Your next hotfix doesn't need a store review

Sign in, connect your Flutter project, and you're ready for the next patch.

❯ retrojet login
❯ retrojet init # run next to pubspec.yaml