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 11 days ago
07 Sep 2026
Release timing varies
gaps range from 8 days to 3 months
Most releases are documented
notes for 42 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
116 releases · first in 2023
One column per quarter.
@inquirer/core bumped to ^12.0.1
@inquirer/core bumped to ^12.0.1@inquirer/type bumped to ^4.1.0No source changes.
@inquirer/core bumped to ^12.0.0
@inquirer/core bumped to ^12.0.0No source changes.
Nothing published for this version
Now includes a search prompt. import { search } from @inquirer/prompts
search prompt. import { search } from @inquirer/prompts@inquirer/password@5.2.1
@inquirer/password@5.2.1
feat: Add support for description of choices. That information is displayed under the list when the choice is highlighted.
description of choices. That information is displayed under the list when the choice is highlighted.toggleMask option to temporarily reveal the typed value with ctrl+t, with a themed, i18n-able help tip for discoverability. Defaults to true; set to false to disable both the shortcut and its help line.@inquirer/core bumped to ^12.0.1@inquirer/type bumped to ^4.1.0@inquirer/core bumped to ^12.0.0
@inquirer/core bumped to ^12.0.0No source changes.
@inquirer/core bumped to ^12.0.0
@inquirer/core bumped to ^12.0.0No source changes.
Nothing published for this version
Feat: Added a loading message while validating input. Customizable through a theme option.
transformer option to the input prompt allowing you to modify the displayed user input. (Useful to modify colors as user type, etc)Replace chalk with ~picolors~ (in 5.1.0 went to yoctocolors to stay with Sindre's packages and reduce amount of provenance.)
chalk with ~picolors~ (in 5.1.0 went to yoctocolors to stay with Sindre's packages and reduce amount of provenance.)Nothing published for this version
Nothing published for this version
Nothing published for this version
Fix: Return type when using a list of string as choices.
choices.Nothing published for this version
Fix: breaking change wrongly removed the Separator export.
Separator export.useEffect body. See #1307This decision was made to disambiguate what breaks in each package - with prompts re-exporting core, any core breaking change (no matter how minor) ca…
@inquirer/core isn't exported from @inquirer/prompts anymore. If you want to create custom prompts, import from the core package. This decision was made to disambiguate what breaks in each package - with prompts re-exporting core, any core breaking change (no matter how minor) caused a major version bump. Now only prompts interfaces breaking changes will be major on prompts. We're hoping this will simplify your usage of @inquirer/* packages.validate config; but it was rarely used. It's been removed and prompts relying on it are expected to handle it on their own (no default value.) The types were updated accordingly and will raise issue if you're using typescript.AsyncPromptConfig, it's been deprecated in favour of PromptConfig- import type { AsyncPromptConfig } from '@inquirer/core';
+ import type { PromptConfig } from '@inquirer/core';
- type Config = AsyncPromptConfig & { custom: 'value' };
+ type Config = PromptConfig<{ custom: 'value' }>;
Note: Old interface works for now, but is marked as deprecated.
Breaking: Upgrade to RxJS v5 which updates a bunch of Reactive interface method names.
For people not using the Reactive interface directly, this new major release should just work out of the box.
On windows, we will now use unicode characters whenever possible
Performance improvements (less flickering mainly noticeable on select/checkbox)
Fix #1786 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.@inquirer/core bumped to ^12.0.1@inquirer/type bumped to ^4.1.0No source changes.
feat @inquirer/input: Now support simple RegExp validation with pattern/patternError.
@inquirer/input: Now support simple RegExp validation with pattern/patternError.theme.style.keysHelpTip.theme.keybindingscheckedName that'll replace the default name once checked.initialValue?: string option to pre-fill the search input (#2205)@inquirer/core bumped to ^12.0.0@inquirer/figures bumped to ^2.0.8Bugfix: When relying on asynchronous validation, the loader icon was broken.
@inquirer/core bumped to ^12.0.1@inquirer/type bumped to ^4.1.0No source changes.
When pressing a number key, we'll ignore separators in counting the index of the item to select.
prefill option to control if the default value is editable inline or only after pressing tab.instructions option allowing to customize the messages in the help tips.validationFailureMode: 'keep' | 'clear' to control the behaviour when validation fails.undefined as the default value (#2182)@inquirer/core bumped to ^12.0.0- feat: Add support for default.
default.@inquirer/select prompt. Also added a loop option to control the list loop behaviour when reaching the boundaries.theme.indexMode to control displaying an index prefix in front of each choice. (defaults to hidden)shortcut config. Allows to customize or disable shortcut keys for select all and invert selection.validationFailureMode: 'keep' | 'clear' to control the behaviour when validation fails.file option covering all options supported by external-editor.Prettify is now recursive, so makeTheme returns a fully flattened theme type (nested style intersections merged into one object) for better IDE display (#2239).All prompts are now themable. See each prompts documentation about the options available.
message option of each prompt must now be a string. It could previously be an asynchronous function. See recipes for a migration option.Major rewrite of the core to rely on node's async hooks for better isolation of each prompts. Relying on this means each prompt context is fully isolated (previously it would rely on the module level context.)
We expect this update to be transparent to most. Though some custom event handlers within useEffect could stop working. If you find any issues there, first please let us know - there might be thing to improve internally to make it transparent. The manual fix will likely be to explicitly define events callback as an AsyncResource.
Let us know how this works for you!
The core codebase went through a major es5 to 6 refactor. As such, we're dropping support for Node 4.
This change will likely require changes to the community Plugins as es6 classes are enforcing more restriction (like constructor can only be invoked with new).
list, expand and rawlist prompts now accepts the value as default (previously it would only accept the choice index).Nothing published for this version
Nothing published for this version
Feat: Unit test API now exposes an await nextRender() utility to wait until a render event occurs. Useful to replace manual await Promise.resolve() or
await nextRender() utility to wait until a render event occurs. Useful to replace manual await Promise.resolve() or timeouts when waiting for an async action (like validation, etc) to complete.prefix and suffix options to question object to allow you to edit the ? prefix or add a custom suffix.fix: e2e testing utility now gracefully fail if a dependency isn't in the dependency tree (useful for things like strict Yarn PnP)
{ default: fn() }theme.style.keysHelpTip.theme.keybindingsdefault handling:
Fix bug where a setState call triggered from useEffect might re-render the screen with the previous state.
setState call triggered from useEffect might re-render the screen with the previous state.Fix: There was an issue with ESM/CJS imports interoperability that should now be fixed. Ref #1297
Feature: New end-to-end testing utilities: @inquirer/testing/vitest & @inquirer/testing/jest. View documentation.
@inquirer/testing/vitest & @inquirer/testing/jest. View documentation.password prompt can now rendered hidden input (Unix style)filter function now also receive the current answers as argumentFix extra whitespace being printed #506
Fix extra whitespace being printed #506
fix: preserve Value type inference in render()
render()Properly reset the prompt state when a SIGINT signal is emitted. (this fix bug where texts under the input wouldn't be cleared off the terminal after
Nothing published for this version
Tried to maintain backward compatibility as best as possible, but there could be type issue surface. Legacy API marked as deprecated.
Rewrite internals to support a clean promise API. Tried to maintain backward compatibility as best as possible, but there could be type issue surface. Legacy API marked as deprecated.
@inquirer/core.Paginator is deprecated in favour of the usePagination hook. This hook will always properly reflect the width of the output stream.Fix bug where Common.js Typescript types definition were broken (should have no impact on ESM users)
Fix bug where Common.js Typescript types definition were broken (should have no impact on ESM users)
Add support for Separator in the choices array.
Separator in the choices array.@inquirer/core@9.1.0 adding support for { signal: AbortSignal } in the context options to programatically cancel a prompt.[Typescript] value is now generic and will be inferred from the values passed in.
value is now generic and will be inferred from the values passed in.key in the choice array.@inquirer/core@9.1.0 adding support for { signal: AbortSignal } in the context options to programatically cancel a prompt.useState), it'll only re-renders if the value changed.If you're setting multiple state in a callback from an async function (like setTimeout or a network call), those will not be merged in a single re-renders. For those case, you're better using a state object holding all values to reduce the amount of re-renders. Open to discuss this in #1251
Bugfix: Cursor position when no value/default value is rendered.
@inquirer/select now support search when typing letters (aiming to imitate how the HTML search works)
@inquirer/select now support search when typing letters (aiming to imitate how the HTML <select> search works)getFullOutput() utility that'll return a raw string of everything that was written to the output streamuseEffect now pass the active Readline instance to the effect callback. e.g useEffect((readline) => ...
This shouldn't cause issue for most, but if you had specific or uncommon use of the testing framework, this could be a breaking change.
Rewrote how raw input is handled. This shouldn't cause issue for most, but if you had specific or uncommon use of the testing framework, this could be a breaking change.
Major refactor of the core to allow multiple features:
input(...).cancel())Now includes a stricter answer parser. Prior to this change, the prompt would default to Yes on almost any input.
name with . are now expand in the answer object. e.g. name.sub would generate an answer object formatted as {name: {sub: 'answer'}}.expand prompt default value if not specified is now help.Fix bug with editor prompt #442
editor prompt #442Nothing published for this version
Nothing published for this version
Now exposes the waitForUserInput option. Setting it to false will automatically launch the editor.
Now exposes the waitForUserInput option. Setting it to false will automatically launch the editor.
Be careful using this option as this mean the user will not have read the question/instruction before reaching the editor.
a and i keys to trigger select all and invert selection.editor prompt is now non blocking.filter functions are now surfaced to the user.Nothing published for this version
Fix bug where options passed to Inquirer were mutated.
Fix list prompts being re-render each time enter key was pressed.
Search now support autocomplete like behaviours - See documentation
@inquirer/core@9.1.0 adding support for { signal: AbortSignal } in the context options to programatically cancel a prompt.editor prompt to launch an editor allowing to easily enter multiline content - or edit file content.Allow falsy values as option value in expand prompt.
value in expand prompt.Release tooling package.
package pin <dependency> command rewrites caret/tilde ranges to exact versions across public packages; the release pipeline uses it to pin @inquirer/type in published manifests (#2247).package normalize command applies the fixups required to make manifests valid for npm publishing. It replaces the inline jq step that stripped workspace:* devDependencies (byte-identical output, now also covering the published tools/* packages).index.ts + command.ts, tests colocated); bin.ts only assembles the CLI.Fix issue where vim/emacs keybindings would conflict with the search term input when typing letters used to navigate through the list.
Fix issue where vim/emacs keybindings would conflict with the search term input when typing letters used to navigate through the list.
expand prompt to correctly use the value key as the prompt answer.expand prompt support the filter key.Make @types/node an optional peer dependency.
@types/node an optional peer dependency.Fix issue where typing would disallow the following
search({
...,
source: async (term: string = '') => {
...
},
});
space key instead of any keys.readline2 in favor of Node core version. This might fix some edge cases some users on windows encountered.Drop-in replacement for @inquirer/prompts with localized text.
New package - first release!
Drop-in replacement for @inquirer/prompts with localized text.
The whole inquirer API is now based on promises!
inquirer.prompt(questions).then(). There's no more callback function.this.async().filter is now always run before validate #122inquirer.prompt doesn't take a callback argument anymoreAnd various other minor fixes and cleanup to the code base.
Your coding agent can read these notes before it upgrades. Set up the MCP server →