NATIVE DESKTOP RUNTIME

Build native
desktop apps.

Use the system webview on Windows, macOS, and Linux, with APIs for windows, menus, tray icons, notifications, IPC, browser contexts, and custom protocols. Works with Node.js, Bun, and Deno.

npm i @webviewjs/webview
  • Menus
  • Tray icons
  • Notifications
  • IPC
  • Browser contexts
  • Custom protocols

The browser
is already there.

WebviewJS uses the webview supplied by the operating system instead of shipping another browser engine with your app.

WindowsWEBVIEW2
macOSWEBKIT
LinuxWEBKITGTK

One API.
Any runtime.

Use the same WebviewJS API with Node.js, Deno, or Bun. Choose the runtime that fits your workflow and build native desktop apps the way you prefer.

Node.jsSAME API
DenoSAME API
BunSAME API

Async code
keeps running.

WebviewJS pumps native window events without blocking JavaScript. Timers, promises, fetch requests, and background work keep running while your app is open.

main.tsNODE · DENO · BUN
import { Application } from '@webviewjs/webview';const app = new Application();app.createBrowserWindow({ title: 'My App' });setInterval(() => {  console.log('still running');}, 1000);const response = await fetch('https://example.com');console.log(response.status);app.run();

JavaScript
controls the window.

Create a window, load a page, and add menus, notifications, tray icons, IPC, browser contexts, or custom protocols through one simple API.

JSmain.js
1import { Application } from '@webviewjs/webview';23const app = new Application();45const window = app.createBrowserWindow({6  title: 'My App',7  width: 1024,8  height: 768,9});1011window.createWebview({ url: 'https://example.com' });1213app.run();
  • Menus
  • Tray Icons
  • Notifications
  • IPC
  • Custom Protocols

Build it into
an executable.

Use the WebviewJS CLI with Node.js SEA, Bun compile, or Deno compile. The platform still supplies its system webview.

Terminal
$webview build src/main.ts --name my-app
BUILD./dist/my-app

Get started

Build your
first window.

Start with a few lines of JavaScript.