With the April 30 release of Edge version 17, Microsoft has announced the availability of the Microsoft Edge DevTools Protocol, a set of JSON and JSON-RPC APIs that enable clients to interact with Microsoft Edge tabs. Following the model of the Chrome DevTools Protocol, the Edge DevTools Protocol enables independent developers to build tools that interact with Edge using standard web technologies. In the announcement post, Microsoft senior product manager Brendyn Alexander said:
By decoupling the client from the platform, we’ve started the work to achieve our second goal of enabling an ecosystem of devtools which support Microsoft Edge. HTTP and WebSocket are ubiquitous technologies in native and web development environments. This means clients written in many programming languages can integrate. We hope this vastly reduces the barriers to entry for those who want to build devtools for Microsoft Edge.
Microsoft announced two initial clients for the protocol, Microsoft Edge Devtools Preview and Visual Studio 2017. The protocol is modeled after the Chrome DevTools Protocol and the evolving WICG DevTools Standard. According to the documentation on current clients:
This preliminary Version 0.1 release of the DevTools Protocol provides core debugging functionality, such as setting breakpoints, stepping through code, and exploring stack traces. In the Edge DevTools UI, this translates to functionality available in the Debugger panel, minus cache inspection (for Web storage, Service worker, Cache API, and IndexedDB).
The functionality is organized by ‘domain’, with this initial version primarily supporting the ‘Debugger’ domain, along with some minimal support for ‘Page’ and ‘Runtime’ domains, as well as the meta ‘Schema’ domain that allows tools to query for the supported domain list.
If Microsoft continues to model on the Chrome DevTools Protocol, we can expect future versions to dramatically expand the number of available domains. The documentation for CDP highlights 39 different domains, stretching from Accessibility to Service workers, enabling tools to access a tremendous range of browser functionality.
The other major browsers are in different stages of implementing the devtools protocol. Documentation on the latest stable version in Chrome includes 16 domains, while the protocol directory in the webkit github repository (aka Safari) shows 24 different domains of the protocol in some state of development. Firefox appears to be the furthest behind of major browsers, with a tracking bug that has stagnated and no documentation.
Outside of the browser, Node.js also supports a subset of the CDP, with documentation showing six supported domains. This allows developers to debug Node programs directly with Chrome tools. For information on getting started with this type of Node debugging, developers can check out this blog post by Chrome DevTools developer Paul Irish.
Developers interested in diving deeper into the Microsoft Edge DevTools Protocol and Microsoft’s growing developer ecosystem can try out the Microsoft Edge DevTools Preview application, or dive straight into the protocol documentation.