unstale

npm / execa

execa

What changed in execa 9 to 10, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-17.

11 breaking2 new APIs and options1 behavior and defaults1 tooling34 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.1.1 on npm

execa 1048 changes

Breaking changes 11

  • Wrong-typed options and arguments are no longer silently ignored or coerced.

    10.1.1release notes

  • Synchronous methods now throw when the signal option is used, matching asynchronous methods.

    10.1.0release notes

  • Using the same file as input and output now throws even when the paths are written differently.

    10.1.0release notes

  • This function was removed; use template string syntax instead, or parse a dynamic command string with parseCommandString().

    10.0.0release notes

  • This function was removed; use template string syntax instead, or parse a dynamic command string with parseCommandString().

    10.0.0release notes

  • When combined with inherited stdin, explicit input is now used instead of ignored.

    10.0.0release notes

  • When combined with inherited stdin, explicit input is now used instead of ignored.

    10.0.0release notes

  • Node.js 22 is now required to use execa.

    10.0.0release notes

  • The undocumented stdio: [..., 'ipc'] syntax was removed; use the ipc: true option instead.

    10.0.0release notes

  • The subprocess is now a normal promise rather than a ChildProcess instance augmented with promise methods; documented Execa methods and properties are unchanged.

    10.0.0release notes

  • Access Node.js-specific ChildProcess APIs such as .on(), .send(), .ref() and .unref() through this property.

    10.0.0release notes

New APIs and options 2

  • Use this option to terminate subprocess descendant processes, including processes spawned by a subprocess using the shell option.

    10.0.0release notes

  • An additional file descriptor can be used as input by wrapping its stdio value in a {value, input: true} object; ambiguous values default to output on additional descriptors.

    10.0.0release notes

Behavior and default changes 1

  • The value returned by subprocess.pipe() now exposes the destination subprocess' methods, enabling direct output iteration, stream conversion, and IPC messaging.

    10.0.0release notes

Tooling 1

  • The transform generator's chunk argument is typed by transform mode: string for line transforms, Uint8Array for binary transforms, and unknown in object mode.

    10.0.0release notes

Fixes and other changes 33

  • Fixes errors and early error edge cases.

    10.1.1release notes

  • Fixes argument quoting when using the shell option.

    10.1.1release notes

  • Fixes missing IPC in the types for execaNode().

    10.1.1release notes

  • Fixes execaNode() edge cases.

    10.1.1release notes

  • Fixes handling of invalid forceKillAfterDelay values.

    10.1.1release notes

  • Fixes IPC edge cases.

    10.1.1release notes

  • Fixes missing IPC in the types for the node option.

    10.1.1release notes

  • Fixes parseCommandString() edge cases.

    10.1.1release notes

  • Fixes edge cases in .pipe() and stream conversion.

    10.1.1release notes

  • Fixes result.all edge cases.

    10.1.1release notes

  • Fixes edge cases involving stdin iterables and input transforms.

    10.1.1release notes

  • Fixes template string edge cases.

    10.1.1release notes

  • Fixes handling of invalid timeout values.

    10.1.1release notes

  • Fixes argument quoting when using the shell option.

    10.1.1release notes

  • Fixes color output when stderr is not a terminal.

    10.1.1release notes

  • On Windows, arguments are escaped like Rust does, fixing batch files that read %~1.

    10.1.0release notes

  • These fields are no longer undefined when synchronous methods fail to spawn.

    10.1.0release notes

  • Fixes the encoding option and line splitting in transforms.

    10.1.0release notes

  • Synchronous methods now write raw output bytes to files, matching asynchronous methods.

    10.1.0release notes

  • Fixes input and output transforms with synchronous methods.

    10.1.0release notes

  • Fixes IPC with JSON serialization, strict mode, and the verbose option.

    10.1.0release notes

  • On Windows, killDescendants no longer signals unrelated processes.

    10.1.0release notes

  • Fixes results when only some file descriptors are buffered or split into lines.

    10.1.0release notes

  • Fixes small shebang scripts on Windows.

    10.1.0release notes

  • The subprocess error is no longer hidden when the current directory has been deleted.

    10.1.0release notes

  • The subprocess promise no longer hangs until an output stream is read.

    10.1.0release notes

  • Spawning no longer crashes when it fails with EMFILE or ENFILE, or when a file target cannot be opened.

    10.1.0release notes

  • Calling subprocess.kill() after a spawn failure no longer signals the current process group.

    10.1.0release notes

  • Fixes piping with the stdio option and destination subprocesses being left running.

    10.1.0release notes

  • Fixes template strings containing emojis and line continuations.

    10.1.0release notes

  • Fixes an argument escaping edge case on Windows when using preferLocal.

    10.0.1release notes

  • fd-specific options such as maxBuffer now work when ipc is true because fd3 and IPC no longer target the same file descriptor.

    10.0.0release notes

  • fd-specific options such as verbose now work when ipc is true because fd3 and IPC no longer target the same file descriptor.

    10.0.0release notes

execa 91 changes

Fixes and other changes 1

  • Fixes the type export so developers can import VerboseOption.

    9.6.1release notes