Note
This project is under development and subject to change.
- Clone the repository to your local machine
- Run
npm install
to install dependencies - Run
npm link
to link the package globally - Run
npm run build
to build the project
- In your Electron app run
npm link @electron/devtron
to link the Devtron package - In your Electron app's
main.js
(or other relevant file) add the following code to load Devtron:
// main.js
const { devtron } = require('@electron/devtron');
// or import { devtron } from '@electron/devtron'
devtron.install(); // call this function at the top of your file
- Devtron can be conditionally installed in development mode to avoid impacting production builds. Here's an example:
const { app } = require('electron');
const isDev = !app.isPackaged;
async function installDevtron() {
const { devtron } = await import('@electron/devtron');
await devtron.install();
}
if (isDev) {
installDevtron().catch((error) => {
console.error('Failed to install Devtron:', error);
});
}
Installs Devtron into the Electron app. Refer to Configuring an Electron App to use Devtron for installation instructions.
Returns a promise that resolves to the array of IPC events recorded by the Devtron service worker since installation.
-
If the
Clear all events
button in the Devtron UI is clicked, this array will be cleared. -
If the array size exceeds 20,000 events, it will be truncated to the most recent 20,000 events.
-
If called before installation or before the Devtron service worker is ready, an empty array will be returned.
Here's a usage example that keeps logging IPC events every 2 seconds:
// main.js
import { devtron } from '@electron/devtron';
// Ensure Devtron is installed before calling getEvents()
devtron.install();
setInterval(async () => {
const ipcEvents = await devtron.getEvents();
console.log('IPC Events:', ipcEvents);
}, 2000);
- Electron version must be 36.0.0 or higher.
- For Devtron to work with newly created sessions, you must call
devtron.install()
before they are created. - Some IPC events sent immediately after the Electron app starts may not be captured by Devtron, even if
devtron.install()
is called early, because Devtron may take a short time to initialize after starting the app. ipcRenderer.once
will be tracked as two separate events:ipcRenderer.on
andipcRenderer.removeListener
.
If Devtron is installed correctly, it should appear as a tab in the Developer Tools of your Electron app.
