Real text editing
Selection, clipboard with text, files and images, IME composition, native undo/redo and Unicode editing.
Tarve turns a TSX tree into a retained native interface. No browser, no DOM, no React runtime — just Bun, a Rust runtime and pixels.
import { Button, Column, Text, Window, createApp } from "@tarve/core";
let count = 0;
function App() {
return (
<Window title="Counter" width={520} height={360}>
<Column flex={1} align="center" justify="center" gap={16}>
<Text size={42} weight={700}>{count}</Text>
<Button onClick={() => count++}>Increase</Button>
</Column>
</Window>
);
}
const app = createApp(App);
await app.ready;
await app.closed;No updates yet. Nothing is drawn while nothing changes.
Every layer is specialised. Together they deliver a window that only works when something actually changes.
You write components against the dedicated @tarve/core JSX runtime. No React underneath.
The reconciler compiles your tree and sends only the mutations that changed to native.
Event-driven, with no continuous polling. Nothing happens until something changes.
Retained Flexbox and Grid layout with incremental property and structural updates.
Text shaping, selection, IME composition and Unicode-aware editing.
D3D11/DXGI, Vello/WGPU or vello_cpu + softbuffer — you choose the path.
Selection, clipboard with text, files and images, IME composition, native undo/redo and Unicode editing.
Native Markdown, syntax-highlighted Code and Diff leaves designed for large documents.
Fixed-height, measured variable-height or externally windowed. Huge lists without effort.
AccessKit built in: UI Automation on Windows and AT-SPI on Linux.
Global hotkeys, native file dialogs, custom title bars and window positioning.
A window at rest presents no frames at all. Your users' batteries will thank you.
In-window error overlay, same-window remount under bun --hot and a native frame-time graph.
shadcn-inspired light/dark tokens, switchable at runtime without recreating the window.
createApp accepts renderer: "auto" | "gpu" | "cpu". Windows uses native D3D11/DXGI with a
Vello/WGPU fallback; Linux uses Vello/WGPU. Both ship a low-memory CPU path.
D3D11/DXGI with a Vello/WGPU fallback for initialization or recovery failures. If Vello cannot run on the adapter, it falls back to CPU.
Linear, radial and conic gradients, boxShadow, textShadow, transform and
transitions animated natively on hover, focus and updates — identical on D3D11, Vello and the CPU renderer.
<Column style={{
background: "linear-gradient(135deg, #2563eb, #9333ea 80%)",
radius: 16,
boxShadow: { y: 2, blur: 6, color: "#0f172a22" },
hover: {
transform: "translateY(-2px) scale(1.02)",
boxShadow: { y: 14, blur: 28, color: "#2563eb44" },
},
transition: { all: { duration: 220, easing: "easeOut" } },
}} />Native primitives and high-level controls, all exported from @tarve/core with light and dark theme tokens.
Every one has its own documentation page.
<Window /><TitleBar /><View /><Row /><Column /><Scroll /><ScrollArea /><Portal /><Pressable /><Resizable /><AspectRatio /><Direction /><Separator /><AnimatePresence />Text & media <Text /><Typography /><Link /><Label /><Kbd /><Image /><Avatar /><Icon /><Svg /><Path /><Circle /><Ellipse /><Line /><Polyline /><Polygon /><SvgRect />Inputs & forms <Input /><TextArea /><InputGroup /><InputOTP /><Field /><Checkbox /><Switch /><RadioGroup /><Select /><NativeSelect /><Combobox /><Slider /><Toggle /><ToggleGroup /><Calendar /><DatePicker /><Button /><ButtonGroup /><Badge /><Progress /><Spinner /><Skeleton /><Alert /><Toast /><Toaster /><Empty />Overlays <Modal /><Dialog /><AlertDialog /><Sheet /><Drawer /><Popover /><Tooltip /><HoverCard /><DropdownMenu /><ContextMenu /><Command /><CommandPalette />Navigation <Tabs /><Accordion /><Collapsible /><Breadcrumb /><Pagination /><NavigationMenu /><Menubar /><Sidebar /><Carousel />bun add @tarve/core
bun add -d typescript @types/bunThe tarve build CLI compiles your app into a standalone executable with the native runtime embedded. The
published package already carries the Windows x64 and Linux x64 runtimes — cross-compile without a Rust toolchain.
# Windows → .exe with the native runtime embedded
bun run tarve build app.tsx --outfile dist/App.exe
# cross-compile for Linux x64, no Rust toolchain needed
bun run tarve build app.tsx --target linux-x64 --outfile dist/AppBun + TSX on the outside. Rust, Taffy, Parley and Vello on the inside.