Skip to content

Frontend install on Node 24/26 can leave Electron half-installed and break npm run dev #412

Description

@anirudh5harma

Bug

Installing the Electron frontend on Node 24/26 can leave node_modules/electron
half-installed, which then makes npm run dev fail with:

Error: Electron failed to install correctly, please delete node_modules/electron and try installing again

Analyzed against: 7c7c985 | Confidence: High

Reproduction

cd frontend
node -v
# v26.2.0

npm install
npm run dev

Observed result:

An unhandled rejection has occurred inside Forge:
Error: Electron failed to install correctly, please delete node_modules/electron and try installing again

Switching to Node 20 makes the same flow work:

cd frontend
nvm use 20 || nvm install 20
rm -rf node_modules
npm ci
npm run dev

Root Cause

This is not a project-specific runtime bug in the app code. The frontend uses
Electron Forge + Electron, and newer Node 24/26 runtimes currently hit an
upstream Electron install failure that can leave node_modules/electron
partially extracted. In that state, Electron's expected install metadata is
missing and Forge later fails while locating the Electron executable.

ReverbCode's own desktop/frontend workflows already run on Node 20 today, so
contributors can hit this locally even though CI is green.

Fix

Make the frontend's supported Node version explicit and fail fast before a
partial install:

  • declare engines.node = 20.x in frontend/package.json
  • add a preinstall guard that rejects unsupported Node majors with recovery steps
  • add frontend/.nvmrc
  • document the Node 20 requirement in the root README

Impact

This is likely to affect contributors who use current Node 24/26 by default and
try the Electron frontend locally. The failure is confusing because npm install
can look mostly successful and the actual break only appears later on
npm run dev. A fast-fail guard removes that trap and aligns local setup with
the repo's existing Node 20 desktop workflow.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions