Chrome DevTools API Complete Reference

3 min read

chrome.devtools API Reference

The chrome.devtools API extends Chrome DevTools with custom panels, sidebars, and network tools.

Overview

Manifest Configuration

{ "devtools_page": "devtools.html" }
<script src="devtools.js"></script>

chrome.devtools.panels

panels.create(title, iconPath, pagePath, callback)

Creates a new panel in DevTools.

chrome.devtools.panels.create("My Panel", "icon.png", "panel.html", p => { });

panels.elements.createSidebarPane(title, callback)

Adds a sidebar pane to the Elements panel.

chrome.devtools.panels.elements.createSidebarPane("Info", s => s.setObject({ x: 1 }));

panels.themeName

Returns current theme: "default" or "dark".

ExtensionPanel Events

ExtensionSidebarPane Methods

chrome.devtools.inspectedWindow

inspectedWindow.tabId

ID of the inspected tab.

inspectedWindow.eval(expression, callback)

Evaluates JavaScript in the context of the inspected page.

chrome.devtools.inspectedWindow.eval("document.title", (r, e) => { if(!e) console.log(r); });

inspectedWindow.reload(options, callback)

Reloads page. Options: ignoreCache, userAgent, injectedScript.

inspectedWindow.getResources(callback)

Returns list of resources on the page.

chrome.devtools.network

network.getHAR(callback)

Returns HAR log containing all network requests.

network.onRequestFinished

Event fired when a network request completes.

chrome.devtools.network.onRequestFinished.addListener(r => {
  console.log(r.request.url, r.response.status);
  r.getContent((c, enc) => { /* body */ });
});

network.onNavigated

Event fired when page navigates to a new URL.

chrome.devtools.network.onNavigated.addListener(url => console.log(url));

Communication Patterns

Extension to Inspected Page

chrome.devtools.inspectedWindow.eval("window.customFunction()", fn);

Extension to Service Worker

// devtools.js
chrome.runtime.sendMessage({ action: "data", payload: "hello" });
// background.js
chrome.runtime.onMessage.addListener(m => console.log(m.payload));

Code Examples

Custom Debug Panel

chrome.devtools.panels.create("Debug", null, "panel.html", p => p.onShown.addListener(w => { }));

Elements Sidebar Extension

chrome.devtools.panels.elements.createSidebarPane("CSS", s =>
  chrome.devtools.panels.elements.onSelectionChanged.addListener(() => s.setExpression("$0.style.cssText"))
);

Network Request Logger

chrome.devtools.network.onRequestFinished.addListener(r => console.log(r.request.url, r.response.status));

Cross-References

How do I create a DevTools extension?

Add “devtools_page” in manifest.json and create an HTML page that loads your JavaScript to interact with DevTools.

What can I do with DevTools API?

You can create custom panels, add sidebar panes, access network request data, and instrument page execution.


Part of the Chrome Extension Guide by theluckystrike. Built at zovo.one.

No previous article
No next article