If you want to release your web game on Windows, Mac, or Linux, there are a few options available.
First, if you simply want users to be able to launch the game from a desktop icon and play it in a standalone window instead of a browser, you can make it installable as a 🌐 Progressive Web App. That's the easiest way to turn your web game into a desktop game. By the way, you can also customize the title bar (opens in a new tab) of a PWA on desktop!
But if you want to distribute full executables for users to download, or if you need a deeper OS integration than what a browser page can do, you will need to package your game with a desktop framework.
Electron109k623k/w – Chromium and Node.jsChromium and Node.js
Tauri80k20k/w – OS-native web views and RustOS-native web views and Rust
NW.js40k – Chromium and Node.jsChromium and Node.js
Wails18k – WebKit web view and GoWebKit web view and Go
Gluon3k30/w – User-installed browsers (Chromium or Firefox) and Node.jsUser-installed browsers (Chromium or Firefox) and Node.js
NodeGui9k400/w – Make native apps in Node and CSS (not for WebGL games)Make native apps in Node and CSS (not for WebGL games)
Read this great in-depth Web to Desktop framework comparison (opens in a new tab) for more details.
Tauri, Neutralino, and Wails use lightweight OS web views that have a small memory footprint and build size. While that may sound appealing, WebKit web views (which you would get on Mac or Linux with Tauri (opens in a new tab) for instance) are not as performant as Chromium when it comes to graphics. So if you want the most performant cross-platform experience, go for Electron or NW.js (or look into Gluon). Note that Electron and NW.js are also the only desktop frameworks officially supported by the two main libraries that help distribute games on Steam.