Skip to content

Code Lab

Exact Explained: Expo’s Contract UI Runtime and Agent Testing Loop

By Miles Park·
GitHub project preview for expo/exact

CODE LAB · PROJECT SPOTLIGHT

Exact TypeScript · MIT

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.

Preview: GitHub · expo/exact

Exact explores what a cross-platform application stack looks like when agents need to build, see and test the same interface across hosts. Its Contract language is the central idea, not an assumption of ordinary React compatibility.

The Expo repository describes a declarative Contract interface with TypeScript or Rust application logic. It targets web and native hosts through its own compilation and runtime approach. The README labels the project pre-1.0 and warns of daily changes without API stability or backwards compatibility. Treat it as an evolving platform to evaluate, rather than a drop-in migration promise for an existing app.

Exact Softwear demonstration interface in a web browser
Project-supplied image · expo/exact · Credit: project authors and contributors. This is not our own test capture.

What does Exact change in practice?

A small task list is a better first test than a full production port. Define adding, completing and deleting an item, then check the same behavior on the specific hosts available to you. Keep generated layout and application state distinguishable. A test passing on one host is useful evidence, but does not establish identical native behavior on every other platform.

Inside the source: an example app records persistence failures

This excerpt comes from the Agents example app, not the Contract compiler. Its persistence helper writes serialized conversations through atomicWriteFile and stores a visible notice when the write fails. It illustrates an ordinary application concern that remains important in an agent-oriented runtime: a UI should not quietly imply that data was saved when storage rejected the operation.

expo/exactTypeScript · source excerpt
apps/agents/app.ts
async function persist(storage: Storage) {  try {    await storage.fs.atomicWriteFile(FILE, new TextEncoder().encode(JSON.stringify({ version: 1, serial, conversations })));    notice = '';  } catch (e) { notice = `Couldn’t save: ${message(e)}`; }}
Lines 66–71 · commit 8134f3aView original on GitHub ↗

Source: apps/agents/app.ts at 8134f3a. License: MIT. Original source text retained; line numbers and syntax colors added for this article.

Source attribution and license notices
MIT License

Copyright (c) 2026 650 Industries, Inc. (Expo)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Upstream additional notices

Getting started

The README’s starting path uses the repository’s tool prerequisites, bun scripts/exact.mjs setup and bun scripts/exact.mjs new <path>, followed by docs/start-here.md. Its Mac example requires Xcode, Rust, Bun and Chrome. Choose an available target and follow its current guide; do not assume that all native targets build from a Windows-only environment.

Limits and what to verify

The published timing example was measured under specific cache and machine conditions, so it is not a universal setup estimate. The project also references private design records; the public guides are the accessible starting authority. The shown example source is MIT-licensed with Expo attribution. No cross-platform build, startup benchmark or application-port test was performed for this article.

Where it fits

Exact is useful reading for developers interested in agent-visible UI, deterministic test operations and an explicit interface language. A credible evaluation should record the exact revision, target host and behavior demonstrated, because those details matter more than a broad write-once headline.

Official references: Repository · README at reviewed revision · Release history · Exact source excerpt.

Reviewed November 15, 2026. Discovery credit: 민둥이 | 쉽게 배우는 AI, video published November 14 covering a November 12 repository selection. This article independently examines the official source; that historical ranking is not presented as today’s ranking.

Join the discussion

Your email address will not be published. Required fields are marked *