A Go library providing over 90 customizable terminal spinners with live updates, concurrency safety, and TTY detection.
yacspin is a Go library for creating animated spinners in terminal applications. It provides visual feedback for ongoing processes, with features like live message updates, concurrency safety, and automatic TTY detection. The library solves common issues in spinner implementations, such as message flickering and unsafe concurrent usage.
Go developers building command-line interfaces (CLIs) or tools that require progress indicators for long-running tasks, such as data processing, file uploads, or system operations.
Developers choose yacspin for its robust API, which supports real-time message updates without sacrificing animation smoothness, along with built-in concurrency safety and extensive customization options not found in simpler spinner libraries.
Yet Another CLi Spinner; providing over 80 easy to use and customizable terminal spinners for multiple OSes
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Automatically pads spinner frames to keep message text stationary, ensuring smoother visuals as demonstrated in the README's comparison gifs between yacspin and other libraries.
Thread-safe design allows configuration updates while the spinner is running, addressing data race issues that the README notes were present in the briandowns/spinner library.
Messages update independently of animation timing, enabling real-time progress display without sacrificing aesthetic frequency, as shown in the upload example gif.
Customizable Stop() and StopFail() methods with configurable characters and colors let spinners indicate task completion, useful for serial task status as illustrated in the README's stop and stop_fail gifs.
With numerous Config fields like Frequency, CharSet, SuffixAutoColon, and TerminalMode, setup is more complex compared to simpler spinner libraries, potentially overwhelming for basic use cases.
Limited to Go projects, making it unsuitable for CLI tools built in other languages, and it relies on the external fatih/color library for color mappings, adding an extra dependency.
The README focuses on single-spinner concurrency safety and doesn't provide built-in handling for multiple simultaneous spinners, requiring manual instance management which can be error-prone.