tarwin / tinyjsapp
git clone https://github.com/tarwin/tinyjsapp.git
v0.59.0 Β· today
π₯ on GitHub Trending today
Build native apps in JS. Backend, frontend. ~5Mb.
+59
stars, 24h Β· #137
β
stars, 7 days
β
stars, 30 days
1.3k
β
total
44
forks Β· 10 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageC
LicenseMIT
Created2026-07-12 (3mo ago)
Last pushtoday
Watchers6
OwnerUser
Seen on GitHub Trending
- 2026-10-20 β #3 daily in c Β· +59 β
Links
- GitHub: github.com/tarwin/tinyjsapp
- Releases Β· Issues Β· Hacker News mentions
README excerpt
# tinyjs Tiny desktop apps for macOS, Windows and Linux: a txiki.js backend + a native webview window. - **~6 MB shipped**, two real files β no Electron, no Node, no bundled Chromium - **No HTTP server, no ports** β the page and the backend talk over a Unix domain socket in a private temp directory - Backend is plain JavaScript with full system access (files, sockets, processes, FFI) via txiki.js - Frontend is plain HTML/CSS/JS (multi-file, WebGPU included) rendered by the system WebKit - Native menus, dialogs, **tray/menu-bar apps**, notifications, drag & drop with real file paths, window control - Hot reload in dev, signed `.app` bundles out of `build`, **auto-update** out of `publish` Questions, help, or something you built: come say hi on Discord. ## Install [code] The same script now handles Linux too (it detects the OS). Installs to `~/.tinyjs` and symlinks `tinyjs` onto your PATH. Pin a version with `TINYJS_VERSION=vX.Y.Z`. Later, `tinyjs update` runs the copy of the installer that came with your install if a newer release exists (`--check` only reports, `--dry-run` shows what it would run); `tinyjs dev` also mentions new releases, checking at most once a day. After updating, run `tinyjs update-project` in each project to refresh its types and coding-agent skill (see below). Linux needs the system WebKitGTK runtime: `sudo apt install libwebkit2gtk-4.1-0` on Debian/Ubuntu, `sudo zypper install libwebkit2gtk-4_1-0` on openSUSE. Prebuilt binaries ship for Linux x86_64 and arm64 with the first tagged release after Linux support merged β the installer says so plainly against older releases. To install from source instead: [code] On Linux, `setup.sh` needs the system dev packages first. Debian/Ubuntu: `sudo apt install build-essential pkg-config libgtk-3-dev libwebkit2gtk-4.1-dev libayatana-appindicator3-dev`. openSUSE: `sudo zypper install gcc-c++ make pkgconf-pkg-config gtk3-devel webkitgtk3-devel libayatana-appindicator3-devel` (WebKitGTK 4.1's dev package is `webkitgtk3-devel` there β the "3" says GTK3, not an older WebKit). It downloads a prebuilt `tjs` from the tinyjsapp releases, or builds txiki.js from source (`TJS_BUILD=1 ./setup.sh`, needs cmake + ninja). **Windows:** [code] Installs prebuilt binaries to `%LOCALAPPDATA%\tinyjs` (override with `TINYJS_HOME`; pin with `TINYJS_VERSION`) and adds it to your user PATH β open a new terminal afterwards. Needs only the WebView2 runtime (preinstalled on Windows 11). `tinyjs update` runs the installer's bundled copy. (Requires a release that ships Windows assets β the first one after Windows support merged; the installer says so plainly against older releases.) To develop tinyjs itself from source (needs MinGW-w64: `winget install BrechtSanders.WinLibs.POSIX.UCRT`): [code] **Linux:** Runs on X11 and Wayland sessions β Ubuntu 24.04+ and current distros with `webkit2gtk-4.1`. Use the same install command above (it detects Linux) or build from source with `./setup.sh` (see the distro d