/rɪˈvjuː/ — Re + Vue — A Vue-style TUI framework for Rust
Quick Start · Tutorials · Examples · Documentation · Contributing
Why Revue?
Build terminal UIs like you build web apps — with CSS and reactive state.
- CSS Styling — Write styles in familiar CSS syntax with variables, selectors, and animations
- Reactive State — Vue-inspired
Signal/Computed/Effectsystem for automatic UI updates - 100+ Widgets — Rich component library: inputs, tables, charts, markdown, images, and more
- Hot Reload — See CSS changes instantly without restarting your app
- Developer Tools — Widget inspector, snapshot testing, and performance profiler built-in
- Single Binary — Pure Rust, no runtime dependencies, blazing fast
Quick Start
use *;
/* styles.css */
}
}
}
Key Features
Reactive Forms
Automatic validation with type-safe form state:
use FormState;
let form = new
.field
.field
.field
.build;
// Reactive validation - errors auto-update when values change
form.set_value;
assert!;
form.set_value;
// Validation automatically recalculates
See Forms Tutorial for complete guide.
Animation System
Rich animations with easing functions and keyframes:
use ;
// Fade in with custom easing
text
.animation
// Slide in from left
text
.animation
// Keyframe animation
text
.animation
Worker Pool
Execute background tasks without blocking the UI:
use ;
// Spawn blocking task
let handle = spawn_blocking;
// Use worker pool
let pool = new;
pool.submit;
// Get result when ready
if let Some = handle.try_recv
Hot Reload
CSS changes update instantly without restart:
let mut app = builder
.style
.hot_reload // Enable hot reload
.build;
app.run?;
Edit styles.css and see changes immediately - no restart needed!
DevTools
Built-in widget inspector and profiler:
let mut app = builder
.devtools // Enable devtools
.build;
app.run?;
Keyboard shortcuts:
Ctrl+D— Toggle devtools overlayCtrl+I— Open widget inspector
Features:
- Widget inspector with computed styles
- Performance profiler for identifying bottlenecks
- Snapshot testing for UI regression testing
Widgets
| Category | Components |
|---|---|
| Layout | vstack hstack grid scroll tabs accordion splitter layers |
| Input | input textarea select checkbox radio switch slider number_input |
| Forms | form form_field — Built-in validation system |
| Display | text markdown table tree list progress badge image presentation |
| Feedback | modal toast notification tooltip popover alert callout |
| Charts | barchart line_chart sparkline heatmap gauge boxplot histogram |
| Advanced | rich_text_editor json_viewer csv_viewer diagram command_palette |
| Dev | debug_overlay snapshot_test profiler |
100+ Widgets — See FEATURES.md for complete catalog
Key Features
Reactive Forms
Automatic validation with type-safe form state:
use FormState;
let form = new
.field
.field
.field
.build;
// Reactive validation - errors auto-update when values change
form.set_value;
assert!;
form.set_value;
// Validation automatically recalculates
See Forms Tutorial for complete guide.
Animation System
Rich animations with easing functions and keyframes:
use ;
// Fade in with custom easing
text
.animation
// Slide in from left
text
.animation
// Keyframe animation
text
.animation
Worker Pool
Execute background tasks without blocking the UI:
use ;
// Spawn blocking task
let handle = spawn_blocking;
// Use worker pool
let pool = new;
pool.submit;
// Get result when ready
if let Some = handle.try_recv
Hot Reload
CSS changes update instantly without restart:
let mut app = builder
.style
.hot_reload // Enable hot reload
.build;
app.run?;
Edit styles.css and see changes immediately - no restart needed!
DevTools
Built-in widget inspector and profiler:
let mut app = builder
.devtools // Enable devtools
.build;
app.run?;
Keyboard shortcuts:
Ctrl+D— Toggle devtools overlayCtrl+I— Open widget inspector
Features:
- Widget inspector with computed styles
- Performance profiler for identifying bottlenecks
- Snapshot testing for UI regression testing
Examples
# Basics
# UI Components
# Advanced
# Real-world
Browse all examples in the examples/ directory.
Tutorials
| Tutorial | Description | Time |
|---|---|---|
| Getting Started | Install and create your first app | 5 min |
| Counter App | Learn state management with signals | 10 min |
| Todo App | Build a full-featured todo list | 20 min |
| Reactive State | Deep dive into Signal, Computed, Effect | 15 min |
| Styling | CSS styling and theming | 15 min |
| Forms | Form handling with validation | 20 min |
Guides
| Guide | Description |
|---|---|
| App Builder | Complete App Builder API reference |
| Styling | CSS properties, selectors, and theming |
| State Management | Reactive state with signals |
| Testing | Test your TUI apps |
| Accessibility | Build inclusive apps |
| Performance | Optimization tips |
| Plugin System | Create and use plugins |
Comparison
| Revue | Ratatui | Cursive | Textual | |
|---|---|---|---|---|
| Language | Rust | Rust | Rust | Python |
| Styling | CSS | Code | Theme | CSS |
| Reactivity | Signal | Manual | Event | Reactive |
| Forms | ✅ Built-in | ❌ | ❌ | ✅ |
| Animation | ✅ Tween+Keyframes | ❌ | ❌ | ✅ |
| Worker Pool | ✅ | ❌ | ❌ | ❌ |
| Hot Reload | ✅ | ❌ | ❌ | ✅ |
| Devtools | ✅ | ❌ | ❌ | ✅ |
| Single Binary | ✅ | ✅ | ✅ | ❌ |
Documentation
- Getting Started — 5-minute tutorial
- Widget Catalog — Complete widget reference
- App Builder Guide — Complete App Builder API reference
- Styling Guide — CSS properties and theming
- State Management — Signals, Computed, Effects
- API Reference — Full API documentation
- Architecture — System design
Contributing
We welcome contributions! See CONTRIBUTING.md for guidelines.
&&
Development workflow:
- Fork the repository
- Create a feature branch (
feat/your-feature,fix/your-bug) - Make your changes with tests
- Run
cargo testandcargo clippy - Submit a pull request
License
MIT License — see LICENSE for details.
Built with Rust