Flutter channels

This article is about Flutter channels and which one to use. You might have read this term e. g. when your command shell tried to complete your flutter command.
Using it can actually be useful when you want to test new features before they are available for everyone.

What is a Flutter channel

First of all, what is a Flutter channel anyways? To be more specific, the term Flutter channel refers to Flutter build release channel. In different channels you will find different release builds that differ in their topicality and thus also in their stability. So Flutter channels provide the possibility for a Flutter developer to choose a version that is nearer to the latest master build of the project.

What different channels are there?

Flutter channel overview
Flutter channel overview ordered by build age descending

Basically, there are four channels available: stable, beta, dev and master. If you have not configured anything else you’re most likely on stable channel.

The stable channel has new builds roughly once a quarter. The origin of this release is a branch of the beta channel that has received cherrypick requests for ciritical issues. This is the only channel that is recommended for production use although the only difference compared to the beta channel is that there has been a stabilization period. Apart from that, no further automatic tests were performed.

Being branched from master at the beginning of every month, the beta channel contains builds that are at most a month and on average two weeks old. This channel has the same build for about a month in which cherrypick requests for fixes are accepted. Generally speaking, the builds in this channel are more stable by the end of the month. After about a quarter the build is going into the stable channel. The changes since the last beta release can be found here.

The dev channel contains the latest master build which has run full tests. There is a continuous transformation from master to dev which makes the builds of this channel at most a week old but mostly about a day. The tests that run before the build are pre-commit tests which creates a relatively high likeliness that there are no serious issues. Everyone can report a bad build that contains issues. These issues will appear in this list until they are fixed.

The channel master has the most recent build. No tests were run before build so there might be broken functionality when using this channel.

The image shows a summary of the different channels. They are listed in descended order regarding its age. The second icon symbolized whether there have been tests before the build and the seal represents if the channel’s builds are ready for usage in production.

Which Flutter channel should I use?

It really depends on your use case. If you are developing an app that is supposed to be released in a production environment, only use the stable channel.

If you want to try out features that are already in beta status, you can try the beta channel. Keep in mind that there can still be issues with the builds in that channel because of the ongoing stabilization period. However, compared to the stable channel, there is no extra testing so you are probably fine and encounter no issues.

If you feel like two weeks to a month is too old, you might want to use the dev channel. Automatic testing has been successful on the builds in this channel, but there can still be issues as the age of the build varies from a day to a week.

Master channel is really only meant for development purposes and not recommended to form the basis of your app.

How do I change the channel?

Switching the channel is as simple as executing a single command. The name of that command is very obvious: flutter channel. The only argument that is expected (but optional) is the name of the channel: stable, beta, dev or master. If you do not provide any argument, you will get a list of all available channels.
So if you want to change from the stable to the beta channel, just type:

flutter channel beta

What if I encounter an issue myself?

The first thing you should do after having verified that the noticed problem nothing to do with your current system configuration is filing the issue to make the Flutter team aware of it. If the mentioned error is a serious issue it might enter the Cherrypick Process which can eventually lead to a hotfix.

Wrap up

Flutter channels are a good way to test upcoming features prematurely. You can be part of the development process by reporting issues you encounter when testing new features before they are in the stable channel. If you want further information on the release process, have a look at the official documentation.

If you like what you’ve read, feel free to support me:

🥗Buy me a salad

Leave a Comment