What TinyJS is
TinyJS is the work of developer Tarwin Stroh-Spijer, reported by The Register on October 12, 2026. It runs on a txiki.js backend and a native WebKit, WebView2 or WebKitGTK window, at roughly 6 MB shipped. The Register credits txiki.js to Saúl Ibarra Corretgé. The project's own site describes it as QuickJS plus libuv, which accounts for the 5.6 MB the install brings with it.
On Windows, the interface is rendered by WebView2. The project's documentation notes that WebView2 is Chromium-based on Windows, while macOS uses WebKit and Linux uses WebKitGTK. The Register points out the consequence. Apps will look slightly different from one OS to another, where Electron aims for an identical look everywhere.
How the architecture works
Each app is two processes. According to the docs, a backend process (txiki.js, with full system access) and a native window talk over a private socket. On Windows that transport is a named pipe, per the project's portability table. There is no HTTP server and no ports, so nothing is listening for other software to find.
That is why The Register says there is no per-app web server to bundle or secure. It is a sound design choice. It does not make the app itself safe, because the backend has broad system access by design.
Size comparison, with caveats
The project's own comparison table lists Electron at 150 MB or more and Tauri at about 10 MB. It lists Neutralino at about 3 MB and TinyJS at about 6 MB. The Register repeats the Electron and Tauri figures. Treat all of these as the project's claims rather than independent measurements.
The ~6 MB figure is a baseline of runtime plus launcher. Your own frontend, backend code and dependencies add to it.
Getting started on Windows
The documentation says Windows 10 and 11 are supported with prebuilt binaries and no compiler. The only prerequisite is the WebView2 runtime, which is preinstalled on Windows 11. Windows 10 machines may need it installed separately.
- Run the project's PowerShell installer. The README gives %LOCALAPPDATA%\tinyjs as the install location and says it adds TinyJS to your user PATH, so you need to open a new terminal afterwards.
- Scaffold an app with
tinyjs new myapp, thencd myapp. - Run
tinyjs dev. The docs say this opens a window with hot reload. Frontend edits swap in live, and backend edits restart the process. - Run
tinyjs build. On Windows the docs describe a portable dist/ folder containing the backend, launcher and frontend. It is a folder, not a single executable.
Piping a remote script into PowerShell is a common but risky habit. Read the script before you run it, especially on a work machine.
Frameworks and Node.js
The default scaffold has zero dependencies. The docs also list templates for vanilla JS, React, Vue, Svelte, Solid, Preact, Lit and Alpine. Framework templates use Vite, and TypeScript backends are bundled with esbuild.
So Node.js is not required for a minimal app. If you pick a Vite-based template, you will need a package manager and the usual toolchain. The Register makes the same point.
The sample app shelf
The Register says the shelf indexes 25 free sample apps. Reported zip sizes include:
- world clock: 3.8 MB
- clipboard history: 3.7 MB
- Markdown editor: 4.9 MB
- SQLite browser: 4.1 MB
- Winamp-style player: 7.4 MB
The project's examples repository describes Windows downloads as a zip for Windows 10/11 that you unzip anywhere and run the exe, at 4–6 MB each.
In the reporter's Windows tests, the world clock ran fine and used 15.5 MB of RAM. The clipboard app, written with Mac hotkeys in mind, was too buggy. Both are single-machine observations. The Register also says you must convince Windows Defender to trust the launcher. Expect that friction with unsigned, unfamiliar executables.
Security: what to know before you ship or install
- Hash checks are not trust. The launcher verifies hashes of downloaded apps. As The Register notes, you are still trusting the publisher.
- Full system access. The backend can reach files, sockets and processes. The docs recommend exposing named operations rather than a generic SQL query function, so the page can't run arbitrary SQL.
- Wrapping websites is the sharp edge. TinyJS can point a window at a URL. The docs warn that the
tinybridge is injected into every origin. Without anapiallow-list intinyjs.json, the site's own JavaScript has an RPC channel to a backend with full filesystem access. Gating must be enforced in the backend, because page-side checks can be edited by a hostile page. - Platform gaps. Unsupported calls fail in different ways. The docs say capability calls reject, query calls return null and fire-and-forget calls are silent no-ops. Feature-detect with
tiny.system.capabilities(). For example, the audio filter API is documented as unavailable on Windows.
Is it production-ready?
The docs call themselves "mac-first" and label Windows and Linux as beta. For internal utilities, quick tools and hobby projects, the footprint is attractive. For anything customer-facing on Windows, test carefully and plan for rough edges.
The Register suggests small apps start faster and may draw less power, but it says this is "in theory". No comparative benchmarks are offered, so a small download size doesn't prove lower RAM use or better battery life. Tauri has a more mature ecosystem. Electron gives the most consistent rendering. TinyJS's pitch is a small footprint, a JavaScript-only workflow, and OS-provided features like dialogs, menus, tray, clipboard and auto-updates.
Bottom line
TinyJS is a promising way to build small Windows utilities in familiar web languages, as long as WebView2 is present and you accept beta status. Read the installer, gate any wrapped sites, and test on every OS you target.
References
- When you just need to build a tiny desktop app: TinyJS The Register · 2026-10-12T09:43:00+00:00
- GitHub - tarwin/tinyjsapp: Build native apps in JS. Backend, frontend. ~5Mb. · GitHub github.com