# What changed in inquirer

> 55 changes in inquirer 12 to 14 from its official release notes, upgrade guides and advisories: 9 breaking, 11 new APIs and options. Each one cited. Sources checked 2026-10-17. HTML: https://unstale.sh/npm/inquirer/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## inquirer 14

### Breaking changes

- Inquirer now throws when it encounters a non-registered prompt instead of defaulting to an input prompt, making broken code easier to detect. (14.0.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4014.0.0)

### New APIs and options

- Adds the toggleMask option to reveal password input with ctrl+t. (14.2.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4014.2.0)
- The search prompt adds the initialValue option. (14.1.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4014.1.0)
- 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. (14.1.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4014.1.0)
- Set this environment variable to enable vim or emacs keybindings; doing so disables the search feature in the select prompt. (14.0.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4014.0.0)

### Tooling

- Prompt and theme types are prettified for better IDE display. (14.2.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4014.2.0)

### Fixes and other changes

- Fixed confirm prompts so they always accept y/n. (14.2.3) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4014.2.3)
- Fixed whitespace handling in expand prompts. (14.2.3) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4014.2.3)
- Fixed whitespace handling in rawlist prompts. (14.2.3) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4014.2.3)
- Fixed stale-choice submission in search prompts. (14.2.3) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4014.2.3)
- confirm trims surrounding whitespace from answers before matching yes/no keywords. (14.2.2) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4014.2.2)
- Keystrokes batched with the key that settles a prompt no longer reach keypress handlers after the prompt is done, cancelled, or aborted. (14.2.2) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4014.2.2)
- Published manifests pin @inquirer/type to an exact version, preventing semver-range changes to leaked type definitions from breaking downstream TypeScript builds. (14.2.1) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4014.2.1)
- Confirm prompts parse localized yes/no responses. (14.2.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4014.2.0)
- The confirm prompt handles an explicitly undefined default. (14.1.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4014.1.0)
- The editor prompt handles an explicitly undefined default. (14.1.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4014.1.0)
- The number prompt handles an explicitly undefined default. (14.1.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4014.1.0)
- Floating-point step handling is fixed for the number prompt. (14.1.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4014.1.0)
- Fixes cursor mispositioning relative to the input when lines wrap. (14.0.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4014.0.0)

## inquirer 13

### Breaking changes

- Checked and disabled elements are always included in the returned array. (13.3.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.3.0)
- TypeScript disallows type: 'list' unless a plugin is installed under that name; use select instead. (13.2.2) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.2.2)
- The `cancel()` method on prompt return custom Promises is removed; use an AbortSignal instead. (13.0.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.0.0)
- All packages are ESM-only; CommonJS imports are no longer supported. (13.0.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.0.0)
- The `helpMode` theme property is removed; use `theme.style.keysHelpTip` instead. (13.0.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.0.0)
- The `instructions` config property is removed; use `theme.style.keysHelpTip` instead. (13.0.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.0.0)
- The `list` prompt alias is removed from the `inquirer` package; use `select` instead. (13.0.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.0.0)
- Node.js 20 or later is required; versions below 20 are no longer supported. (13.0.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.0.0)

### New APIs and options

- A new package is available for internationalization. (13.3.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.3.0)
- New theme options make all prompts content localizable. (13.3.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.3.0)
- Choices can have descriptions, displayed under the list when a choice is highlighted. (13.2.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.2.0)
- The search prompt supports default, allowing developers to specify a default value. (13.2.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.2.0)
- rawlist now supports the default option. (13.1.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.1.0)

### Behavior and default changes

- A loading message is shown while editor prompt input is being validated. (13.4.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.4.0)
- Type inference is improved for checkbox, search and expand prompts. (13.4.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.4.0)

### Tooling

- Adds end-to-end testing support for CLI applications. (13.2.4) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.2.5), [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.2.4)

### Fixes and other changes

- Preserves exact literal types in the choices array for TypeScript. (13.4.3) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.4.3)
- Allows an input default value to be undefined in TypeScript. (13.4.3) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.4.3)
- Fixes a rendering bug on Windows. (13.4.3) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.4.3)
- Fixes some Windows terminals freezing and not reacting to keypresses. (13.4.2) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.4.2)
- Improves type inference for expand prompts. (13.4.1) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.4.1)
- The editor prompt now properly handles editor paths on Windows. (13.4.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.4.0)
- The cursor can hover disabled list options, but they still cannot be interacted with, preventing confusing cursor jumps. (13.3.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.3.0)
- Keypresses that happen before a prompt is rendered are ignored. (13.3.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.3.0)
- Handles SWC-style module namespace objects. (13.2.5) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.2.5)
- Numeric default values are now handled correctly by the input prompt. (13.2.4) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.2.5), [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.2.4)
- Auto-mocking now handles barrel re-exports from the prompts package. (13.2.4) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.2.5), [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.2.4)
- Declares @inquirer/* packages as optional peer dependencies. (13.2.4) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.2.5), [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.2.4)
- Prevents artificial line wrapping in test output. (13.2.4) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.2.5), [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.2.4)
- Previous answers are again provided to validate functions as the second argument. (13.2.1) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.2.1)
- select now infers the return type properly when choices is an array of string literals. (13.1.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.1.0)
- Fixes TypeScript failing to discover types when moduleResolution is set to commonjs. (13.0.2) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4013.0.2)

## inquirer 12

### New APIs and options

- Allows passing a Partial type for pre-filled answers. (12.11.1) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4012.11.1)
- The @inquirer/input package supports simple RegExp validation with pattern and patternError. (12.11.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4012.11.0)

### Fixes and other changes

- Downgraded mute-stream to maintain compatibility with Node 18. (12.11.1) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4012.11.1)
- Corrects the typo waitForUseInput to waitForUserInput in @inquirer/editor. (12.11.0) — [release notes](https://github.com/SBoudrias/Inquirer.js/releases/tag/inquirer%4012.11.0)
