Electron + React + TypeScript starter focused on secure IPC defaults and runtime resilience.
- React 19 renderer (Vite 7 + TypeScript 5)
- Shared IPC contracts in
src/shared/ipc/*with Zod request/response schemas - Validated IPC handlers in main (
validatedHandle) with standardized error envelopes - Trusted IPC sender checks + navigation guard (
window.opendenied, external navigation blocked unless explicitly allowed) - Preload bridge with fatal error reporting channel
- Main-process fatal error policy + renderer crash recovery hooks
- Tailwind CSS v4 +
tailwind-variants - Unit tests (Vitest) and Electron e2e test (Playwright)
- CI quality gate (
pnpm gate:ci)
- Node.js
>=22 - pnpm
>=9
pnpm installpnpm devpnpm gate # lint + typecheck + unit tests
pnpm test:e2e # build + Electron Playwright scenariopnpm build
pnpm start
pnpm package:macCRASH_REPORTER_UPLOAD=1to enable crash report uploadCRASH_REPORTER_SUBMIT_URL=https://your-endpoint.example.comto define the upload endpoint
src/main # Electron main process (bootstrap, IPC, security, lifecycle)
src/preload # contextBridge API and preload fatal reporting
src/renderer # React UI
src/shared # IPC channels, contracts, schemas, shared types
tests/unit # Vitest unit tests
tests/e2e # Playwright Electron scenario
docs # release/review checklists and migration notes
sandboxis currently disabled inBrowserWindowconfig.- Crash reporter starts at boot, but upload is disabled by default.
- CI currently runs lint + typecheck + unit tests + build (no code-signing).