NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #1601 most downloaded on npm
Inquirer prompts, combined in a single package
Last release today
04 Oct 2026
Release timing varies
gaps range from 8 days to 3 months
Most releases are documented
notes for 43 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
117 releases · first in 2023
One column per quarter.
search() no longer submits a stale choice when Enter is pressed while an async search is still loading — the prompt waits for the fresh results, the q
search() no longer submits a stale choice when Enter is pressed while an async search is still loading — the prompt waits for the fresh results, the query is preserved, and repeated Enter presses during validation no longer run the async validator more than once (@inquirer/search, #2291, closes #2290).confirm() now always accepts the single keystrokes y/n even with localized keywords, and unrecognized input no longer silently falls back on the default answer (@inquirer/confirm, #2281, closes #2279).expand() and rawlist() now ignore surrounding whitespace in answers (@inquirer/expand, @inquirer/rawlist, #2280).deno add npm:@inquirer/prompts) alongside the npm/yarn/pnpm/bun ones (#2269).@inquirer/checkbox@^5.2.6@inquirer/confirm@^6.3.3@inquirer/editor@^5.3.4@inquirer/expand@^5.1.6@inquirer/input@^5.1.7@inquirer/number@^4.2.4@inquirer/password@^5.2.3@inquirer/rawlist@^5.3.6@inquirer/search@^4.3.4@inquirer/select@^5.2.6Fixed a race where keystrokes batched in the same tick as the key that settled a prompt could still reach keypress handlers after the prompt was done,
@inquirer/core, #2255, closes #1816).confirm() now trims surrounding whitespace from answers before matching yes/no keywords (@inquirer/confirm, #2254).@inquirer/checkbox@^5.2.5@inquirer/confirm@^6.3.2@inquirer/editor@^5.3.3@inquirer/expand@^5.1.5@inquirer/input@^5.1.6@inquirer/number@^4.2.3@inquirer/password@^5.2.2@inquirer/rawlist@^5.3.5@inquirer/search@^4.3.3@inquirer/select@^5.2.5All bundled prompts now pin @inquirer/type to an exact version in their published manifests. Since these type definitions leak into consumers' tsc run
@inquirer/type to an exact version in their published manifests. 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/checkbox@^5.2.4@inquirer/confirm@^6.3.1@inquirer/editor@^5.3.2@inquirer/expand@^5.1.4@inquirer/input@^5.1.5@inquirer/number@^4.2.2@inquirer/password@^5.2.1@inquirer/rawlist@^5.3.4@inquirer/search@^4.3.2@inquirer/select@^5.2.4password gains the toggleMask option (ctrl+t to reveal the typed value).
password gains the toggleMask option (ctrl+t to reveal the typed value).confirm now matches localized yes/no answers per-locale.inquirer-grouped-checkbox to the community prompts list (#2236).@inquirer/checkbox@^5.2.3@inquirer/confirm@^6.3.0@inquirer/editor@^5.3.1@inquirer/expand@^5.1.3@inquirer/input@^5.1.4@inquirer/number@^4.2.1@inquirer/password@^5.2.0@inquirer/rawlist@^5.3.3@inquirer/search@^4.3.1@inquirer/select@^5.2.3Note: This release depends on @inquirer/core@^12.0.0 , which contains a breaking change to the useState setter type (it now accepts a reducer function…
The all-in-one prompts package, re-exporting every individual prompt at its latest version.
This release rides on @inquirer/core@12.0.0, which makes the useState setter accept a reducer/updater function. It also brings a new initialValue option to search, plus fixes for number, confirm, and editor.
@inquirer/search — new initialValue?: string option to pre-fill the search input (#2205)@inquirer/number — avoid floating-point step errors; accept explicit undefined as default (#2166, #2182)@inquirer/confirm — accept explicit undefined as default (#2182)@inquirer/editor — accept explicit undefined as default (#2182)@inquirer/checkbox@5.2.2@inquirer/confirm@6.2.0@inquirer/editor@5.3.0@inquirer/expand@5.1.2@inquirer/input@5.1.3@inquirer/number@4.2.0@inquirer/password@5.1.2@inquirer/rawlist@5.3.2@inquirer/search@4.3.0@inquirer/select@5.2.2Note: This release depends on
@inquirer/core@^12.0.0, which contains a breaking change to theuseStatesetter type (it now accepts a reducer function). See the@inquirer/core@12.0.0release notes for details.
Fix 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.Feat: Read env variable INQUIRER_KEYBINDINGS to enable vim or emacs keybindings; making this a user preference instead of a library author preference.
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.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 8.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!
chore: Switch wrap-ansi with fast-wrap-ansi
wrap-ansi with fast-wrap-ansifeat(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.useState doesn't require a default value anymore; in which case it'll default to undefineduseRef doesn't require a default value anymore; in which case it'll default to undefinedExamples:
const [value, setValue] = useState<number>();
// value: number | undefined;
const [value, setValue] = useState<number>(1);
// value: number;
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.
usePagination() doesn't return help tips anymore (and also doesn't take a theme argument anymore.) Help tips are now solely the responsibility of prompt implementation.[Node 18 compat] Downgraded to mute-stream@2 to maintain Node 18 compatibility.
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.Select 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
Nothing published for this version
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.Fix number prompt (typescript): If prompt is required, only number can be returned. (previously was nullable)
number prompt (typescript): If prompt is required, only number can be returned. (previously was nullable)Nothing published for this version
Fix an issue where inquirer would throw if Node is ran with the new `--frozen-intrinsics` flag.
--frozen-intrinsics flag.This fix is also released through patches of all specific prompts packages.
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.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Feat: Thrown errors from Inquirer are now all custom (so they can be filtered.) Those errors are exported from the package.
Hoist peer-dependencies to remove warning when using yarn
yarn@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.type Theme, makeTheme)message option isn't transformed by the core anymore - options are now passed through as-is to the prompt.Nothing published for this version
No technical breaking changes; but we changed the style of the question prefix once the answer is provided. Once a question is answer, the prefix beco…
No technical breaking changes; but we changed the style of the question prefix once the answer is provided. Once a question is answer, the prefix becomes a tick mark (previously it was the same ? as when the prompt is idle.)
This is theme-able, and so can be overwritten to with theme.prefix.
usePagination now requires pageSize to be passed in. The size of the pages should inform the help shown on the screen, and keeping this information in 2 areas leave a change the default value will mistmatch.number.transformer option now receive { isFinal } as a flag to allow transforming the final answer differently.name as default message if message isn't provided.password prompt.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Surrounding whitespace in answers is now ignored, so values such as 2 — accidentally typed or piped into the prompt — no longer fail to match ( #2280
@inquirer/rawlist@5.3.5
@inquirer/rawlist@5.3.5
Your coding agent can read these notes before it upgrades. Set up the MCP server →