Skip to main content
Brave Programmer Logo

BraveProgrammer

BraveProgrammer

HomeProjectsBlogsCoursesLessonsAbout

Site footer

BraveProgrammer

Free coding courses, practical tutorials, and real projects from BraveProgrammer. Learn web development with React, Next.js, and TypeScript.

Navigation

  • Home
  • Projects
  • Blogs
  • Courses

Resources

  • About
  • Lessons

© 2026 BraveProgrammer. All rights reserved.

  1. Courses
  2. /
  3. Electron.js Desktop App Development

Lesson 28 of 28 · javascript

Inter‑process Communication (IPC)

Duration: 12 mins

Inter‑process Communication (IPC)

Electron ships two IPC modules:

  • ipcMain – used in the main process.
  • ipcRenderer – used in a renderer (via the preload bridge).

Basic request/response pattern

preload/bridge.js

const { contextBridge, ipcRenderer } = require('electron');
contextBridge.exposeInMainWorld('api', {
  getAppVersion: () => ipcRenderer.invoke('app:getVersion')
});

main.js

const { ipcMain, app } = require('electron');
ipcMain.handle('app:getVersion', () => app.getVersion());

renderer.js (runs in the page)

document.getElementById('ver').innerText = window.api.getAppVersion();

Sending a fire‑and‑forget message

// renderer
window.api.send('log', 'User clicked button');
// main
ipcMain.on('log', (e, msg) => console.log('[Renderer]', msg));

Use invoke/handle for request‑response (Promise‑based) and send/on for one‑way messages.

Previous: Menus, Application Menu & Tray IconsBack to Electron.js Desktop App Development