AI-agent-first runtime for building web, iOS, macOS, and Linux apps without React
About
A Rust-based cross-platform app runtime made by Expo. Builds web, macOS, iOS, and Linux native apps from a single codebase
An agent-native design that lets AI coding agents write code, build and run it, see the screen, interact with the app, and test it themselves
UI is written in its own declarative language, Contract, while business logic and data handling are written in TypeScript or Rust. There is no React or JSX, and native UI rendering uses no WebView or JavaScript bridge
The Contract compiler turns UI declarations into a lightweight execution plan (Plan), which each platform's runtime interprets and renders
Web: a runtime of about 20 KB that uses the real DOM and CSS
macOS: native UI based on AppKit and CoreText
iOS: native UI based on UIKit and CoreText
Linux: a Rust layout engine with its own GPU/CPU rendering
CSS Block, Flex, and Grid layouts work the same on every platform; on native platforms a Taffy-based layout kernel computes them. Unstyled buttons, text, and navigation follow each OS's default design
On native platforms, TypeScript is precompiled to Hermes bytecode and runs after the first screen is drawn. Data needed for the first screen is put into the Plan at build time, so no JavaScript runs before the first pixel
Every platform is controlled with 10 common commands: tree, screenshot, tap, type, state, layout, logs, clock, prefer, perf. The same app.test.contract test script runs on web, macOS, iOS, and Linux
A virtual clock can be controlled directly to set the progress of animations and asynchronous work, reducing flaky tests that depend on waiting. The compiler outputs error locations and type information as structured JSON, and source maps let you trace a screen element back to its original source
Performance targets are 100 ms (p50) to the first interactive frame and 100 ms (p50) from a code change to the screen update
Supports web builds and signed update bundles for native app deployment. Updates to production TypeScript/Rust logic code are not implemented yet. Android can only run and test; store packaging is unfinished, and Windows support is in progress
An experimental pre-1.0 project; API stability and backward compatibility are not guaranteed. MIT license