npm / zx
zx
What changed in zx 5 to 8, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-23.
8 breaking1 security15 new APIs and options1 performance3 behavior and defaults3 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initzx 823 changes
Breaking changes 5
The experimental toggle was removed; all APIs are available by default.
The exported ps utility provides process-tree queries, including recursive traversal.
The ssh API was dropped; install the webpod package instead.
Process cwd synchronization between $ invocations is disabled by default; call syncProcessCwd to restore the legacy behavior.
On Windows, zx no longer looks for powershell by default; call usePowerShell to enable it.
Security 1
zx Uses Incorrectly-Resolved Name or Reference
New APIs and options 10
Pass an AbortController through the ac option to abort command execution; a default instance is used when none is specified.
The input option passes data to a command, including strings, streams, buffers, or another process promise.
The exported kill method terminates a process, including processes not started by zx.
The minimist API is exposed for parsing command-line arguments.
The postfix option appends text to the end of a command, for example to support PowerShell compatibility.
ProcessPromise.valueOf() simplifies value comparisons.
PromiseResponse exposes an abort trigger for stopping command execution.
The internal spawnSync API can be overridden, for example to implement pools or test mocking.
The new synchronous API runs a command and exposes its output.
The refactored zx core is available as a separate package, enabling options presets.
Performance 1
Custom esbuild plugins and dts-bundle-generator produce bundled JavaScript and typings; the package is approximately 20 times smaller, reducing installation time.
Behavior and default changes 3
Duration parsing now supports minutes.
Stack extraction was enhanced to support bun.
$.verbose is false by default; errors are still printed to stderr. Set $.quiet to true to suppress all output.
Fixes and other changes 3
Fixes an issue where zx flushes external node_modules when linking.
The package-name pattern used in install mode is fixed, allowing scoped package entry paths.
A spinner issue on unusual TTYs was fixed.
zx 74 changes
New APIs and options 4
echo() is now included out of the box.
Adds support for the --eval flag.
Adds REPL support.
Adds the within() API for async contexts.
zx 54 changes
Breaking changes 3
The CommonJS version is no longer built.
The minimum required Node.js version is 16.0.0.
The zx bin no longer supports the .ts extension; TypeScript can still be run via ts-node.
New APIs and options 1
The YAML package was added, allowing scripts to parse YAML with YAML.parse.