Bubble Tea: Go TUI framework
Go framework for terminal user interfaces based on The Elm Architecture with inline/fullscreen modes.
Learn more about Bubble Tea
Bubble Tea is a terminal user interface framework written in Go that implements The Elm Architecture pattern. Applications are built around a model-update-view cycle where the model represents application state, update handles incoming messages and state changes, and view renders the UI as strings. The framework includes a framerate-based renderer, mouse support, focus reporting, and other terminal-specific optimizations. It is commonly used for building interactive command-line tools, system utilities, and text-based applications.
Elm Architecture
Implements functional programming patterns with model-update-view architecture for predictable state management.
Framerate Renderer
Uses optimized rendering with framerate control to minimize terminal flickering and improve performance.
Message System
Handles terminal events through a type-safe message passing system for keyboard, mouse, and other I/O operations.
package main
import (
"fmt"
"os"
tea "github.com/charmbracelet/bubbletea"
)
type model struct {
choices []string // items on the to-do list
cursor int // which to-do list item our cursor is pointing at
selected map[int]struct{} // which to-do items are selected
}
func initialModel() model {
return model{
choices: []string{"Buy carrots", "Buy celery", "Buy kohlrabi"},
selected: make(map[int]struct{}),
}
}
func (m model) Init() tea.Cmd {
return nil // No initial I/O needed
}Synchronized output updates and enhanced terminal mode reporting
- –Add SupportsKeyDisambiguation to KeyboardEnhancementsMsg
- –Add synchronized updates option to renderer interface
- –Introduce ModeReportMsg for terminal mode reports
- –Query terminal for synchronized output support (mode 2026)
- –Renderer: use uv altscreen helpers
Module name change and message type improvements from aliases to structs
- –`github.com/charmbracelet/bubbletea/v2` - now moved to `charm.land/bubbletea/v2`
- –`CursorPositionMsg` - now a struct type
- –`KeyboardEnhancementsMsg` - now a struct type
- –`PasteMsg` - now a struct type
- –`CapabilityMsg` - now a struct type
Renderer fixes for keyboard enhancements and cursor management
- –Fix: renderer: avoid requesting keyboard enhancements on close
- –Fix: renderer: ensure we reset cursor style and color on close
- –Fix: renderer: only move cursor to bottom when we're in the main screen
- –Fix: renderer: sync buffer resize with frame rate
Top in Developer Tools
Related Repositories
Discover similar tools and frameworks used by developers
Moq
Mock .NET objects using lambda expressions and LINQ.
ExcelJS
Parse, modify, and generate XLSX files in Node.js.
EPG
Node.js toolkit for downloading EPG data from hundreds of TV sources into standardized XML format.
Git
Snapshot-based version control with distributed repository architecture.
Go
Statically typed, compiled language by Google focused on simplicity, concurrency, and fast compilation.
Related Reading
Guides and comparisons from the Greptile content library
Top AI Code Review Tools for Small Dev Teams 2026
Affordable, lightweight AI code review tools that help small teams catch bugs faster. Practical comparisons of accuracy, ease of use, and value for teams without enterprise budgets.
Choosing the Right Code Review Tool: Better Alternatives to Graphite AI
A breakdown of the best alternatives to Graphite for code reviews. Compare AI tools like Trag, open-source solutions like Gerrit, and database-focused platforms like Visual Expert.
Best AI Code Review Tools for GitHub
Top-rated AI code review tools for GitHub teams in 2025. Compare features, pricing, and accuracy to find the perfect fit for faster PR reviews and bulletproof code quality.
Best Code Review Tools in 2026
The best code review tools in 2026, compared on pricing, features, deployment options, and ideal use cases for teams of any size.