Load json manually in chrome://tracing

The Trace-viewer tool currently loads the JSON file in 3 ways:

  • When recording a new trace
  • When loading the file via the load button after the file has been picked
  • When dropping the file into the tab (drag & drop)

All of these do a one-time update to the active trace.


Technical details

Look at the profiling_view and notice

 tr.ui.b.readFile(file).then(
 ...
    this.setActiveTrace(file.name, data);

and a few variations on calls to setActiveTrace from beginRecording , onLoadClicked_ and dropHandler_ .


Solution suggestions

Yes, there are a few ways in which you can pass the json data to chrome://tracing (i.e. trace viewer) without manually clicking load data .

Depending on how much effort you want to put into it:

  1. Don't manually click load but drag and drop the file
  2. Automate the drag & drop (example with selenium) based on a script which watches for file changes to the JSON
  3. Automate the load based on file changes
  4. Contribute to Trace Viewer yourself and add this feature. See the tracing ecosystem explainer and contributing. Note it is now part of the Catapult project in GitHub.

See fswatch - a cross-platform file change monitor.


Here is a solution, if you can relax the requirement that you have to open it with Chrome-Tracing. Speedscope is a nice replacement and can be easily started from the command line.

For offline use, or convenience in the terminal, you can also install speedscope via npm:

npm install -g speedscope

Invoking speedscope /path/to/profile will load speedscope in your default browser. Source

speedscope <my-chrome-tracing.json> opens the file.

enter image description here

Speedscopes offers different views but not sometimes not the same view as Chrome-Tracing. So it might not be the right choice for all use cases.