Sign in

Colin McDonnell 💎 Zod

@colinhacks.com
5.3K followers 225 following 231 posts

💎 Creator of Zod, tRPC (v0) 🔮 OSS Fellow @ Clerk 🦆 Friendly neighborhood TypeScript nerd 🧑🏼‍💻 Prev @ Bun, EdgeDB, YC, MIT

PostsRepliesMedia
Colin McDonnell 💎 Zod @colinhacks.com · 16/09/2026
thanks Dominik! 😃
130
Colin McDonnell 💎 Zod @colinhacks.com · 15/09/2026
Nub uses this list as a fast path during resolution, falling back to on-the-fly phantom detection at install time. Full docs👇 nubjs.com/docs/instal...
nubjs.com
The virtual store
How Nub's default linker works — one symlink per package into a machine-global store, with install-time phantom detection and per-package ejection — its warm-install performance, and the flat and project-local opt-outs.
020
Colin McDonnell 💎 Zod @colinhacks.com · 15/09/2026
We've published our dataset as @nubjs/extensions, a consumable package that other package managers (pnpm, Aube, etc) could use benefit use to patch their resolution It's a drop-in replacement for @yarnpkg/extensions and it's auto-updated daily via CI 👍 github.com/nubjs/packa...
github.com
GitHub - nubjs/package-extensions: Undeclared dependencies across the most-downloaded npm packages, as a packageExtensions database for pnpm and Yarn
Undeclared dependencies across the most-downloaded npm packages, as a packageExtensions database for pnpm and Yarn - nubjs/package-extensions
130
Colin McDonnell 💎 Zod @colinhacks.com · 15/09/2026
Yarn worked around this with a hard-coded list of exceptions (@yarnpkg/extensions) which it used to patch known-bad packages. The same list is now use by pnpm v12 and Aube's global virtual stores. Unfortunately it's updated rarely and contains just 142 of the 792 bad packages
120
Colin McDonnell 💎 Zod @colinhacks.com · 15/09/2026
These phantom dependency issues often go unnoticed in hoisted layouts, but cause problems (e.g. the dreaded ERR_MODULE_NOT_FOUND) when installed in isolated layouts or via a global virtual store (GVS) As more package managers add GVS this problem will exacerbate
110
Colin McDonnell 💎 Zod @colinhacks.com · 15/09/2026
I used Nub to scan the top 10k npm packages for phantom (undeclared) dependencies It found 660 problematic packages. nubjs.com/blog/phanto...
nubjs.com
De-phantoming the npm ecosystem
A daily scan of 10,000 high-download npm packages, published as a package extensions database for other tools to use.
1181
Colin McDonnell 💎 Zod @colinhacks.com · 15/09/2026
In the latest Nub `nubx` lets you disable dlx (downloading packages from the internet) globally, forever This lets you use nubx to invoke project-local CLIs (e.g. prisma, etc) without the risk of a typo running an untrusted package on your machine
070
Colin McDonnell 💎 Zod @colinhacks.com · 15/09/2026
Zod 4.6 release notes
zod.dev
Zod 4.6
Zod 4.6 is now available, with .validate() for boolean validation, .properties() on z.instanceof(), and six more JSON Schema keywords.
041
Colin McDonnell 💎 Zod @colinhacks.com · 15/09/2026
In Zod 4.6 — z.string().url() gets 63x faster It now uses URL.canParse() before falling back to `new URL()` (the old approach)
2291
Colin McDonnell 💎 Zod @colinhacks.com · 14/09/2026
Full PR/writeup for the nerds 👇 github.com/nubjs/nub/pu...
github.com
runtime: size libuv's threadpool to the cores on augmented runs by colinhacks · Pull Request #919 · nubjs/nub
Node leaves libuv's threadpool at its default of 4 threads whatever the core count, and every fs call, dns.lookup (so every fetch to a new host), async zlib, and async crypto (pbkdf2, scrypt, r...
010
Colin McDonnell 💎 Zod @colinhacks.com · 14/09/2026
Nub v0.9.1 — Nub autosizes the libuv threadpool on beefier machines Node caps the threadpool at 4. Nub lets this float to the number of machine cores (with conservative nicing beyond 4), increasing max throughput for crypto, zlib, DNS, and native addons like bcrypt and sharp
1102
Colin McDonnell 💎 Zod @colinhacks.com · 14/09/2026
Full docs 👇 nubjs.com/docs/config...
nubjs.com
Config reference
The project file that configures Nub's runtime, dependency installs, and temporary package runs.
000
Colin McDonnell 💎 Zod @colinhacks.com · 14/09/2026
By default Nub resolves a Node version in your project according to the following precedence
100
Colin McDonnell 💎 Zod @colinhacks.com · 14/09/2026
In the latest Nub Set `nodeExecutable` in nub.jsonc to override Nub's Node version resolution logic — you can provide an absolute path, or use $() syntax to dynamically resolve one
110
Colin McDonnell 💎 Zod @colinhacks.com · 13/09/2026
sorry, yep!
011
Colin McDonnell 💎 Zod @colinhacks.com · 13/09/2026
Full Zod 4.6 announcement 👇
zod.dev
Zod 4.6
Zod 4.6 is now available, with .validate() for boolean validation, .properties() on z.instanceof(), and six more JSON Schema keywords.
020
Colin McDonnell 💎 Zod @colinhacks.com · 13/09/2026
New in Zod 4.6 z.iban() — validates international bank account numbers via regex + ISO 7064 checksum
1190
Colin McDonnell 💎 Zod @colinhacks.com · 13/09/2026
Full Zod 4.6 announcement 👇
zod.dev
Zod 4.6
Zod 4.6 is now available, with .validate() for boolean validation, .properties() on z.instanceof(), and six more JSON Schema keywords.
050
Colin McDonnell 💎 Zod @colinhacks.com · 13/09/2026
New in Zod 4.6 — .validate() Unlike .parse(), this method returns a boolean, aborts early when it encounters the first error, and instantiates no issue objects. It is 13-39x faster than `.safeParse().success` on invalid data.
2350
Colin McDonnell 💎 Zod @colinhacks.com · 13/09/2026
New in Zod 4.6 — z.instanceof().properties() Specify arbitrary property-level validators on z.instanceof() schemas
2350
Colin McDonnell 💎 Zod @colinhacks.com · 12/09/2026
Full post 👇 zod.dev/blog/zod-4-6
zod.dev
Zod 4.6
Zod 4.6 is now available, with .validate() for boolean validation, .properties() on z.instanceof(), and six more JSON Schema keywords.
0112
Colin McDonnell 💎 Zod @colinhacks.com · 12/09/2026
Zod 4.6 is now available! 💎 z.instanceof().properties() 💎 z.iban() 💎 .validate()
2312
Colin McDonnell 💎 Zod @colinhacks.com · 08/08/2026
This works with every supported Node version (auto-polyfilled down to v18.19+). Official V8/Node support is expected in v27. Learn more 👇 nubjs.com/docs/runtime...
nubjs.com
Runtime
What Nub adds when it runs your code on stock Node — TypeScript and JSX with no build step, editor-style resolution, automatic .env loading, data-file imports, and modern globals — plus the…
140
Colin McDonnell 💎 Zod @colinhacks.com · 08/08/2026
It's a Stage 3 proposal championed by @jordan.har.band et. al. github.com/tc39/proposa...
github.com
GitHub - tc39/proposal-await-dictionary: A proposal to add Promise.allKeyed to ECMAScript
A proposal to add Promise.allKeyed to ECMAScript. Contribute to tc39/proposal-await-dictionary development by creating an account on GitHub.
140
Colin McDonnell 💎 Zod @colinhacks.com · 08/08/2026
In the latest version of Nub Support for Promise.allKeyed() and Promise.allSettledKeyed() — the object form of Promise.all()
3272
Colin McDonnell 💎 Zod @colinhacks.com · 05/08/2026
Boron gives you an editor that gives you the power to tweak the ANSI escape codes on a char-by-char basis Also great for hand-designing CLI output for handoff to an agent ✨
030
Colin McDonnell 💎 Zod @colinhacks.com · 05/08/2026
The other tools accept code and handle the syntax highlighting, including "Bash". But for shell screenshots, this rarely looked good.
120
Colin McDonnell 💎 Zod @colinhacks.com · 05/08/2026
Introducing Boron — A WYSIWYG editor for designing beautiful CLI screenshots It's Carbon or ray[dot]so for terminals instead of code blocks 👾 ✅ ANSI colors & styles ✅ richtext copy/paste from terminals ✅ export to png/svg/jpg/webp/text boron.sh
boron.sh
Boron — beautiful images of your terminal
Compose a terminal session, keep its ANSI colors, and export it as an image.
2242
Colin McDonnell 💎 Zod @colinhacks.com · 08/07/2026
everything gets a warm cache. benchmarking warm helps isolate the performance of the linker (how packages get written into node_modules) instead of confounding/diluting results by including network roundtrips, etc
030
Colin McDonnell 💎 Zod @colinhacks.com · 08/07/2026
Nub's actual loader over Node.js is thin and based on battle-tested technology like oxc! that piece of Nub is not going to change much between now and 1.0. the package manager is certainly "more beta"
120
Colin McDonnell 💎 Zod @colinhacks.com · 08/07/2026
this is the culmination of a huge engineering lift to unblock symlink-powered package linkers in JavaScript. writeup below — approachable for people who do not think about package managers in their spare time 😛 nubjs.com/blog/unblock...
nubjs.com
Node’s phantom dependency problem and the path to a 5x faster package manager
One copy of every package per machine, symlinked into every project — and the mechanisms that make that layout work across the ecosystem.
1152
Colin McDonnell 💎 Zod @colinhacks.com · 08/07/2026
Nub's package manager is now 5.5x faster than Bun on our warm install benchmark!
3501
Colin McDonnell 💎 Zod @colinhacks.com · 22/06/2026
Fully supported (in fact the CLI is 100% pnpm compatible and feature complete)
010
Colin McDonnell 💎 Zod @colinhacks.com · 22/06/2026
It uses Aube's engine under the hood! Jeff (@jdx.dev) graciously merged a PR to make it easier for tools like Nub to build on top of Aube github.com/jdx/aube/pul...
github.com
feat: Embedder profile (compile-time pluggability) by colinhacks · Pull Request #862 · jdx/aube
Splitting the original omnibus per your request — this PR is the pluggability foundation only: a compile-time embedder profile that lets a downstream tool drive aube's command layer as its own ...
040
Colin McDonnell 💎 Zod @colinhacks.com · 22/06/2026
Yep! Nub supports versions of Node back to v18.19. It downlevels the syntax on versions that don't support it natively. This is Nub's pattern across all of the modern syntax/APIs it adds:
010
Colin McDonnell 💎 Zod @colinhacks.com · 22/06/2026
Read the docs! 👇 nubjs.com/docs
nubjs.com
Nub — an all-in-one toolkit for Node.js
Nub is a TypeScript-first toolkit for Node.js: run TypeScript files on stock Node, a faster npm run, a pnpm-compatible package manager, and a built-in Node version manager. No lock-in.
040
Colin McDonnell 💎 Zod @colinhacks.com · 22/06/2026
Nub is now in public beta. Lots more on the roadmap, stay tuned! Star/watch the repo! 👇 github.com/nubjs/nub
github.com
GitHub - nubjs/nub: The fast all-in-one Node.js toolkit
The fast all-in-one Node.js toolkit. Contribute to nubjs/nub development by creating an account on GitHub.
150
Colin McDonnell 💎 Zod @colinhacks.com · 22/06/2026
nub pm shim — A built-in package manager shimmer Like `corepack enable`, this registers global shims for npm, yarn, and pnpm. These shims intercept your commands and: - Detect the version used in your project - Install that version if needed - Run the command using the proper version
120
Colin McDonnell 💎 Zod @colinhacks.com · 22/06/2026
Nub detects your existing package manager (via package.json or lockfile) and runs in COMPAT MODE 🔐 reads *and writes* your existing lockfile (roundtrip!) ⚙️ respects your config files (see chart) ⚡️ zero config changes required in 99% of cases (Nub aborts when unsupported config is detected)
110
Colin McDonnell 💎 Zod @colinhacks.com · 22/06/2026
It takes the safest default security posture of any package manager in the ecosystem 🔐 24hr minReleaseAge 🔐 checks OSV for known vulns during resolution (never installs known-bad pkgs) 🔐 blocks postinstall by default 🔐 blocks trust downgrades (e.g. recent versions that lost npm provenance)
240
Colin McDonnell 💎 Zod @colinhacks.com · 22/06/2026
nub install — a fast, secure, incrementally adoptable package manager 🐇 2.7x faster than pnpm (warm install) 🧩 pnpm-compatible CLI (muscle memory) 🌅 powered by the Aube engine (by @jdx.dev)
130
Colin McDonnell 💎 Zod @colinhacks.com · 22/06/2026
nubx — a 19x faster npx 🐇 11ms overhead (vs 200ms+ for npx) 🧩 flag-for-flag compatible with npx ☁️ local-first, falls back to dlx
110
Colin McDonnell 💎 Zod @colinhacks.com · 22/06/2026
nub run — a 24x faster than pnpm run 🐇 14ms overhead vs >300ms (commands feel instantaneous) 🧱 monorepo friendly (-r/--filter) 🧩 flag-for-flag compatible with pnpm run
120
Colin McDonnell 💎 Zod @colinhacks.com · 22/06/2026
And because it uses Node itself under the hood, there are no unexpected behavioral divergences. Here's how it does on Deno's Node.js compatibility test suite:
130
Colin McDonnell 💎 Zod @colinhacks.com · 22/06/2026
The `nub` command is flag-for-flag and var-for-var compatible with `node` (via passthrough, primarily)
110
Colin McDonnell 💎 Zod @colinhacks.com · 22/06/2026
When you run a file, Nub detects your project's Node version, auto-installs it if needed, and runs your code with it (no nvm/fnm needed) — including all the augmentations above It respects (in order) 👉 package.json#devEngines 👉 .node-version 👉 .nvmrc 👉 package.json#engines
130
Colin McDonnell 💎 Zod @colinhacks.com · 22/06/2026
Nub uses these to add Bun's best features on top of stock Node.js ✅ non-erasable TS syntax (e.g. enums) ✅ TS-friendly module resolution (tsconfig-paths, extensionless imports) ✅ JSX ✅ decorators ✅ .env autoloading ✅ yaml/toml imports ✅ `Worker` ✅ `using` ✅ a lot more
2110
Colin McDonnell 💎 Zod @colinhacks.com · 22/06/2026
Node.js now provides a powerful set of extension mechanisms that (mostly) didn't exist when Deno/Bun started: 👉 preload scripts (--import) 👉 module resolution plugins (module.registerHooks) 👉 Node-API native addons
180
Colin McDonnell 💎 Zod @colinhacks.com · 22/06/2026
Introducing Nub. The all-in-one JavaScript toolkit that augments Node.js (instead of trying to replace it)
81019
Colin McDonnell 💎 Zod @colinhacks.com · 16/12/2025
thank you!!
110