JavaScript desktop apps in under 10MB

Plus Plotly.js 4, Google's mole inside a supply chain hacking gang, and Evan You predicting 'slop forks'.

#​803 — September 22, 2026

Read on the Web

Together with  ParadeDB

JavaScript Weekly

tinyjs: Build JavaScript Desktop Apps in <10MB — I built an app with this and was impressed. You get a txiki.js-powered backend with full system access (including FFI!), native webview rendering, and tiny macOS, Linux, and Windows builds. It even makes it easy to sign/notarize the final app.

Tarwin Stroh-Spijer

There are lots of great options in this space though:

  • Electrobun offers richer multi-window and GPU features, at the cost of a larger TypeScript runtime – though it can instead use Zig, Rust, Go, or Odin for a tiny native main process.

  • Perry is a TypeScript to native AOT compiler whose primary UI model renders AppKit, Win32 and GTK4 widgets for a more conventionally native feel.

  • Electron and the experimental Deno Desktop are powerful, but their executables typically run several times larger.

  • Neutralinojs apps can be even smaller than tinyjs's, but you lose the general-purpose JavaScript privileged backend by design.

Full-Text Search in Drizzle Without a Second System — Try the official ParadeDB integration for Drizzle. Search your live Postgres tables. No ETL, no Elasticsearch. ParadeDB cloud coming soon.

ParadeDB sponsor

Persistent Databases in the Browser with DuckDB-Wasm and OPFS — A walkthrough of running DuckDB in the browser with a database file that survives reloads using the Origin Private File System now supported by all major browsers.

Piovesan and Wielenga (DuckDB)

How Linear Reworked Its CI for 4x the Tests — Eager agents grew Linear's test suite, and its CI costs with it! They share some remedies: rewriting type-aware ESLint rules as plain AST checks cut lint time 55% and eased a move to Oxlint, while selectively turning off Vitest's isolation saved a further 17% a month.

Mufeez Amjad (Linear)

IN BRIEF:

RELEASES:

📖  Articles and Videos

An Undercover Analyst Infiltrated the Gang Behind 'Mini Shai-Hulud' — Bad news for the group behind this spring's cascading supply chain attacks… Google had a mole in their group chat! WIRED explains how the group was monitored and disrupted, leading to two recent arrests.

Andy Greenberg (WIRED)

The V8 Runtime Undermined My Constant-Time JavaScript Library — A look at how even branchless JavaScript can leak secrets through CPU cache behavior, due to quirks in how V8 handles booleans and -0.

Soatok Dreamseeker

Your UI Isn't Slow. It's Waiting on the Data — TimescaleDB extends Postgres so the data behind your UI loads fast as it grows. Get $1000 credit to start.

Tiger Data (creators of TimescaleDB) sponsor

Do Frameworks Matter Anymore? — If you're using AI, you're either using a framework or your agent is building an ad-hoc one on the fly. A Remix team member argues that's a good reason to want frameworks, and better ones, too.

Brooks Lybrand

📄 We Are All Product Engineers Now – Laurie argues that understanding what customers need becomes a core developer skill. Laurie Voss

📺 Is AI Changing How JavaScript Itself Gets Designed? – A 2-minute take from TC39 delegate Michael Ficarra. JetBrains

📄 Solid 2.0: It's the Little Things – Six touches that change how SolidJS 2.0 feels. Brenley Dueck

📄 How Notion Handles Concurrent Editing with CRDTs Nehmzow and Guo (Notion)

🛠 Code & Tools

Plotly.js 4: A Big Update for the Popular Charting Library — Now ships its own TypeScript types, adds ‘quiver’ plots (above) for drawing vector fields (with many awesome examples in the post), accepts CSS Color 4 color strings, and removes Mapbox GL in favor of MapLibre (no token needed!)

Chris Parmer

🤖 Transformers.js v4.3: Run AI Models in the Browser — Adds support for structured output (e.g. JSON), using WebGPU on Safari 26+, and DeepSeek v4. The docs have had an overhaul and there’s now an agent skill you can use.

Hugging Face

💡 Hugging Face also released a collection of 207 Apache-2.0 WebGPU kernels — matmul, attention and quantization ops for your own runtime.

Still Writing Tests Manually? Meticulous AI Is Here — Flaky tests slowing down dev? Meticulous gives engineers confidence to ship faster by autonomously testing every edge case of your web app.

Meticulous sponsor

@shadcn/lint: An Agent-First Linter for Tailwind — An ESLint/Oxlint plugin to enforce rules like "no raw colors" and "no restyling <Button> from outside" with errors to steer agents back to your variants and tokens.

shadcn

Devframe: A Framework for Building DevTools That Run Anywhere — From the developer behind Vitest and Nuxt DevTools, "a framework for building DevTools, in the same way Nuxt or Next.js provides a framework [for web apps]". Define a tool once and Devframe turns it into a Web Standard request handler you can mount almost anywhere.

Anthony Fu

✉️ Mailflare: A Self-Hosted Inbox Built Entirely on Cloudflare — A self-hosted inbox for custom domains built on Cloudflare’s Email Routing, Workers, D1 and R2. AGPL 3.0 licensed.

Hieu Nguyen

  • gridstack.js 14.0 – The popular drag-and-drop dashboard layout library adds a list mode that reflows widgets like a reorderable list. (Demos.)

  • 🖼️ image-dimensions 2.6 – Quickly get an image's dimensions by reading the least amount of data.

  • Feedsmith 3.0 – A fast way to parse and generate web feeds, including RSS, Atom, and JSON.

📰 Classifieds

A developer's guide to adding eSignature to your app with an API: How signing workflows and embedded signing work, and the core steps to add signing to your product with Foxit.


🧩 CAPTCHA was built for a different internet. Replace it with invisible bot detection with a few lines of code. Try Fingerprint for free.


Meet chat.agent on Trigger.dev: durable AI agents built with the AI SDK you already use. Long-lived LLM sessions that survive deploys, crashes & refreshes.

📢  Elsewhere in the ecosystem

n

Комментарии