Ora is a Node.js utility for showing an elegant animated terminal spinner with customizable text, color, spinner style, and output stream (by default, process.stderr). It’s useful for CLI apps to provide responsive progress feedback while work is running, including helpers like oraPromise to automatically mark success or failure.
Project status
- Actively maintained, with the most recent upstream push on 2026-06-22 and follow-up updates as recently as 2026-06-22 (v9.4.1) and 2026-04-22 (v9.4.0).
- Apparent update cadence is fairly steady in 2026, with updates at roughly 1 to 2 month intervals (v9.4.1 on 2026-06-22, v9.4.0 on 2026-04-22, v9.3.0 and v9.2.0 on 2026-02-05 and 2026-02-04).
AI summary generated
Recent updates
v9.4.1
v9.4.1 is a small patch release with a release-note claim of “Fix type definitions” only. However, the actual changes include both TypeScript surface updates and runtime behavior adjustments around empty text handling and nullish inputs for oraPromise.
v9.4.0
v9.4.0 adds `successSymbol` and `failSymbol` options to `oraPromise`, allowing callers to customize or disable the resolved and rejected symbols. The implementation also introduces stricter runtime validation for the `interval` and `color` options in the main `ora` spinner.
Featuresv9.3.0
v9.3.0 focuses on reducing flicker during spinner rendering. The implementation changes how output is written to TTY streams by temporarily enabling terminal synchronized output mode around each render cycle.
v9.2.0
v9.2.0 primarily updates the `stdin-discarder` dependency used by `ora`. The only functional code-related change in this release is the dependency version bump in `package.json`.
v9.1.0
ora v9.1.0 adds support for writing to the same stream (for example, console.log, console.error, console.warn) while a spinner is running, so the spinner can clear, print the message, and re-render cleanly. It also replaces the strip-ansi dependency with Node's native stripVTControlCharacters.
Featuresv9.0.0
ora v9.0.0 requires Node.js 20 and includes fixes around clearing, frame rendering, and handling multiline output that exceeds terminal height. The code changes also introduce stricter validation for custom spinner objects and adjust internal prefix/suffix handling during line-count computation.
Breakingv8.2.0
v8.2.0 adds support for using a boolean value with the `color` option. The release notes only mention this change. The code diff shows corresponding updates to TypeScript types and the README to reflect the new accepted type.
Featuresv8.1.1
v8.1.1 contains two targeted bug fixes related to spinner rendering: throttling frame updates when render/update is called very frequently, and correctly handling an empty string symbol during persistence. The code changes are small but include internal timing state and an adjustment to how spacing is computed when the symbol is empty.
v8.1.0
v8.1.0 is described in the release notes only as a dependency update. The code diff shows mostly dependency version bumps plus documentation and type-comment text adjustments, with no clear functional code changes in the runtime implementation.
Breakingv8.0.1
v8.0.1 is a small maintenance release intended to fix an issue where the process was not exiting. The provided release notes only mention the behavioral fix, with no further details.
v8.0.0
v8.0.0 primarily raises the minimum supported Node.js version to 18 and updates dependencies. The code diff also includes packaging-related metadata changes in package.json (exports and sideEffects) and CI workflow action version bumps.
Breaking