Sign in

Pooya Parsa

@pi0.io
5K followers 800 following 752 posts

Building opensource stuff ◦ @unjs.io ◦ @nitro.build ◦ @nuxt.com 🌱 github.com/pi0 ❌ x.com/_pi0_

PostsRepliesMedia
Pooya Parsa @pi0.io · 03/10/2026
New minimal error page for Nitro. -95 fewer files and 339 KB / −13.7% smaller dist. I will likely port this to srvx later so all HTTP layers have consistent DX. THANKS @adonisjs.com for youch for powering Nitro's error page and for the inspirations. ♥️
2130
Pooya Parsa @pi0.io · 30/09/2026
Also quite useful to visually see why installing a package is taking time:
040
Pooya Parsa @pi0.io · 30/09/2026
upm.sh has become my new npm package inspector! It’s fast, reliable, and does everything in the browser! And building it was easy just use the upm API haha!
1160
Pooya Parsa @pi0.io · 30/09/2026
unjs/obuild now supports minifyLibs and compressLibs options Selectively minify bundled deps or compress them inline into self-extracting ES modules, for when disk size matters. undici: 906 kB → 541 kB (min) → 146 kB (compressed /~5ms to extract on demand)
140
Pooya Parsa @pi0.io · 30/09/2026
On modern terminals like Ghostty, upm also shows progress natively in the window!
130
Pooya Parsa @pi0.io · 30/09/2026
📦 upm 1.3: - Faster - Better hoisting - Consumes less resources on large repos - Minimal CLI progress bar + an onProgress API - Matches native-scores in independent @vltpkg benchmarks* (3.4ms/pkg => 2ms/pkg on average) *Benchmark results vary by hardware and scenario. upm is by far the smallest.
1161
Pooya Parsa @pi0.io · 28/09/2026
The oxbox wasm build also has a few extra perf tricks! ⚡ SIMD (simd128) across the whole build 🔗 Parser and transformer optimized together (LTO) 🧵 Multithreaded async APIs with prewarmed workers
110
Pooya Parsa @pi0.io · 28/09/2026
The official packages also pull in dozens of platform bindings and a JS runtime (emnapi + napi-rs). oxbox replaces all of that with its own tiny N-API host that runs in Node.js and browsers. upm.sh/npm/oxbox upm.sh/npm/oxc-parser upm.sh/npm/@oxc-par...
110
Pooya Parsa @pi0.io · 28/09/2026
The official oxc packages ship the parser and transformer as separate binaries, and since the transformer includes its own parser, much of it is duplicated. Oxbox links both into one wasm build and embeds it compressed with 🗜️ zopfli then base93-encoded to keep it small.
120
Pooya Parsa @pi0.io · 28/09/2026
Just published github.com/unjs/oxbox 🐂 🛠️ A tiny, portable JS library for parsing and transforming JS/TS/JSX, powered by oxc. ⚡ Optimized wasm build in a single JS chunk 🪞 Same API as oxc-parser + oxc-transform 🤝 Works in browsers and Node.js 💾 Fits on a floppy disk
2314
Pooya Parsa @pi0.io · 28/09/2026
Every upm command is also a JS utility, and the store takes pluggable backends. The website runs a real upm install right in your browser tab and reinstall every time you reload it. Try it at upm.sh before installing anything!
132
Pooya Parsa @pi0.io · 28/09/2026
Node.js boots a few ms slower than a native binary. But on CI, size wins it back: restoring a 50–150 MB native package manager from cache takes longer than startup savings! Below you can see the measured/estimated timing.
120
Pooya Parsa @pi0.io · 28/09/2026
Introducing 📦upm: 🪶A fast, tiny package manager for the npm registry. ✨Written in TypeScript, it installs at native-class speed and has a JS API, at a fraction of the size of native tools. 🤝Compatible with your existing .npmrc and lockfiles. 👉 Try at upm.sh
65215
Pooya Parsa @pi0.io · 17/09/2026
it generates a full query like this: Docs: github.com/pithings/adv...
020
Pooya Parsa @pi0.io · 17/09/2026
if is old, jev is new!
2210
Pooya Parsa @pi0.io · 17/09/2026
Built a tiny intuitive JS SDK for typesafe.ai Ask questions, get typed answers.
1401
Pooya Parsa @pi0.io · 15/09/2026
💿 💿 💿
010
Pooya Parsa @pi0.io · 03/09/2026
I tried SIEVE a long time ago, handwritten in rou3. It wasn't that impressive, but now, for H3's route rules engine, it is effective!
081
Pooya Parsa @pi0.io · 03/09/2026
New @unjs.io drop 🍕 jup: It provides shims for package managers and runtimes and automatically selects the right one from package.json. It is a full Corepack rewrite, but smaller, faster, and nicer. It supports ^ ranges, pnpm 12, Bun, Deno, Node.js, Aube, Nub. Give it a try!
1211
Pooya Parsa @pi0.io · 02/09/2026
🎊 srvx has reached v1.0 🎊 Two years ago, I went on an ambitious quest. My dream was to make export default { fetch } a universal consistent format for servers. srvx has been adopted and battle-tested by Nitro, H3, Elysia, TanStack, and many others projects 🖤
5461
Pooya Parsa @pi0.io · 28/08/2026
🏎️ perf tip of the day: If your ESM package uses "type": "module" and ships .js files, Node.js must find, read, and parse package.json to determine their format. Shipping .mjs avoids all this runtime cost. That’s why UnJS toolchain (obuild) has always shipped .mjs.
5340
Pooya Parsa @pi0.io · 28/08/2026
Best vacation ever! I’ve been building lots of things lately, and I should start releasing them soon... The final steps always take A LOT longer than the building itself. Releasing at least one cool project today 😁
0170
Pooya Parsa @pi0.io · 19/08/2026
h3 rules also has a built-in compiler that generates an optimized entry, ready to bundle!
090
Pooya Parsa @pi0.io · 19/08/2026
H3 v2 rc.27: - Route Rules Engine, heavily audited - Session idleTimeout for sliding expiration - JSON-RPC improvements (mcp is comming!) - 18 bugs and security hardenings found by deepsec (pi+opus)
1212
Pooya Parsa @pi0.io · 19/08/2026
Randomly saw H3 Core (that Nitro bundles) is 3,140 bytes mingz, what a picidence 😆
1200
Pooya Parsa @pi0.io · 18/08/2026
🚀 unjs/ocache v0.3 is out! It was a big milestone. Faster. Safer. Binary Blob Storage, Streamed Cache Fills, Composable storage, and more! 🚀 (soon available in H3 and Nitro, can be used directly anywhere with anything even with Hono!)
1190
Pooya Parsa @pi0.io · 18/08/2026
TIL Uint8Array.fromBase64 exists in browsers!
0132
Pooya Parsa @pi0.io · 14/08/2026
md4x 0.27 is fully ported from C to Zig. Faster, and more memory-efficient. It also has a new /standalone portable build. A fast, spec-compliant Markdown parser, healer (for AI streams), and renderer (HTML, Text, CLI, and JSON) + a full YAML parser in a ~114 kB gz bundle.
4291
Pooya Parsa @pi0.io · 14/08/2026
Horrible finding: npm downloads ALL OPTIONAL PEER DEPS of packages just to resolve their metadata, then throws all away 🗑️ Fortunately, pnpm and friends don’t do this. But since many users rely on npm, we need to find work around in UnJS/Nitro packages...
5450
Pooya Parsa @pi0.io · 11/08/2026
TIL: fetch spec has a fixed list of HTTP verbs (DELETE/GET/HEAD/OPTIONS/POST/PUT) to be normalized ...StAnDaRdS
3220
Pooya Parsa @pi0.io · 05/08/2026
🎨 rangi 2.2 now ships 25 built-in color themes. (all optional, ~2.6kB min/gzip in total!)
1200
Pooya Parsa @pi0.io · 03/08/2026
Zigbee2MQTT is migrating to srvx to serve its static assets, dropping 22 transitive dependencies! It feels so good when libraries I work on every day power tools I use every day. ♥️
1290
Pooya Parsa @pi0.io · 03/08/2026
Morning updates: - npx rangi => colorized cat - Language aliases - JSX/TSX support (thnx @jex.me ❤️) - JSONC/JSONC/JSON-LD syntax + detection - A new classes mode renders ~15% faster and produces minimal HTML
2150
Pooya Parsa @pi0.io · 03/08/2026
Sunday night quest: 🎨 Rangi: Tiny Syntax Highlighter
1211
Pooya Parsa @pi0.io · 30/07/2026
H3 and Nitro are getting a native MCP integration! Teaming up with @hugorcd.com and @sandros94.com to release it soon!
2230
Pooya Parsa @pi0.io · 30/07/2026
mountx 0.0.2: - New transports: S3 API, 9P2000L, and NFSv4 - Lots of fixes and performance improvements With the new 9P and NFSv4 transports, we can now mount JavaScript virtual filesystems inside VMs such as QEMU and Firecracker! Link to the Docs below 👇
160
Pooya Parsa @pi0.io · 28/07/2026
mountx works in any container with FUSE available (e.g. Vercel Sandbox) this which makes it a really interesting fit for user-defined storage.
150
Pooya Parsa @pi0.io · 28/07/2026
You can try it out without even writing a line of code! $ npx mountx $ cat ~/mountx/README.md
150
Pooya Parsa @pi0.io · 28/07/2026
⛰️ mountx :: mount JavaScript as a real filesystem! Write ~6 lines of JS, get a real directory any process can read & write: editors, CLIs, AI agents. Rootless on Linux (FUSE) and macOS (NFSv3 with no kernel extensions). ~Pure JS, zero deps. mountx.vercel.app
6314
Pooya Parsa @pi0.io · 28/07/2026
I’ve been exclusively coding in containers for a while now. no dev tools on my Laptop and PC. Today, I needed to test something and remembered that getutm.app can natively virtualize MacOS in MacOS. BTW Dropping this mini pkg shortly 😁
161
Pooya Parsa @pi0.io · 28/07/2026
IPX 4 βeta is out! - Customizable parseURL - Faster etag revalidation - New unflatten and opacity operators - 16MB smaller than v3 - Security hardenings: symlink sandboxing, opt-in blockPrivateIPs, validated redirects, forced SVG sanitization, clamped dimensions, nosniff header, ...
1213
Pooya Parsa @pi0.io · 24/07/2026
H3 v2 RC.26 is out! 🚀 - New onDispose hook - Faster setCookie; sessions now use SameSite=Lax - Faster precomposed middleware, cutting dispatch overhead by 9–18% - Return an EventStream directly as a response - 20+ bug fixes and security hardening improvements - Redesigned docs
3312
Pooya Parsa @pi0.io · 24/07/2026
Side quest of the day: 🧹mermaid-compact Mermaid is great for diagrams… until noticed this cute thing, pulls in 100+ dependencies (140 MB install), and Vite emits 100+ chunks from the mermaid.esm.min import 😅 No more! The whole thing now bundles into a single ~2.7 MB chunk.
2642
Pooya Parsa @pi0.io · 19/07/2026
Today @kane.tw told me that unwasm has issues parsing some opcodes. It wasn’t the first time with this issue. Now the parser is replaced with a tiny one that extracts only what unwasm needs. A few more changes, the install size is down to 38.7kB/329kB from 417kB/2.44 MB 🚀
1170
Pooya Parsa @pi0.io · 19/07/2026
The latest version of VS Code (1.129) has a new experimental Modern UI (the one on the right) with rounded corners everywhere. I am enabling it in Coderaft to try! How do you like it?
9200
Pooya Parsa @pi0.io · 18/07/2026
New hook in H3: onDispose(event, cb). Fires when a request is truly done: response finished, client disconnected, or the stream errored. Works identically on all runtimes!
1170
Pooya Parsa @pi0.io · 17/07/2026
🔥 SRVX IS FAST 🔥 * benchmarks are just an indicator
0180
Pooya Parsa @pi0.io · 17/07/2026
Did you know that even a simple console.log() per request can hugely hurt performance? The built-in logger in the next h3/srvx release batches writes and caches the timestamp (Intl), cutting logging overhead ~60–85%.
1190
Pooya Parsa @pi0.io · 16/07/2026
Did you know that H3 has a built-in `writeEarlyHints` utility that sends early hints? (Thanks to the initial contribution from @danielroe.dev, we’ve had it since the early days!)
1232
Pooya Parsa @pi0.io · 16/07/2026
process.getBuiltinModule() is SO underrated! Before this API, conditionally using Node.js built-ins in universal libraries was dodgy.
3335