Skip to main content
Extensions run inside the Electron renderer process. You can build rich user interfaces, listen to application events, inject custom page routes, and coordinate operations with the main process.

Environment details

The LynxHub frontend uses the following stack:
  • UI library: React
  • Styling: Tailwind CSS v4
  • Component library: HeroUI v3 (@heroui/react)

Entrypoint configuration

Your extension frontend must build into scripts/renderer/rendererEntry.mjs. The host application loads this bundle dynamically during its boot sequence. Your entrypoint file must export an InitialExtensions function. The host executes this function synchronously before mounting the React application tree:

Initialization parameters

The initialization function receives three arguments:
  1. lynxAPI: The main interface to inject components, manage routes, and customize default views.
  2. rendererIpc: A type-safe IPC wrapper to communicate with the extension’s backend process.
  3. extensionId: A unique, stable identifier assigned to your extension.

Central state management

If your extension requires shared global state, you can register Redux slice reducers. Call the addReducer method during initialization:
Components loaded in the application can consume this state using standard useSelector and useDispatch hooks.

Global React hooks

You can run global React logic by registering custom hook components. Call the addCustomHook method:
The host application mounts registered custom hooks at the root of the React tree. This makes them ideal for background listeners, telemetry, or window-level hotkey managers.

Production error tracking

You can initialize Sentry to capture frontend exceptions. Call initBrowserSentry with your DSN:
Last modified on June 21, 2026