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.
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.
Channels
Every app starts with stable. Add staging or beta to try a patch on a few devices before everyone gets it.
Promote, unchanged
Move a patch from staging to stable. Same content, and promoting doesn't count as a new publish on your plan.
Rollback per channel
Withdraw a patch from the channel where it hurts. Other channels keep what they have.
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.
| Code | Step | Gate | Status |
|---|---|---|---|
| RLS | Release 1.4.0+12 | android | Boarded |
| PTC | Patch 3 | staging | Testing |
| PRM | Promote | stable | Departed |
| RBK | Rollback | beta | Standby |
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.
- 01
Release
Build your app with the Retrojet CLI and upload it. This is the same build you submit to the store.
- 02
Patch
Change Dart code and publish a patch for that release to one channel, for example staging.
- 03
Promote
Looks good on staging? Promote the same patch to stable. Only who receives it changes.
- 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
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
Enterprise
For larger organizations
Talk to us
- Everything in Pro
- Unlimited apps and patches
- Unlimited members
- Unlimited patch installs and devices
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 →- Ready
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.
- In progress
retrojet release, retrojet patch
Being built in the CLI now.
- Planned
Install script, CI tokens
Manual install works today.

Your next hotfix doesn't need a store review
Sign in, connect your Flutter project, and you're ready for the next patch.