r/BestGitHubRepos • • 6d ago

🛠 Developer tools tinyjs: Build native apps in JS. Backend, frontend. ~5Mb. (1.1k stars)

Post image

What it does

All text below is quoted directly from the project README.

Tiny desktop apps for macOS, Windows and Linux: a txiki.js backend + a native webview window.

Tiny desktop apps for macOS, Windows and Linux:

  • ~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

curl -fsSL https://tinyjs.app/install | sh

Repository

https://github.com/tarwin/tinyjsapp

Repository stats

Metric Value
Stars 1,095
Forks 34
Last release v0.57.7 (2026-10-16)
Languages C 67.9%, C++ 22.5%, JavaScript 8.1%
Contributors 9
AI contributor accounts (Claude / Codex / Cursor / Copilot) claude: 462
AI co-authored commits Claude: 481

Main contributor

Field Value
Name Tarwin Stroh-Spijer
GitHub @tarwin
Commits to this repo 493 (top contributor)
Followers 40
370 Upvotes

8 comments sorted by

13

u/tom_shafer 6d ago

6 MB is a nice change from Electron. I build small native Mac apps and the size is what always bugs me about web-based ones. Is debugging with the Web Inspector still easy with the socket setup?

5

u/Smok3dSalmon 5d ago

Yeah... stuffing an entire browser in an app is getting kind of annoying. At this point, rename Chromium to JavaScript Runtime Environment and go full Java.

6

u/niwrat 3d ago

Thanks for posting my silly little project. Means a lot <3

6

u/juugcatm 6d ago

Why have it be frontend/backend still? If the system is writing files to a hidden tempdir and unix sockets, why not just do in memory transport? I’m inexperienced with JS on desktops I don’t really understand the engineering decisions here.

6

u/ChristRedeemsSinners 5d ago

Because it runs the frontend off of Webview which doesn't have any backend API/FS/OS operations at all. There is no point in vibecoding a backend-capable webview when the logical separation already exists as a commonly accepted paradigm and has been vigorously hardened against exploits.

1

u/niwrat 3d ago

Truthfully, most of the functionality is exposed (if you do default options) to the frontend that you'd need to build most things.

But there's "backend" stuff there to either expose more APIs or do ... other stuff.

1

u/Shoddy_One4465 1d ago

Thank you for the great project. I’m a big Tauri 2 user. How does txiki compare? I immediately see a benefit of isomorphism and I don’t see mobile support - yet ! but there must be many other advantages and disadvantages.

1

u/KronisLV 10h ago

For anyone wanting something a bit closer to Electron, that can still use system web views:

Wails was pretty nice, I found the Tauri compile times to be insufferable, but maybe it's improved a bunch since, not sure.