Ce qui se passe
tinyjs, sous licence MIT, fabrique des applications de bureau pour macOS, Windows et Linux en JavaScript, sans Electron. Une application livrée pèse environ 6 Mo sur les trois systèmes, contre au moins 150 Mo pour Electron et une dizaine pour Tauri, selon le site du projet.
Comment c'est construit
Deux pièces, rien de plus :
- la fenêtre, un lanceur de 1 à 2 Mo qui ouvre la webview du système : WebKit sur macOS, WebView2 sur Windows, WebKitGTK sur Linux ;
- le backend, un vrai processus JavaScript sur txiki.js (QuickJS et libuv),
un binaire de 5,6 Mo qui donne fichiers, sockets, sous-processus, FFI,
SQLite,
fetchet WebSocket.
Les deux se parlent en RPC par un socket Unix, dans un dossier temporaire en
0700 (un tube nommé sous Windows). Rien n'écoute sur le réseau : pas de port à
choisir, pas de conflit, rien à scanner. C'est là que tinyjs se sépare de
Neutralino, qui expose l'API système par un serveur WebSocket local protégé par
jeton.
Face à Tauri, l'écart est le langage : backend en JavaScript, sans compilation. Dialogues, menus, barre d'état, presse-papiers, trousseau, notifications, raccourcis globaux et mise à jour font partie de l'API au lieu d'être des plugins à ajouter.
Comment s'y prendre
curl -fsSL https://tinyjs.app/install | sh # macOS 15+ et Linux ; install.ps1 sous Windows
tinyjs new mon-outil --template react-ts
cd mon-outil
tinyjs dev # fenêtre native, rechargement à chaud
tinyjs build # macOS : bundle signé, prêt pour la notarisationLe backend exporte ses fonctions, la page les appelle :
// src/main.js
export const api = {
version: async () => ({ app: '1.0.0' }),
};
// côté page
const { app } = await tiny.api.call('version');- Modèles Vite en TypeScript : React, Vue, Svelte, Solid, Preact, Lit, Alpine, vanilla. Un backend TypeScript passe par esbuild, ce qui ouvre les paquets npm en pur JavaScript. Le modèle par défaut, lui, n'a ni dépendance ni build.
tinyjs publishproduit une archive et un manifeste à poser sur n'importe quel serveur statique ; la mise à jour intégrée vérifie le SHA-256 et la signature, et revient en arrière en cas d'échec.- La fenêtre peut aussi envelopper un site existant ;
tinyjs.jsondécide, origine par origine, quelles API natives cette page peut appeler.
Les limites, selon l'auteur
- Chaque système rend avec son propre moteur : il faut tester sur les trois. Sous Linux, les codecs dépendent des plugins GStreamer installés.
- Seul macOS est stable ; Windows 10/11 et Linux (glibc 2.35+,
libwebkit2gtk-4.1-0) sont en bêta. - Ni mobile, ni addons natifs Node (
.node). - Pas de compilation croisée : on construit sur le système visé, une matrice CI
à trois systèmes s'en charge. Un Mac couvre ses deux architectures avec
--archou--universal.
Source : tinyjs, site du projet, signalé par Human Coders News le 8 octobre 2026.