Exact – a new cross platform UI framework by the Expo team The Expo team released Exact, a pre-1.0 cross-platform application runtime that compiles interfaces written in its declarative Contract language into native apps for web, macOS, iOS, and Linux, with no webview or JavaScript bridge in the UI. Exact exposes ten agent operations — tree, screenshot, tap, type, state, layout, logs, clock, prefer, and perf — through a single script, scripts/agent.mjs, and a fresh AI agent given a sample prompt on a clean clone finished a todo app in about 57 minutes with tests passing on web, macOS, and the iOS Simulator, roughly 25 of those minutes spent on first macOS and iOS builds at about 13 minutes each. The web target runs a ~20 KB runtime over the real DOM, while macOS, iOS, and Linux use a Rust runner and Rust layout kernel drawing through AppKit, UIKit, or a GPU painter; the team states Exact has no API stability, backwards compatibility, or migration guide by design. Write an app once. It runs natively on the web, macOS, iOS, and Linux, and an AI agent can build it, run it, see it, and test it on every one of them. Tip Try it with a coding agent. On a Mac with Xcode, Rust, Bun, and Chrome installed, give Claude Code this prompt: Clone https://github.com/expo/exact and follow its README to make a new Exact app with exact new . Run bun scripts/exact.mjs setup once first. Make a todo list where I can add items, check them off, delete them, and see how many are left. Put the view in Contract and keep the list in app.ts . Write an app.test.contract , pass it on web, macOS, and the iOS Simulator with scripts/agent.mjs , then open the app for me on all three. A fresh agent given an earlier version of this prompt on a clean clone Hermes already in the machine cache, Cargo's cache warm finished in about 57 minutes, and its tests passed on all three platforms. About 25 of those minutes were the first macOS and iOS builds, roughly 13 minutes each; later builds take a minute or two. On a machine that has lacked Hermes, its source build came first and added time. Current setup downloads and verifies the pinned host/iOS bundles once instead; ordinary builds stay offline. | Web | iOS | macOS | |---|---|---| | The browser's own DOM and CSS | UIKit views, native controls and the system's tab bar | AppKit views and native controls |