I Pointed REA at a 100 MB Electron App. Here’s What It Found and the Two Preload Files It Missed.
Description and use
REA’s static analysis is fast and largely accurate on a 100 MB Electron bundle, but it fails to resolve dynamic preload paths and exposed APIs, and drops many graph connections due to budget limits. On a toy app it matches ground truth and can trace dynamic IPC. Agent cost is significant (~1.95 MB JSON).
Problem
Assessing the effectiveness of REA’s static JavaScript analysis on a large Electron application and a controlled toy app, and evaluating agent resource costs.
Outcome
REA’s static analysis is fast and largely accurate on a 100 MB Electron bundle, but it fails to resolve dynamic preload paths and exposed APIs, and drops many graph connections due to budget limits. On a toy app it matches ground truth and can trace dynamic IPC. Agent cost is significant (~1.95 MB JSON).
Workflow
- Install Node 22.20 and REA via npm
- Run
rea doctorto check environment - Set up REA with
npx rea setup --client claude_code --dry-runand--yes - Analyze the 100 MB bundle with
npx rea analyze-javascript-application app.asar --format json - Compare REA’s summary to grep counts
- Analyze the toy app before and after minification
- Use
trace-application-featureto trace IPC channels - Measure agent tool list size and latency
Evidence
REA read 459 files (24.2 MB of text), parsed 421 JavaScript files, walked 3,114,427 AST nodes and had zero parse failures.
REA said 0 preload entrypoints. The app has two preload files, preload/index.cjs and preload/plugin-panel.js.
The tracer is the highlight. I fed the evidence back in with trace-application-feature and a seed of channel: "notes:read". It returned the chain I wanted, on the minified bundle: preload.js invokes the channel notes:read, and the channel is handled by the notes:read handler.
REA exposes 170 MCP tools. I opened a stdio session
- Record date: 2026-10-12T05:55:52.915Z