Announcing changes to the “Profile all requests” feature on Chrome

By Thomas di Luccio, on Sep 05, 2024

We take pride in siding with developers and commit to empowering our users with the most seamless experience possible. Observability is the most powerful when smoothly blended with the development and deployment workflows.

To achieve this integration goal, Blackfire provides tools to ease our users’ day-to-day. Browser extensions for Firefox and Chrome notably simplify how profiles can be triggered. While many other options are available using CLI commands, the big red button provided by the extension offers an unbeatable and straightforward solution.

Yet, occasionally, you would like to profile some of the XMLHttpRequest (XHR) calls made by a specific page rather than the page itself. The bottleneck you are looking for might not be in the code of some endpoint but possibly in the web services it relies on.

Again, in this situation, the browser extension provides valuable help with the “Profile all requests” call to action. This feature does exactly what we are looking for by not profiling the page itself but instead intercepting all XHR calls to add a specific X-Blackfire-Query header that will have them being profiled once handled.

What Changed?

Unfortunately, Chrome Manifest v3, their most recent one, explicitly prohibits this behavior. It imposes certain restrictions that prevent extensions from modifying outgoing requests in the way that “Profile all requests” requires.

Manifest v3 introduces a more restrictive environment for extensions to improve performance, security, and privacy. However, it also removed certain capabilities, such as universally modifying the headers of outgoing requests, which is a core function of our profiling mechanism.

Consequently, we are sadly forced to retire our Chrome extension’s “Profile all requests” option while we continue exploring options to restore this behavior. The Chrome browser extension’s other features remain available.

Impact on Blackfire Chrome users

If you are a Chrome user, you can no longer use the “Profile all requests” feature within the Blackfire Chrome extension. We understand how valuable and convenient this feature has been for many of you.

We’re actively exploring alternative solutions to restore this capability, but it will take some time to find an approach that aligns with the constraints of Manifest v3.

What About Firefox Users?

Good news! Our Firefox extension’s “Profile all requests” feature remains fully functional. Using Blackfire on that browser will allow you to enjoy uninterrupted profiling of all XHR requests.

For users who rely on this feature for their workflow, we recommend switching to Firefox for now, where you can continue to benefit from this capability.

What’s next?

We are working hard to find a viable alternative that works within Chrome’s new framework. Our team is exploring options, including developing new mechanisms or approaches that comply with Chrome Manifest v3 while maintaining the continuous observability you’ve come to rely on.

In the meantime, we want to thank all our users for their understanding and patience. We know this change may disrupt some workflows, but rest assured, we’re doing everything possible to bring back a solution that works for Chrome users.

How Can You Help?

If you haven’t already, try Blackfire on Firefox to continue accessing the “Profile all requests” feature. For those who prefer to stay on Chrome, we’d love to hear your feedback on how this change impacts your workflow. Your input is invaluable as we work towards a resolution.

To better observability and beyond

Thomas di Luccio

Thomas is a Developer Relations Engineer at Platform.sh for Blackfire.io. He likes nothing more than understanding the users' needs and helping them find practical and empowering solutions. He’ll support you as a day-to-day user.