NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #882 most downloaded on npm
A collection of common interactive command line user interfaces.
Last release today
04 Oct 2026
Release timing varies
gaps range from 8 days to 3 months
Most releases are documented
notes for 47 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
241 releases · first in 2013
Nothing published for this version
The umbrella package, bundling @inquirer/prompts and @inquirer/core .
The umbrella package, bundling @inquirer/prompts and @inquirer/core.
@inquirer/core, #2255, closes #1816).confirm() now trims surrounding whitespace from answers before matching yes/no keywords (@inquirer/confirm, #2254).@inquirer/core@^12.0.3@inquirer/prompts@^8.7.2One column per quarter.
The umbrella package, bundling @inquirer/prompts and @inquirer/core .
The umbrella package, bundling @inquirer/prompts and @inquirer/core.
@inquirer/type to an exact version. Since these type definitions leak into consumers' tsc runs, a semver range on the types-only dependency could break downstream TypeScript builds without any change to Inquirer.js itself (#2247, fixes #2244).@inquirer/core@^12.0.2@inquirer/prompts@^8.7.1@inquirer/type@4.1.1 (pinned exactly)@inquirer/ansi@^2.0.8The umbrella package, bundling @inquirer/prompts and @inquirer/core .
The umbrella package, bundling @inquirer/prompts and @inquirer/core.
@inquirer/prompts@^8.7.0 and @inquirer/core@^12.0.1.toggleMask option for password (ctrl+t to reveal), localized yes/no parsing for confirm, and prettified prompt/theme types for better IDE display.@inquirer/core@^12.0.1@inquirer/prompts@^8.7.0@inquirer/type@^4.1.0@inquirer/ansi@^2.0.7The umbrella package, bundling @inquirer/prompts and @inquirer/core .
The umbrella package, bundling @inquirer/prompts and @inquirer/core.
@inquirer/prompts@^8.6.0 and @inquirer/core@^12.0.0.initialValue option for search, floating-point step fixes for number, and explicit-undefined default handling in number/confirm/editor.@inquirer/core@12inquirer@14.1.0 depends on @inquirer/core@^12.0.0, which changed the useState setter to accept a reducer function (currentValue) => nextValue. This is a type-level change for consumers of the core hook API (relevant if you build custom prompts with @inquirer/core). The built-in prompts are unaffected.
@inquirer/core@^12.0.0@inquirer/prompts@^8.6.0@inquirer/type@^4.0.7@inquirer/ansi@^2.0.7Fix security warnings in external-editor
Rolled back mute-stream dependency from v4 to v3 to undo breaking compatible engines.
mute-stream dependency from v4 to v3 to undo breaking compatible engines.Fix (breaking): Inquirer will now throw when encountering non-registered prompt. Prior to this fix, Inquirer would default to type: 'input' in such ca
type: 'input' in such cases - this behaviour was misleading and made it harder to detect broken code when not using Typescript.INQUIRER_KEYBINDINGS to enable vim or emacs keybindings; making this a user preference instead of a library author preference. One caveat is doing so disable the search feature in the select prompt. Syntax: INQUIRER_KEYBINDINGS=vim,emacs.rxjs dependency in favor of a lightweight internal Observable implementation. The package is much smaller for most users now.Fix: Preserve exact literal types in choices array (Typescript only)
choices array (Typescript only)default value to be of type undefined (Typescript only)Fix: some Windows terminals would freeze and not react to keypresses.
Improve expand prompt type inferrence.
expand prompt type inferrence.Feat: Added a loading message while validating editor prompt input.
editor prompt not always properly handling editor path on windows.Fix broken 1.3.1 release process.
Nothing published for this version
Fix: Keypresses happening before a prompt is rendered are now ignored.
Finally, see our new @inquirer/i18n package!
fix(@inquirer/input): handle numeric default values by @SBoudrias in https://github.com/SBoudrias/Inquirer.js/pull/1978
Full Changelog: https://github.com/SBoudrias/Inquirer.js/compare/inquirer@13.2.2...inquirer@13.2.5
fix(@inquirer/input): handle numeric default values by @SBoudrias in https://github.com/SBoudrias/Inquirer.js/pull/1978
Full Changelog: https://github.com/SBoudrias/Inquirer.js/compare/inquirer@13.2.2...inquirer@13.2.4
chore: Switch wrap-ansi with fast-wrap-ansi
wrap-ansi with fast-wrap-ansi(list was replaced by select and marked as deprecated for a few released, v13.0.0 removed the alias.)
type: 'list' unless there's a plugin installed under that name. (list was replaced by select and marked as deprecated for a few released, v13.0.0 removed the alias.)Regression: previous answers weren't provided to the validate functions as the second arguments.
answers weren't provided to the validate functions as the second arguments.feat(search): Add support for default.
search): Add support for default.rawlist): Add support for description of choices. That information is displayed under the list when the choice is highlighted.Feat: rawlist now supports default option.
rawlist now supports default option.select now infer return type properly when passing a choices array of string literals.Fix Typescript not discovering types when moduleResolution is set to commonjs (you probably want to fix that in your project if it's still in your tsc
moduleResolution is set to commonjs (you probably want to fix that in your project if it's still in your tsconfig)Nothing published for this version
This makes Inquirer smaller and reduces risks of vulnerabilities coming from transitive dependencies.
This is a major release that modernizes the codebase for Node.js ≥ 20.
Impact: All packages are now ESM-only. CommonJS imports are no longer supported.
If you're on modern Node versions (≥ 20), this should be transparent and have no impact.
Minimum Node.js version is now 20.x
Node.js versions below 20 are no longer supported. Please upgrade to Node.js 20 or later.
Node min versions: >=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0
The following deprecated APIs have been removed after being deprecated in previous releases:
list prompt alias removed (affects inquirer package only)The list alias has been removed from the inquirer package. This only impacts users of the legacy inquirer package, not users of @inquirer/prompts or individual prompt packages.
// ❌ No longer available (inquirer package only)
import inquirer from 'inquirer';
const answer = await inquirer.prompt([
{ type: 'list', name: 'choice', message: 'Pick one:', choices: ['a', 'b'] }
]);
// ✅ Use 'select' instead
import inquirer from 'inquirer';
const answer = await inquirer.prompt([
{ type: 'select', name: 'choice', message: 'Pick one:', choices: ['a', 'b'] }
]);
helpMode theme property removed// ❌ No longer available
const answer = await select({
theme: { helpMode: 'never' }
});
// ✅ Use theme.style.keysHelpTip instead
const answer = await select({
theme: {
style: {
keysHelpTip: () => undefined // or your custom styling function
}
}
});
This affects the following prompts:
@inquirer/checkbox@inquirer/search@inquirer/selectinstructions config property removed// ❌ No longer available
const answer = await checkbox({
instructions: 'Custom instructions'
});
// ✅ Use theme.style.keysHelpTip instead
const answer = await checkbox({
theme: {
style: {
keysHelpTip: (text) => 'Custom instructions'
}
}
});
This affects the following prompts:
@inquirer/checkbox@inquirer/search@inquirer/selectcancel() method removedThe cancel() method on prompt return custom Promise has been removed.
// ❌ No longer available
const answerPromise = input({ message: 'Name?' });
answerPromise.cancel();
const answer = await answerPromise;
// ✅ Use AbortSignal instead
const controller = new AbortController();
const answer = await input(
{ message: 'Name?' },
{ signal: controller.signal }
);
controller.abort();
styleTextInternal change: The project now uses Node.js built-in util.styleText() instead of the yoctocolors package for terminal colors. This makes Inquirer smaller and reduces risks of vulnerabilities coming from transitive dependencies.
[Node 18 compat] Downgraded to mute-stream@2 to maintain Node 18 compatibility.
Partial<{ ... }> type as pre-filled answers.feat @inquirer/input: Now support simple RegExp validation with pattern/patternError.
@inquirer/input: Now support simple RegExp validation with pattern/patternError.@inquirer/editor: Fix typo s/waitForUseInput/waitForUserInputNew design for the keys help tip. Themable/localizable with theme.style.keysHelpTip.
theme.style.keysHelpTip.theme.keybindingsReduce number of transitive dependencies
Fix #1834: (rawlist) Allows specifying numbers as explicit keys of option within the list.
fix: Remove "easter-egg" vim/emacs bindings conflicting with the type-to-search feature.
Fix Unix yes not properly being processed by the confirm prompt. (yes | node confirm-script.js)
yes not properly being processed by the confirm prompt. (yes | node confirm-script.js)Make @types/node an optional peer dependency.
@types/node an optional peer dependency.Replace external-editor dependency with new @inquirer/external-editor. This remove the vulnerable tmp transitive dependency from the dependency tree.
external-editor dependency with new @inquirer/external-editor. This remove the vulnerable tmp transitive dependency from the dependency tree.Search prompt: New instructions config to allow localizing the help tips.
instructions config to allow localizing the help tips.Fix #1786 select prompt with indexMode: number theme option didn't properly calculate the items indexes if separators where present in between choices
indexMode: number theme option didn't properly calculate the items indexes if separators where present in between choices.Fixes: a transitive dependency (run-aysnc) loaded devDependencies unexpectedly. This is now fixed upstream. Rel #1791
run-aysnc) loaded devDependencies unexpectedly. This is now fixed upstream. Rel #1791Select prompt: When pressing a number key, we'll ignore separators in counting the index of the item to jump to.
-input prompt: New prefill option to control if the default value is editable inline or only after pressing tab.
-input prompt: New prefill option to control if the default value is editable inline or only after pressing tab.
Fix #1743: pagination logic of the select, checkbox and search prompts was fully rewritten to handle edge cases around rendering multi-line choices an
select, checkbox and search prompts was fully rewritten to handle edge cases around rendering multi-line choices and pointer positioning.Nothing published for this version
Fix #1741: Issue with SIGINT in some scenarios leaving promises unsettled on exit.
npm. This removes non-standard version specifiers like workspace:* from the public npm packages.Feat(@inquirer/select): Added an instructions option allowing to customize the messages in the help tips.
instructions option allowing to customize the messages in the help tips.@inquirer/select prompt. Also added a loop option to control the list loop behaviour when reaching the boundaries.- README: Add new sponsor - Chore: dependency updates
Nothing published for this version
Feat (select): Introduce theme.indexMode to control displaying an index prefix in front of each choice. (defaults to hidden)
select): Introduce theme.indexMode to control displaying an index prefix in front of each choice. (defaults to hidden)select): Improve search when number keys are pressedFix an issue where inquirer would throw if Node is ran with the new `--frozen-intrinsics` flag.
--frozen-intrinsics flag.Nothing published for this version
Mark @types/node as an optional peer dependency across all packages.
@types/node as an optional peer dependency across all packages.Added new shortcut config to the checkbox prompt. Allows to customize or disable shortcut keys for select all and invert selection.
shortcut config to the checkbox prompt. Allows to customize or disable shortcut keys for select all and invert selection.Replace 3rd party dependency strip-ansi in favour of Node built-in `stripVTControlCharacters` util.
strip-ansi in favour of Node built-in stripVTControlCharacters util.Nothing published for this version
Nothing published for this version
This is a legacy interface brought back given this feature removal was an involuntary breaking change during the v12 release. The preferred interface…
default to be provided listing pre-checked checkboxes. This is a legacy interface brought back given this feature removal was an involuntary breaking change during the v12 release. The preferred interface is to provide the checked property to choices { value: 'bar', checked: true }.Nothing published for this version
Nothing published for this version
Nothing published for this version
@types/node is now only a peerDependencies. This reduces the install size of inquirer dramatically for folks not using Typescript. It's unlikely to br
@types/node is now only a peerDependencies. This reduces the install size of inquirer dramatically for folks not using Typescript. It's unlikely to break your builds if you used TS already, if it does run npm install --dev @types/node/yarn add --dev @types/node.Feat: KeypressEvents now register shift keys.
shift keys.import type { Question, DistinctQuestion, Answers } from 'inquirer';You should use as follow to keep the inference working properly:
const questions = [
{ ... }
] as const satisfies Question[];
// If you're not using inquirer plugins, `Question` could alternatively be replaced by `DistinctQuestion` for stricter checks.
Fix #1555: when behaviour changed unexpectedly when returning a falsy value.
when behaviour changed unexpectedly when returning a falsy value.Your coding agent can read these notes before it upgrades. Set up the MCP server →