Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here


Call all Node.js modules directly from DOM/WebWorker and enable a new way of writing applications with all Web technologies.

Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402 (1 ratings)
Rated 5.0 out of 5
Subscribe to updates I use nw.js

Statistics on nw.js

Number of watchers on Github 33364
Number of open issues 683
Average time to close an issue 4 days
Main language C++
Average time to merge a PR 2 days
Open pull requests 92+
Closed pull requests 39+
Last commit almost 2 years ago
Repo Created about 8 years ago
Repo Last Updated almost 2 years ago
Size 120 MB
Organization / Authornwjs
Page Updated
Do you use nw.js? Leave a review!
View open issues (683)
View nw.js activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating nw.js for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)
What people are saying about nw.js Leave a review
It is simple way to create cross-platform desktop app with NodeJS backend! :)

node-webkit is renamed NW.js

Official site:
Official documentation:


NW.js is an app runtime based on Chromium and node.js. You can write native apps in HTML and JavaScript with NW.js. It also lets you call Node.js modules directly from the DOM and enables a new way of writing native applications with all Web technologies.

It was created in the Intel Open Source Technology Center.

Building a Cross-platform Desktop App with NW.js
Creating Desktop Applications With node-webkit
WebApp to DesktopApp with node-webkit (slides)
Essay on the history and internals of the project


  • Apps written in modern HTML5, CSS3, JS and WebGL.
  • Complete support for Node.js APIs and all its third party modules.
  • Good performance: Node and WebKit run in the same thread: Function calls are made straightforward; objects are in the same heap and can just reference each other.
  • Easy to package and distribute apps.
  • Available on Linux, Mac OS X and Windows.


  • v0.29.0: (Mar 7, 2018, based off of Node.js v9.7.1, Chromium 65.0.3325.146): release notes
    NOTE You might want the SDK build. Please read the release notes.

  • latest nightly build from git tip:

  • Previous versions

Demos and real apps

You may also be interested in our demos repository and the List of apps and companies using nw.js.

Quick Start

Create index.html:

<!DOCTYPE html>
    <title>Hello World!</title>
    <h1>Hello World!</h1>
    We are using node.js <script>document.write(process.version)</script>.

Create package.json:

  "name": "nw-demo",
  "version": "0.0.1",
  "main": "index.html"


$ /path/to/nw .  (suppose the current directory contains 'package.json')

Note: on Windows, you can drag the folder containing package.json to nw.exe to open it.

Note: on OSX, the executable binary is in a hidden directory within the .app file. To run node-webkit on OSX, type:
/path/to/ . (suppose the current directory contains 'package.json')


For more information on how to write/package/run apps, see:

And our Wiki for much more.


We use the google group as our mailing list (use English only). Subscribe via

NOTE: Links to the old google group (e.g.!msg/node-webkit/doRWZ07LgWQ/4fheV8FF8zsJ) that are no longer working can be fixed by replacing node-webkit with nwjs-general (e.g!msg/nwjs-general/doRWZ07LgWQ/4fheV8FF8zsJ).

Issues are being tracked here on GitHub.

The source code for NW.js and the daily development spans across multiple repositories in this organization. This repository is for the purpose of issue tracking, landing page and part of the source code.


NW.js's code in this repo uses the MIT license, see our LICENSE file. To redistribute the binary, see How to package and distribute your apps


The work is being sponsored by:

nw.js open issues Ask a question     (View All Issues)
  • about 3 years XMLHttpRequest download the file and save the local
  • about 3 years i want dynamic setup OS
  • about 3 years Missing symbols for libnode.dylib and libffmpeg.dylib
  • about 3 years Webview event for common dialogs
  • about 3 years Can't create Secure Websocket connections (wss) with SNI on OSX
  • about 3 years inject_js_start effects iframe , and occurs some errors
  • about 3 years kiosk mode osx still showing menu
  • about 3 years Monitoring node-main process
  • about 3 years OnNoMemory in ImageDecodeTask
  • about 3 years bugs in modifiers of nw.MenuItem
  • about 3 years uppercase character in domain attribute of package.json, nw.js coundn't launch
  • about 3 years unable to move the cache
  • about 3 years Problem with Steam Overlay on Linux
  • about 3 years Slow startup time (2 minutes!) on Windows
  • about 3 years and - nw is undefined in the new Window since 0.13 Migration
  • about 3 years Events not sent to "NWJS Default app"
  • about 3 years Crash on OsX due to args on package.json
  • about 3 years Node worker can't include plugin
  • about 3 years TypeError: isIP is not a function / Error: EFILE
  • about 3 years console.time async bug
  • about 3 years win.print fail without parameter
  • about 3 years Window sizes wrong (height min/max)
  • about 3 years An API function for taking a screenshot of the user's Desktop?
  • about 3 years Fit to page when printing PDFs
  • about 3 years Scrollbars do not look correct
  • about 3 years Chrome permission request causes app to close
  • about 3 years nwUserAgent not working...
  • about 3 years How to get app root directory in nwjs?
  • about 3 years There is no win.isDevToolsOpen() method in v0.14.7 but had in document.
  • about 3 years macOS: Quit from the app switcher, missing "quit" string at event callback.
