Perfetto UI Release Process

The UI has three release channels which are configured by the channels.json file. The channels are:

The release process is based around a four week cycle.

After the fourth week the cycle repeats from week one. This is so that:

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 canery you can use the toggle on the entrance page.


To change to the autopush channel open devtools and enter localStorage.setItem('perfettoUiChannel', 'autopush'); then reload.

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>.<Commits since that version> where <maj>.<min> are extracted from the top entry in the CHANGELOG.

Cherry-picking a change

If a change needs to be backported onto canary or stable branches, do the following:

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 in the master branch. See for an example.

{ "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 master branch to determine the pinning of each channel.

After the channels.json CL lands, the build infrastructure will pick it up and update within ~30 mins.

Googlers: You can check build progress and logs on go/perfetto-ui-build-status. See also go/perfetto-ui-autopush and go/perfetto-ui-channels for the design docs of the serving infrastructure.