Skip to content

Releases: Sovea/electron-ipc-service

Release list

v0.1.0

Choose a tag to compare

@Sovea Sovea released this 23 Jul 19:07
a620e9d

Highlights

@sovea/electron-ipc-service v0.1.0 is the first stable release of a type-safe request-response IPC layer for Electron applications.

It provides typed communication between renderer and main processes, with optional routing between renderer processes through the main process.

Features

Typed main and renderer communication

Define IPC channels as TypeScript function schemas and infer:

  • channel names
  • request parameters
  • synchronous and asynchronous return values
  • handler and listener signatures

Use send() for one-way messages and invoke() for request-response calls. The main process can register handlers with on(), once(), handle(), and handleOnce().

Renderer-to-renderer routing

Route messages and requests between renderer processes with:

  • sendTo() for one-way messages
  • invokeTo() for request-response calls
  • handle() and handleOnce() for renderer request handlers
  • receive() and receiveOnce() for renderer messages

Targets can be selected through application-defined windowParams or a direct Electron webContentsId.

When windowParams are used, TypeScript infers the target renderer schema, including its accepted payload and return type.

Predictable request lifecycle

  • configurable request timeouts
  • propagated handler errors
  • correct association of concurrent and out-of-order responses
  • unsubscribe functions for handlers and listeners
  • one-time handlers and listeners
  • cleanup of internal routing handlers through IpcMainService.destroy()
  • rejection of pending work when a service is destroyed

Invalid or unavailable renderer targets are rejected for requests and safely dropped with a warning for one-way messages.

Changelog

  • Added type-safe one-way and request-response IPC between renderer and main processes.
  • Added typed renderer-to-renderer routing through sendTo() and invokeTo().
  • Added target-aware schema inference, configurable timeouts, and unsubscribe-based lifecycle management.
  • Improved concurrent request handling, error propagation, service destruction, and renderer target validation.
  • Fixed renderer payload delivery, handler cleanup, and main-process event types.
  • Finalized the native ESM public API with dedicated main and /renderer entrypoints.
  • Set the minimum supported Electron version to 28.0.0.