Recognizing that stepping, which is a big part of debugging, can be tricky in that you can easily lose your way and overstep when moving in and out of functions, and between libraries and your own code, Firefox 77 introduces a welcome change, that should make stepping through code execution more intuitive and make it less likely to miss an important line.
“The debugger will now respect the currently selected stack when stepping. This is useful when you’ve stepped into a function call or paused in a library method further down in the stack. Just select the right function in the Call Stack to jump to its currently paused line and continue stepping from there.”
Watchpoints, which were introduced in Firefox 72 to make it easier to understand state changes, have been made easier to use in Firefox 77 with a new option that combines get/set, so any script reference will trigger a pause.
The new release also extends optional permissions for extensions. As the blog post explains this addresses a problem that was introduced with Firefox Quantum:
Since Firefox 57, users see the permissions an extension wants to access during installation or when any new permissions are added during an update. The frequency of these prompts can be overwhelming, and failure to accept a new permission request during an extension’s update can leave users stranded on an old version. We’re making it easier for extension developers to avoid triggering as many prompts by making more permissions available as optional permissions. Optional permissions don’t trigger a permission request upon installation or when they are added to an extension update, and can also be requested at runtime so users see what permissions are being requested in context.
There are two web platform features introduced in Firefox 77. The first
String.replaceAll can be regarded as the counterpart to
String.matchAll which was introduced in Firefox 67 as a more convenient way to iterate over regex result matches. The other, IndexedDB cursor requests makes it easier to write things like wrapper functions that “upgrade” database features.