npm / @clack/core
@clack/core
What changed in @clack/core 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-20.
5 breaking21 new APIs and options4 behavior and defaults11 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@clack/core 141 changes
Breaking changes 5
The unused debug option key was removed.
The engines field now expresses a Node.js requirement of >=20.12.
The package is now distributed as ESM-only; existing CommonJS projects may need to use Node’s ESM loading support.
Placeholders are visual hints rather than tabbable values; pressing enter on an empty prompt now treats a placeholder value as the prompt value.
The suggestion prompt is removed.
New APIs and options 21
Prompts can opt into accessible mode individually through PromptOptions; the resolved Prompt getter and isAccessible() setting resolve in order from per-prompt option to updateSettings({ accessible }) to ACCESSIBLE.
Prompts support asynchronous validation.
The opt-in completeOnTab option lets Tab fill the input with the focused suggestion and adds a “Tab: complete” footer hint; the path prompt supports tab-completion, while default autocomplete behavior is unchanged.
Exports the CANCEL_SYMBOL constant from @clack/core and @clack/prompts.
A new multiline prompt supports multi-line text input.
Adds a placeholder option; when the input is empty, pressing tab sets the value to the placeholder.
Adds a date prompt with format support for YMD, MDY, and DMY.
Adds an autocomplete prompt component.
Adds an autocomplete multi-select prompt component.
Adds an autocomplete prompt to core.
Adds a caseSensitive option to select-key.
The password prompt can clear input automatically when validation fails.
The multi-select prompt supports inverting the selection.
Prompts support custom writable output streams.
Select and multi-select prompts allow disabled options.
The group multi-select prompt can disable selecting top-level groups while leaving child options selectable.
Spinner instances can customize their cancel message.
Spinner instances can customize their error message.
Global spinner cancel and error messages can be customized through updateSettings.
Prompts now store user input separately from their value.
All prompts gain an option to disable the default Clack border.
Behavior and default changes 4
Text prompts render validation state.
Prompts’ optional validate() function now accepts libraries following the Standard Schema specification, enabling shorthand, type-strict schema-based validation.
Autocomplete and select prompts support wrapping.
The path prompt changes to be an autocomplete prompt.
Fixes and other changes 11
Prompt return types now specify CANCEL_SYMBOL instead of the broader symbol type.
Prompts and utilities now handle empty arrays.
The prompt submits only when double-return happens at the end of input.
The initial value is used as the initial user input.
When there is initial input, the cursor is placed at the end.
An empty submission now resolves to "" instead of undefined, matching the text prompt behavior and documented return type.
Fixed spaces and uppercase characters in multiline prompt.
Fixes line wrapping and overflow computation in group multi-select and other list-like prompts.
The default filter is applied only when explicitly set or when options is not a getter.
Disabled options can no longer be selected in autocomplete.
Text prompts validate initial values immediately when both initialValue and validate props are provided.