| # Perfetto UI Release Process | 
 |  | 
 | The UI has three release channels which are configured by the | 
 | [channels.json](/ui/release/channels.json) file. The channels are: | 
 |  | 
 | - `stable`, the version served by default on ui.perfetto.dev. | 
 |   Updated every four weeks. | 
 | - `canary`, a less stable but fresher release. Updated every 1-2 weeks. | 
 | - `autopush`, the current HEAD version of the UI. Unstable. | 
 |  | 
 | The release process is based around a four week cycle. | 
 |  | 
 | - Week 1: Update `canary` to `HEAD`. | 
 | - Week 2: Update `canary` to `HEAD`. | 
 |   Canary stabilization week 1/2 starts here. | 
 |   Only critical bug fixes can be cherry-picked onto `canary`. | 
 | - Week 3: Canary stabilization week 2/2. | 
 | - Week 4: Update `stable` to current `canary`, update `canary` to `HEAD`. | 
 |  | 
 | After the fourth week the cycle repeats from week one. | 
 | This is so that: | 
 |  | 
 | - Canary soaks for two weeks before being promoted to stable. | 
 | - Newer features can be tried out in Canary within a week, or two at most (if | 
 |   in the stabilization weeks). | 
 | - Stable users aren't disrupted more than once per month. | 
 |  | 
 | ## Changing release channel | 
 |  | 
 | NOTE: The channel setting is persistent across page reloads. | 
 |  | 
 | The channel the UI is currently using is displayed in the top left corner. | 
 | If the tag after the logo shows `autopush` or `canary` that is the current channel | 
 | and if no tag is displayed the current channel is `stable`. | 
 |  | 
 |  | 
 |  | 
 | To change the channel the UI is using between `stable` and `canary` you can use the toggle on the [entrance page](https://ui.perfetto.dev). | 
 |  | 
 |  | 
 |  | 
 | To change to the `autopush` channel, open the `Flags` screen in the `Support` | 
 | section of the sidebar, and choose `Autopush` in `Release channel`. | 
 |  | 
 |  | 
 |  | 
 | ## Which version am I using? | 
 |  | 
 | You can see the version of the UI you are currently using in the bottom left hand corner of the UI. | 
 |  | 
 |  | 
 |  | 
 | Clicking on the version number takes you to Github where you can see which commits are part of this version. The version number format is `v<maj>.<min>.<Commit SHA1 prefix>` where `<maj>.<min>` are extracted from the top entry in the | 
 | [CHANGELOG](/CHANGELOG). | 
 |  | 
 | ## Cherry-picking a change | 
 |  | 
 | If a change needs to be backported onto canary or stable branches, do the | 
 | following: | 
 |  | 
 | ```bash | 
 | git fetch origin | 
 | git co -b ui-canary -t origin/ui-canary | 
 | git cherry-pick -x $SHA1_OF_ORIGINAL_CL | 
 | git cl upload | 
 |  | 
 | # Repeat for origin/ui-stable branch if needed. | 
 | ``` | 
 |  | 
 | Once the cherry-picks are landed, send out a CL to update the | 
 | [channels.json](/ui/release/channels.json) in the `main` branch. See | 
 | [r.android.com/1726101](https://r.android.com/1726101) for an example. | 
 |  | 
 | ```json | 
 | { | 
 |   "channels": [ | 
 |     { | 
 |       "name": "stable", | 
 |       "rev": "6dd6756ffbdff4f845c4db28e1fd5aed9ba77b56" | 
 |       //     ^ This should point to the HEAD of origin/ui-stable. | 
 |     }, | 
 |     { | 
 |       "name": "canary", | 
 |       "rev": "3e21f613f20779c04b0bcc937f2605b9b05556ad" | 
 |       //     ^ This should point to the HEAD of origin/ui-canary. | 
 |     }, | 
 |     { | 
 |       "name": "autopush", | 
 |       "rev": "HEAD" | 
 |       //     ^ Don't touch this one. | 
 |     } | 
 |   ] | 
 | } | 
 | ``` | 
 |  | 
 | The state of `channels.json` in the other branches is irrelevant, the release | 
 | infrastructure only looks at the `main` branch to determine the pinning of | 
 | each channel. | 
 |  | 
 | After the `channels.json` CL lands, the build infrastructure will pick it up | 
 | and update ui.perfetto.dev within ~30 mins. | 
 |  | 
 | Googlers: You can check build progress and logs on | 
 | [go/perfetto-ui-build-status](http://go/perfetto-ui-build-status). See also | 
 | [go/perfetto-ui-autopush](http://go/perfetto-ui-autopush) and | 
 | [go/perfetto-ui-channels](http://go/perfetto-ui-channels) for the design docs of | 
 | the serving infrastructure. | 
 |  | 
 | ## Publishing the Perfetto Chrome extension | 
 | Googlers: see go/perfetto-release-chrome-extension |