Firefox Profiler Deployment (September 2, 2025)

The latest version of the Firefox Profiler is now live! Check out the full changelog below to see what’s changed:

Highlights:

  • [Markus Stange] Convert the entire codebase to TypeScript (#5549)
    • :tada:Our project is now completely Flow-free! :tada:
  • [Florian Quèze] Change the ‘JavaScript’ radio button label to ‘Script’ (#5530)
  • [Florian Quèze] Show the vertical ruler in the timeline when hovering the network chart (#5548)
  • [Nazım Can Altınova] Upgrade ESLint to version 9 (#5567)
  • [Ryan Hunt] Embed iongraph-web and use for iongraph.json source files (#5577)

Other Changes:

  • [Nazım Can Altınova] Display the marker description at the top inside the marker tooltips (#5534)
  • [Markus Stange] Implement profile logic and some selectors for the function list (#5525)
  • [Markus Stange] Some small type fixes (#5538)
  • [Markus Stange] Simplify return type of the callback we pass to setState. (#5540)
  • [Markus Stange] Pass the correct value to the reducer’s action argument (#5543)
  • [Markus Stange] Change withSize to accept PropsWithoutSize as its type parameter (#5541)
  • [Nazım Can Altınova] Make sure that the test-debug command runs the tests properly (#5545)
  • [Markus Stange] Improve type coverage involving network phases (#5539)
  • [Markus Stange] Change implementation of withChartViewport (#5542)
  • [Florian Quèze] A new permalink should be generated and shown after using the re-upload feature. (#5547)
  • [Nazım Can Altınova] Update the yarn.lock file after recent changes (#5557)
  • [Markus Stange] Add proper TypeScript coverage for window-navigation.ts (#5559)
  • [Markus Stange] Remove leftover $FlowExpectError comments (#5560)
  • [Markus Stange] Fix Iterator / Iterable confusion (#5561)
  • [Nazım Can Altınova] Remove the unneeded test-all:ci script (#5566)
  • [Nazım Can Altınova] Fix a type case inconsistency (#5569)
  • [Florian Quèze] Make ‘yarn lint --fix’ work as an alias to ‘yarn lint-fix’. (#5563)
  • [Ryan Hunt] Don’t stringify JSON again in fetchUrlResponse (#5570)
  • [Markus Stange] Simplify Worker setup, and support .json.gz inputs in symbolicator-cli (#5556)
  • [Nazım Can Altınova] Add TypeScript coverage to the intersection observer mock (#5574)
  • [Markus Stange] Set the preview selection to null when there is no selection (#5568)
  • [Markus Stange] Add tests for query-api.ts (#5571)
  • [Markus Stange] Enable noUnusedParameters and @typescript-eslint/no-unused-vars and clean up a few more things (#5576)
  • [Markus Stange] Remove recursion in filterThreadToSearchString (#5572)

Big thanks to our amazing localizers for making this release possible:

  • be: Mikalai Udodau
  • de: Michael Köhler
  • el: Jim Spentzos
  • en-CA: chutten
  • en-GB: Paul
  • es-CL: ravmn
  • fr: Théo Chevalier
  • fur: Fabio Tomat
  • fy-NL: Fjoerfoks
  • ia: Melo46
  • it: Francesco Lodolo [:flod]
  • nl: Mark Heijl
  • pt-BR: Marcelo Ghelman
  • ru: Valery Ledovskoy
  • sv-SE: Luna Jernberg
  • tr: Rua
  • tr: Selim Şumlu
  • uk: Іhor Hordiichuk
  • zh-CN: Olvcpr423
  • zh-TW: Pin-guang Chen

Find out more about the Firefox Profiler on profiler.firefox.com! If you have any questions, join the discussion on our Matrix channel!