Documentation

Undra documentation

Undra owns the part of your app that is not pixels: domain logic, reactive state, the data layer, persistence and the dev loop. These pages take you from an empty directory to a running app, then explain how the pieces work.

Where to start#

The idea in four sentences#

You write your domain in Rust and mark it with a handful of attributes. Undra generates idiomatic Swift, Kotlin and TypeScript from the schema those attributes produce, so the UI stays SwiftUI on iOS, Jetpack Compose on Android, React on the web, and React Native. Each platform keeps a local mirror of your state, so reads never cross the language boundary. A write crosses once per transaction, and the core answers with one compact binary change-set that patches every mirror.

Where these pages come from. Everything here is digested from the repository: the README, the specification in docs/SPEC.md, the onboarding guide, the benchmark results and the playground app. When a page and the spec disagree, the spec wins; the repository is the record.

A note on numbers#

Performance figures on this site are measured on an Apple M5 Pro host, in release builds, and guarded by budgets in CI. The device rows come from the iPhone simulator, the Android emulator and headless Chromium on that machine; none is from a physical phone, and nothing on this site claims a per-device target as met. The results are in bench/RESULTS.md.

Edit this page on GitHub