The Expo team has introduced Exact, a cross-platform application runtime that allows a single interface description to run natively on the web, macOS, iOS, and Linux. Unlike many existing frameworks that rely on webviews or JavaScript bridges, Exact uses a custom declarative language called Contract to compile a 'plan' that is executed by a Rust runner and a layout kernel. This architecture is designed to eliminate the friction of cross-platform development while prioritizing performance and AI-driven workflows.

The Softwear application interface running as a native iOS app.
Exact allows a single interface description to render natively on iOS.github.com

The article describes how Exact enables a single interface description to run natively on various platforms, including iOS.

The Contract Language and Execution Model

At the core of Exact is Contract, a small declarative language used to describe the application's interface. The Contract compiler processes this input through four passes—syntax, types, analysis, and lowering—to produce a 'plan' containing tables and bytecode.

This plan serves as the source of truth for all hosts. On the web, the plan becomes an ES module that drives the real DOM. On native platforms, a Rust runner executes the plan, while a layout kernel (Taffy) computes every box using CSS rules. Each platform then draws the result using its own native tools, such as AppKit for macOS or UIKit for iOS.

The Softwear application interface running as a native macOS app.
The same interface description renders natively on macOS using the Rust runner.github.com

The article explains that Exact uses a Rust runner and layout kernel to drive platform-specific tools like AppKit for macOS.

“Exact assumes much of the code will be written by AI agents.”

— GitHub - expo/exact

Agent-Native Design and Performance

Exact is built with the assumption that much of the code will be written by AI agents. To facilitate this, the framework provides ten specific operations—such as tree, screenshot, tap, and clock—that allow an agent to operate the app and prove it works without a human in the loop. The 'clock' operation is particularly notable as it allows the agent to advance time or wait for a 'settle' state, eliminating timing flakes in automated tests.

Speed is a primary engineering constraint for the project. The team tracks budgets for cold starts and dev restarts, aiming for a 100ms p50 target. To achieve this, the boot path compiles nothing; TypeScript is compiled to Hermes bytecode at build time and loads only after the first pixel is rendered. Additionally, heavy components like the Markdown editor or GPU rendering are separate artifacts loaded only on demand.

Exact Performance Targets: Cold start to interactive first frame 100 ms p50; Dev restart, edit to present 100 ms p50
Exact Performance Targetsgithub.com

Chart drawn by HN Digest from figures reported by github.com; values are shown as written in the source.

Development Loop and Limitations

The development workflow favors the web as the primary iteration loop. Developers can work on the web version of the app, where the browser handles the layout and CSS, while the native hosts are 'swept behind' them. The framework ensures visual parity by checking native layout against what Chrome draws, declaring any unavoidable deviations.

The Softwear application interface rendered in a Chrome web browser.
The web host serves as the primary iteration loop for developers.github.com

The article notes that developers can work on the web version of the app as the primary iteration loop.

Because Exact is currently pre-1.0, it lacks API stability, backwards compatibility, or a migration guide. The project is in a state of rapid daily change, meaning the current implementation is a moving target for developers looking to adopt it for production-ready applications.

What Hacker News readers are saying

  • Technical note: One commenter noted that while the project is ambitious, the framework's ability to let agents control UI timing is a key technical hurdle for ensuring correct interactivity. comment ↗
  • Skeptical: Another user expressed optimism about reducing software bloat but raised concerns that the framework's success might depend heavily on the specific capabilities of the AI models used to write the code. comment ↗

Summarized opinions from the Hacker News thread, not verified facts. Read the full discussion ↗