npm / inquirer
inquirer
What changed in inquirer 12 to 14, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-17.
9 breaking11 new APIs and options2 behavior and defaults2 tooling31 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initinquirer 1419 changes
Breaking changes 1
Inquirer now throws when it encounters a non-registered prompt instead of defaulting to an input prompt, making broken code easier to detect.
New APIs and options 4
Adds the toggleMask option to reveal password input with ctrl+t.
The search prompt adds the initialValue option.
The useState setter accepts a reducer function that receives the current value and returns the next value; this affects consumers building custom prompts with @inquirer/core.
Set this environment variable to enable vim or emacs keybindings; doing so disables the search feature in the select prompt.
Tooling 1
Prompt and theme types are prettified for better IDE display.
Fixes and other changes 13
Fixed confirm prompts so they always accept y/n.
Fixed whitespace handling in expand prompts.
Fixed whitespace handling in rawlist prompts.
Fixed stale-choice submission in search prompts.
confirm trims surrounding whitespace from answers before matching yes/no keywords.
Keystrokes batched with the key that settles a prompt no longer reach keypress handlers after the prompt is done, cancelled, or aborted.
Published manifests pin @inquirer/type to an exact version, preventing semver-range changes to leaked type definitions from breaking downstream TypeScript builds.
Confirm prompts parse localized yes/no responses.
The confirm prompt handles an explicitly undefined default.
The editor prompt handles an explicitly undefined default.
The number prompt handles an explicitly undefined default.
Floating-point step handling is fixed for the number prompt.
Fixes cursor mispositioning relative to the input when lines wrap.
inquirer 1332 changes
Breaking changes 8
Checked and disabled elements are always included in the returned array.
TypeScript disallows type: 'list' unless a plugin is installed under that name; use select instead.
The
cancel()method on prompt return custom Promises is removed; use an AbortSignal instead.All packages are ESM-only; CommonJS imports are no longer supported.
The
helpModetheme property is removed; usetheme.style.keysHelpTipinstead.The
instructionsconfig property is removed; usetheme.style.keysHelpTipinstead.The
listprompt alias is removed from theinquirerpackage; useselectinstead.Node.js 20 or later is required; versions below 20 are no longer supported.
New APIs and options 5
A new package is available for internationalization.
New theme options make all prompts content localizable.
Choices can have descriptions, displayed under the list when a choice is highlighted.
The search prompt supports default, allowing developers to specify a default value.
rawlist now supports the default option.
Behavior and default changes 2
A loading message is shown while editor prompt input is being validated.
Type inference is improved for checkbox, search and expand prompts.
Tooling 1
Adds end-to-end testing support for CLI applications.
Fixes and other changes 16
Preserves exact literal types in the choices array for TypeScript.
Allows an input default value to be undefined in TypeScript.
Fixes a rendering bug on Windows.
Fixes some Windows terminals freezing and not reacting to keypresses.
Improves type inference for expand prompts.
The editor prompt now properly handles editor paths on Windows.
The cursor can hover disabled list options, but they still cannot be interacted with, preventing confusing cursor jumps.
Keypresses that happen before a prompt is rendered are ignored.
Handles SWC-style module namespace objects.
Numeric default values are now handled correctly by the input prompt.
Auto-mocking now handles barrel re-exports from the prompts package.
Declares @inquirer/* packages as optional peer dependencies.
Prevents artificial line wrapping in test output.
Previous answers are again provided to validate functions as the second argument.
select now infers the return type properly when choices is an array of string literals.
Fixes TypeScript failing to discover types when moduleResolution is set to commonjs.
inquirer 124 changes
New APIs and options 2
Allows passing a Partial type for pre-filled answers.
The @inquirer/input package supports simple RegExp validation with pattern and patternError.
Fixes and other changes 2
Downgraded mute-stream to maintain compatibility with Node 18.
Corrects the typo waitForUseInput to waitForUserInput in @inquirer/editor.