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.
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.
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.
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.
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();Project overview
- 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.
webview build src/main.ts --name my-appGet started
Build your
first window.
Start with a few lines of JavaScript.