Colin McDonnell ๐Ÿ’Ž Zod

Colin McDonnell ๐Ÿ’Ž Zod

@colinhacks.com

๐Ÿ’Ž Creator of Zod, tRPC (v0) ๐Ÿ”ฎ OSS Fellow @ Clerk ๐Ÿฆ† Friendly neighborhood TypeScript nerd ๐Ÿง‘๐Ÿผโ€๐Ÿ’ป Prev @ Bun, EdgeDB, YC, MIT

5.2K followers226 following231 posts

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.comGitHub - nubjs/package-extensions: Undeclared dependencies across the most-downloaded npm packages, as a packageExtensions database for pnpm and YarnUndeclared dependencies across the most-downloaded npm packages, as a packageExtensions database for pnpm and Yarn - nubjs/package-extensions

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

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

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

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

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.

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.comNodeโ€™s phantom dependency problem and the path to a 5x faster package managerOne copy of every package per machine, symlinked into every project โ€” and the mechanisms that make that layout work across the ecosystem.
View full thread
View full thread

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)

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

View full thread

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)

View full thread
View full thread
View full thread

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

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

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

View full thread
View full thread

It puts control in the hands of the *consuming library*. Given a spec-compliant entity, they can: โ€ข extract a JSON representation of either its input or output type โ€ข control the *draft version* of the produced JSON Schema โ€ข pass library-specific config

wish I'd thought of this 3 days ago ๐Ÿซ 

Pullfrog@pullfrog.com

hello world! we're building the ultimate integration layer between GitHub and your favorite coding agents. coming early 2026. send me a DM containing the ๐Ÿธ emoji to join the waitlist :)