// the find
SBoudrias/Inquirer.js
A collection of common interactive command line user interfaces.
Inquirer.js is the standard library for interactive CLI prompts in Node.js — input, select, checkbox, password, and friends. It was fully rewritten into a monorepo of small focused packages, each async/await-native. If you're building a CLI tool in JavaScript/TypeScript, you're probably already using this or something that depends on it.
The rewrite to individual packages (input, select, checkbox, etc.) means you can install only what you need instead of pulling in a kitchen sink. The `@inquirer/core` API for building custom prompts is clean — it exposes React-like hooks (useState, useEffect, useKeypress) so the mental model is familiar. AbortSignal support for cancellable prompts is a real feature, not an afterthought, and the timeout recipe in the docs actually works. The `@inquirer/testing` package gives you a proper way to write unit tests against prompts without mocking stdin yourself.
The migration from the old `inquirer` package is a breaking change with no automated path — the old package still exists under `packages/inquirer` as a legacy wrapper, which will confuse anyone who finds v8/v9 blog posts. The `ctrl+c` behavior rejects the promise instead of resolving to undefined, which prints a stack trace unless you explicitly catch ExitPromptError — that's a bad default for CLI tools where Ctrl+C is a normal exit gesture. The i18n package only covers 5 built-in locales and the API for adding custom ones requires wrapping every prompt call through a factory, which is awkward. There's no built-in way to render prompts in parallel or as a form — you sequence everything with await, so multi-field forms with validation dependencies get verbose fast.