nw.js open pull requests (View All Pulls)
  • Use window subfields in manifest for newly created windows
  • Fix crash when using `additional_trust_anchors`
  • Updated documents for `node-main`, `main` and `bg-script`
  • Trust On First Use
  • Update
  • Update nw_strings_id.xtb
  • Removed 'JavaScript' from title of JavaScript dialogs in Linux
  • Fixed devtools issue for nw12
  • Fixed window size not working when using
  • Changed links to nwjs/nw.js
  • New Menu method getItemByLabel
  • [l10n] merge localization resources
  • Fix node-webkit version finding in
  • Feature request: API for registering node-webkit applications as protocol handlers #951
  • Fix #2106: Updated Tray to use libappindicator in Linux
  • macosx appstore support
  • Adding link to another tutorial on Node Webkit
  • Fix nw0.8 DispatcherHost::OnCallObjectMethodSync() warm output
  • Backport skip_taskbar feature
  • Add support for Window.SetIcon(icon) (win + gtk only)
  • #1350: fix maximize/restore/fullscreen cause hidden window to be visible on windows platform
  • fix #856: reactivate window after alert dialog is closed
  • fix setposition(center) in linux
  • Fix menu.popup misplaced when zoomLevel is set
  • [win]frameless window'height can be sized under 38px ver2X
  • Typo errors in docs
  • Fix title showing in a frameless window on OSX
  • Updated docs of building native modules
  • test case for issue #4171
  • Update the isFullScreen and the isAlwaysOnTop to be boolean instead o…
  • Updated docs for building proprietary codecs easier
  • Nw14 mas
  • Updated docs of building native modules
  • Refactors NW hooks
  • Nw15 mas
  • Added `isDevToolsOpen` interface and missing impl.
  • added new APIs for read/write multiple types of data to clipboard
  • added new APIs for read/write multiple types of data to clipboard
  • Table of Contents keeps changing in each version
  • exposes `autoprint` as a option to pass to `win.print()`
  • updated `win.print()` call
  • [osx] update menuitems after setting main menu
  • Remove TOC from homepage to avoid inconsistancy with navigation sidebar
  • [test] test case for #5163
  • [linux] enabled global menubar on Ubuntu
  • [linux] enabled global menubar on Ubuntu
  • [linux] enabled global menubar on Ubuntu
  • updated test cases for nw18 update
  • [test] test for #5247
  • updated test case & hooks for `open` event of `nw.App`
  • support passing Buffer or ArrayBuffer to evalNWBin
  • [test] test for issue #4693
  • [test] add 4 test cases for worker
  • Implemented APIs for set/get AppUserModelID
  • fixed `show_in_taskbar` option for ``
  • fixed `show_in_taskbar` option for ``
  • fixed nw-gyp build failure with UNICODE set
  • event should be fired with `single-instance` set to `false`
  • set force close flags and close window using js
  • fix keyboard access for menus
  • [linux] enabled global menubar on Ubuntu
  • [test] added a test case for cookie lost after devtools closed
  • [test] switch to devtools window w/o specifying window handle
  • Fix #916: support pac_url and auto proxy detection
  • [doc] updated "Enable Proprietary"
  • [linux] enabled global menubar on Ubuntu
  • [doc] updated documentation for building NW.js
  • [linux] enabled global menubar on Ubuntu
  • Add documentation for configuring windows background color
  • Title and favicon change event on webview documentation
  • Optional title for chrome.history.addUrl documenation
  • Webview navigation history getter documentation.
  • [AutoUpdater][OSX] add squirrel auto updater
  • Guide how to use tracing tools on nwjs
  • Cert error on webview documentation
  • Audio management support in webview documentation.
  • [test] Add test for issue5730
  • [test] Add test for issue5781
  • [test] Add test for isse6136
  • [test] Add test for issue6099
  • [test] Add test for issue6229
  • [test] Add test for issue#6231
  • [test] Add test case for issue #5882
  • [test] Add test for issue #5943
  • [test] Add test for issue#5980
  • [test] Add test for issue#6113
  • [doc] update description for chromedriver
  • Update instructions
  • tools: remove the deprecated '--patch-config' option from
  • Enable building NW.js when git index is not available.
  • [test] fix test 6229
  • [test] Add test for issue3001
nw.js questions on Stackoverflow (View All Questions)
  • unable to build nw.js with diskdb
  • Unable to build nw.js hello world application
  • ChromeDriver for NW.js Application
  • Unable to run nw.js application in ubuntu
  • Javascript - Angular 2 and nw.js WebSocket context
  • Selenium WebDriver Automation script for application Developed using NW.js Technology
  • How to get started with angular2 in nw.js
  • NW.js ability to detect computer lock, mouse activity, idle user
  • How to properly inject a click or Enter key event in a NW.js guest page so that it doesn't know the difference?
  • In nw.js(node-webkit), how node-main : node.js access any windows?
  • Using liquidfun.js within nw.js
  • How can I run scripts in served pages in NW.js?
  • Cannot remove mouse cursor in nw.js app
  • [NW.JS]Something annoying when i package my program
  • SQLITE compiled for NW.js - One command for SQL CRUD
  • How to create a desktop app version of a website using NW.js?
  • NW.js Button injection
  • Browserify with node-webkit (nw.js) usage
  • NW.js : OAuth worflow redirect in nw.gui window popup error
  • How many copies of V8 in NW.js and Electron?
  • Selenium WebDriver Automation with NW.js and Chromium Extended Framework Desktop application implemented in web technologies
  • nw.js browser showing Uncaught ReferenceError: require is not defined
  • how to automate mouse clicks in nw.js (node-webkit)
  • NW.js capture keypress when out of focus without disabling it in another apps
  • Maximize nw.js window from protractor doesn't work
  • Getting data out of fs.readfile using nw.js
  • Inject multiple javascript sources in nw.js
  • NW.js / NodeJS Google Analytics integration
  • building serialport.js with nw.gyp for nw.js
  • Check if nw.js application is running on built version (prod) or development
Other projects in C++