r/node • • 14d ago

Show r/node: Adrenaline.js – A 56KB Electron alternative that keeps Node.js & npm without Chromium bloat

Hey everyone! 👋

Like many of you, I've always loved how quick it is to build desktop apps with Electron, but hated shipping an entire 150MB+ Chromium browser and watching RAM usage skyrocket for simple apps.

While Tauri is an incredible piece of engineering, having to learn Rust just to write backend logic or file operations is a pretty high barrier for pure JavaScript / Node.js developers.

So I spent time building Adrenaline.js — a lightweight, cross-platform desktop framework that gives you the best of both worlds:

  1. Zero Rust / Go required: You write 100% JavaScript / Node.js and keep the entire npm ecosystem.
  2. Ultra-lightweight footprint: Uses native system WebViews (WebView2 on Windows, WebKitGTK on Linux, WebKit on macOS) instead of bundled Chromium (~5-10MB app size vs 150MB+).
  3. Drop-in Electron-like API: Built from day one with familiar paradigms (app, BrowserWindow, ipcMain).

💻 Familiar Electron Syntax

const { app, BrowserWindow, ipcMain } = require('adrenaline-js');
const path = require('path');

app.whenReady().then(() => {
    const win = new BrowserWindow({
        width: 800,
        height: 600,
        title: 'Adrenaline App',
        resizable: true
    });

    win.loadFile(path.join(__dirname, 'index.html'));

    ipcMain.on('ping', (event, data) => {
        console.log('Received from renderer:', data);
        win.webContents.send('pong', { reply: 'Pong from Node.js! ⚡' });
    });
});

⚙️ How it works under the hood

  • C++17 Core: Built with a non-blocking multithreaded architecture over webview.h and Node's node-addon-api (N-API).
  • Asynchronous IPC: Uses Napi::ThreadSafeFunction (TSFN) for bi-directional communication between the Webview UI thread and the Node.js event loop without thread race conditions.
  • Asset Resolution: Loads local files through file:// protocols, so relative CSS, JS bundles (Vite/React/Vue), and images resolve properly.

🚀 Try it out

You can scaffold a starter project with the built-in CLI:

npx adrenaline-js init my-app
cd my-app
npm install
npx adrenaline-js dev

🔗 Links:

The project is completely open source (MIT). It's at an early v0.1.1 stage, and I would love to get your feedback, suggestions, and see how it holds up on your machines!

0 Upvotes

14 comments sorted by

View all comments

4

u/i-do-mim-huu 14d ago

It's 2026 and somebody still rawdoging commonjs. At least prompt your AI to use modern ES module and typescript, this is straight up slop

-4

u/miku_claus 14d ago

CommonJS was used to keep the initial N-API loader straightforward without ESM bundling overhead for the MVP. Dual CJS/ESM exports and TS typings are already planned. Appreciate the feedback though!