Widgets
Widget Stability
Rezi uses stability tiers so teams can choose widgets with clear behavior guarantees.
Rezi uses stability tiers so teams can choose widgets with clear behavior guarantees.
Tiers
stable: strongest widget tier inside the current pre-alpha line; documented behavior contracts and deterministic tests exist, and maintainers aim to avoid unnecessary breaking changes.beta: usable and tested for core invariants, but parts of the contract can still evolve.experimental: no compatibility guarantees; behavior and APIs can change quickly.
Stable Guarantees
When a widget is marked stable, Rezi guarantees:
- deterministic behavior for documented keyboard, pointer, and editing contracts
- deterministic regression tests that pin those contracts in
packages/core/src/**/__tests__ - clear changelog callouts when documented stable behavior changes
- stronger compatibility expectations than
beta/experimental, while the repo-wide pre-alpha status still applies to the package line as a whole
Daily Driver Status
These widgets are the EPIC-04 hardening targets and are currently stable.
| Widget | Tier | Contract coverage |
|---|---|---|
| Input | stable | Cursor/edit/paste/focus-capture contract tests in packages/core/src/runtime/__tests__/inputEditor.contract.test.ts |
| Table | stable | Selection/column-width/viewport/row-key tests in packages/core/src/widgets/__tests__/table.golden.test.ts and packages/core/src/app/__tests__/table.renderCache.test.ts |
| Virtual List | stable | Visible-range/overscan/scroll-clamp/navigation tests in packages/core/src/widgets/__tests__/virtualList.contract.test.ts |
| Command Palette | stable | Async fetch ordering/stale-cancel/query/nav/escape tests in packages/core/src/app/__tests__/commandPaletteRouting.test.ts and packages/core/src/widgets/__tests__/commandPalette.test.ts |
| File Picker | stable | Expand/collapse/selection/open/toggle contracts in packages/core/src/app/__tests__/filePickerRouting.contracts.test.ts |
| File Tree Explorer | stable | Focus/activation/toggle/context-menu contracts in packages/core/src/app/__tests__/fileTreeExplorer.contextMenu.test.ts |
Full Catalog Status
The full catalog is tiered below. stable is intentionally conservative and reserved for widgets with hardened behavior contracts.
| Category | Widget | Tier |
|---|---|---|
| Primitives | Text | stable |
| Primitives | Box | stable |
| Primitives | Row / Column | stable |
| Primitives | Spacer | stable |
| Primitives | Divider | stable |
| Indicators | Icon | beta |
| Indicators | Spinner | beta |
| Indicators | Progress | beta |
| Indicators | Skeleton | beta |
| Indicators | RichText | beta |
| Indicators | Kbd | beta |
| Indicators | Badge | beta |
| Indicators | Status | beta |
| Indicators | Tag | beta |
| Form Inputs | Button | beta |
| Form Inputs | Input | stable |
| Form Inputs | Slider | beta |
| Form Inputs | Checkbox | beta |
| Form Inputs | Radio Group | beta |
| Form Inputs | Select | beta |
| Form Inputs | Field | beta |
| Data Display | Table | stable |
| Data Display | Virtual List | stable |
| Data Display | Tree | beta |
| Overlays | Layers | beta |
| Overlays | Modal | beta |
| Overlays | Dropdown | beta |
| Overlays | Layer | beta |
| Overlays | Toast | beta |
| Overlays | Focus Zone | beta |
| Overlays | Focus Trap | beta |
| Layout | Split Pane | beta |
| Layout | Panel Group | beta |
| Layout | Resizable Panel | beta |
| Advanced | Command Palette | stable |
| Advanced | File Picker | stable |
| Advanced | File Tree Explorer | stable |
| Advanced | Code Editor | beta |
| Advanced | Diff Viewer | beta |
| Advanced | Logs Console | beta |
| Advanced | Tool Approval Dialog | experimental |
| Charts | Gauge | beta |
| Charts | Sparkline | beta |
| Charts | Bar Chart | beta |
| Charts | Mini Chart | beta |
| Feedback | Callout | beta |
| Feedback | Error Display | beta |
| Feedback | Empty | beta |
Widget API Reference
Rezi ships a comprehensive built-in widget catalog. Every widget is a plain TypeScript function that returns a VNode -- the virtual-DOM node Rezi reconciles, lays out, and renders to the terminal.
Text
Renders text with optional styling, overflow handling, and optional multiline wrapping.