Skip to content
Oeiuwq Faith Blog OpenSource Porfolio

whit3rabbit/bubbletea-rs

A rust implementation of Bubbletea https://github.com/charmbracelet/bubbletea

whit3rabbit/bubbletea-rs.json
{
"createdAt": "2025-08-02T20:56:15Z",
"defaultBranch": "main",
"description": "A rust implementation of Bubbletea https://github.com/charmbracelet/bubbletea",
"fullName": "whit3rabbit/bubbletea-rs",
"homepage": null,
"language": "Rust",
"name": "bubbletea-rs",
"pushedAt": "2025-11-24T15:25:08Z",
"stargazersCount": 225,
"topics": [],
"updatedAt": "2025-11-22T13:50:57Z",
"url": "https://github.com/whit3rabbit/bubbletea-rs"
}

CI Crates.io

A Rust reimagining of the delightful Bubble Tea TUI framework — inspired by, and paying homage to, the original Go project from Charmbracelet.

Build delightful terminal user interfaces with the Model-View-Update pattern, async commands, and rich styling capabilities.

Status: Active development. Core APIs are stabilizing, but some interfaces may still evolve.

I tried to match all the examples from the bubbletea repository in rust. You can view the examples here:

https://github.com/whit3rabbit/bubbletea-rs/blob/main/examples/README.md

The Rust Bubble Tea ecosystem consists of three complementary crates:

CrateRepositoryPurpose
bubbletea-rsbubbletea-rsCore MVU framework with async runtime
bubbletea-widgetsbubbles-rsPre-built UI components (spinners, inputs, tables, etc.)
lipgloss-extraslipgloss-rsStyling framework with colors, layouts, and rich text

All crates are published to crates.io:

Add these dependencies to your Cargo.toml:

[dependencies]
bubbletea-rs = "0.0.9"
bubbletea-widgets = "0.1.12"
lipgloss-extras = { version = "0.1.1", features = ["full"] }

Bubble Tea (Go) popularized a functional, message-passing architecture for building terminal applications. This project explores those ideas in Rust: an ergonomic, async-friendly take on the Model–Update–View pattern, with a focus on correctness, performance, and great developer experience.

  • Model-View-Update Architecture: Clean separation of state, rendering, and updates
  • Async-First Design: Built on Tokio with async commands and non-blocking operations
  • Rich Styling: Full color support, gradients, borders, and layouts via lipgloss-extras
  • Pre-built Components: 13+ widgets including spinners, inputs, tables, progress bars
  • Command System: Timers, HTTP requests, batch operations, and custom async commands
  • Terminal Controls: Mouse support, alternate screen, window sizing, focus management
  • Type Safety: Leverages Rust’s type system for reliable, memory-safe TUIs
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Model │ │ Commands │ │ View │
│ (State) │ │ (Async Ops) │ │ (Rendering) │
├─────────────────┤ ├──────────────────┤ ├─────────────────┤
│ • App state │ │ • Timers │ │ • lipgloss │
│ • Business │ │ • HTTP requests │ │ • Styled text │
│ logic │ │ • File I/O │ │ • Layouts │
│ • Updates │ │ • Custom async │ │ • Components │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
└─────────────►│ bubbletea-rs │◄─────────────┘
│ Event Loop │
└─────────────────┘

To run any example:

Terminal window
cd examples/simple # or any example directory
cargo run

Or run directly from the workspace root:

Terminal window
cargo run --example simple

Run tests:

Terminal window
cargo test

Format and lint:

Terminal window
cargo fmt
cargo clippy

Generate documentation:

Terminal window
cargo doc --open
  • [API Reference]!(docs/API-BUBBLETEA-RS.md) - Core bubbletea-rs APIs and patterns
  • [Widgets Guide]!(docs/API-BUBBLES-RS.md) - Available components and usage
  • [Styling Guide]!(docs/API-LIPGLOSS.md) - Colors, layouts, and theming
  • [CLAUDE.md]!(CLAUDE.md) - Development guidelines and patterns
ComponentStatusVersionNotes
bubbletea-rs✅ Activev0.0.9Core framework stable
bubbletea-widgets✅ Activev0.1.1213+ widgets available
lipgloss-extras✅ Activev0.1.1Full styling support

This work draws heavily from Charmbracelet’s design and spirit. If you’re building in Go, you should absolutely use the original Bubble Tea. This Rust implementation aims to bring the same joy and productivity to the Rust ecosystem.

MIT License - see [LICENSE]!(LICENSE) for details.


🫧 Built with bubbles, styled with charm, powered by Rust.