Expo published Exact as a cross-platform runtime built for coding agents, and developers on Hacker News put it above 130 points on November 10, 2026. The repo gained more than 2,100 stars within days of creation. Exact asks you to write Contract for interface structure, TypeScript or Rust for data, and one scripts/agent.mjs driver to build, run, screenshot, and test the same app on web, macOS, iOS (Simulator or device), and Linux without embedding the UI in a webview on Apple platforms.
This is not another React Native release. It is Expo experimenting with agent-native developer experience: deterministic clocks, contract tests that do not fork per platform, and compiler diagnostics aimed at machines first.
TL;DR
| Question | Answer |
|---|---|
| UI language | Contract (declarative; no arbitrary code in view files) |
| Logic | TypeScript (Hermes bytecode on native) or Rust |
| Web | ~20 KB runtime ES module, real DOM |
| Native hosts | Rust runner + Taffy CSS layout + AppKit/UIKit or Linux GPU painter |
| Agent API | 10 operations: tree, screenshot, tap, type, state, layout, logs, clock, prefer, perf |
| Status | Pre-1.0, no stability promise |
| Stars (Nov 11) | 2,155+ on GitHub; HN thread id 50433541 |
Three design principles (from the README)
Expo documents Exact around agent native, speed, and write the web, ship the platform.
Agent native means the default customer is an autonomous coding agent, not only a human typing in an IDE. The README claims a predecessor agent API grew to eighty wire names; Exact intentionally keeps ten. Between operations nothing animates unless the agent advances a seekable clock (clock +60000, clock settle), which removes flaky sleep() in tests.
Speed targets include 100 ms cold start to first frame (p50), 100 ms dev reload after edits, and no app JavaScript before first pixel on native hosts because TypeScript compiles to Hermes bytecode at build time while the first frame comes from baked plan data.
Write the web, ship the platform means you author CSS vocabulary and layout, while controls, typography, motion, and accessibility come from each platform unless you override them. On layout disputes, Chrome is the parity oracle for native hosts.
For background on Expo's agent tooling elsewhere in the stack, see Expo Skills for Claude Code and Codex and Addy Osmani's agent skills production pack.
How the architecture fits together
Exact splits responsibilities the way a browser does, but compiles ahead of time:
| Piece | Role |
|---|---|
contract/ | Four-pass compiler: syntax, types, analysis, lowering to a plan |
runner/ | VM executing the plan: keyed components, events, seekable timers |
kernel/ | Columnar node arena + patched Taffy for CSS layout |
host/web | DOM glue (~20 KB runtime module) |
host/apple | AppKit/UIKit via static library C ABI |
host/linux | DRM/KMS or offscreen GPU painting |
Data crosses a single seam: TypeScript on Hermes (native) or browser JS (web), Rust native modules or Wasm on iOS and web, with grants gating network, files, SQLite, and secrets. Optional GPU, Markdown, and SQLite pieces load as separate artifacts so unused features do not inflate core builds.
Rust toolchain and Contract compile path for Expo Exact native hosts and web DOM delivery
Quick start (verified command paths)
The README documents macOS on Apple Silicon; Linux supports web and Linux host loops.
git clone https://github.com/expo/exact.gitbun scripts/exact.mjs setuponce (Rust toolchains, pinned Hermes bundles, Binaryen, lockfile crates)- Web demo:
bun host/web/dev.mjsserves Caltrain athttp://127.0.0.1:8765/ - Agent drive:
bun scripts/agent.mjs web tree "tap change-station" "type station-search Palo" state "screenshot out.png" - New app:
bun scripts/exact.mjs new ../hellothenbun exact.mjs web
First native builds can take 10–15 minutes on a laptop; incremental builds drop to 1–2 minutes. The README records a 57-minute end-to-end agent run (October 4, 2026) that passed tests on web, macOS, and iOS Simulator for a to-do app, with ~25 minutes of that in first macOS and iOS compiles.
Contract in one screen
Contract describes what renders and which mutations exist; it does not fetch or execute arbitrary code. Data sources answer network and persistence questions under capability grants.
The README ships a complete to-do example: keyed list state, app.ts data handlers, and app.test.contract exercising add, check, and delete flows. That trio is the mental model: view file, logic file, agent test file.
Compared with Slint, which HN commenter ogoffart noted shares Rust plus declarative DSL DNA, Exact optimizes for web-speed iteration and agent clocks, not multi-year widget maturity.
What works and what does not (November 2026)
Works (per README): web, macOS, iOS Simulator or device via Xcode 27.1+, Linux console or headless builds, parallel agent testing, Hermes offline installs via Ibex bundles, feedback diary opt-in to Expo.
Gaps (per README and HN): Windows and Android hosts are roadmap items; no releases tag yet; no backwards compatibility promise; documentation tone is explicitly agent-first, which frustrated some human readers on HN.
Agent-driven UI verification workflow for Expo Exact Contract test files
What developers are saying on Hacker News
The thread at HN item 50433541 mixed excitement with skepticism:
- doodlesdev (50434172) called Exact "absolutely huge" if Expo proves agent-driven native UI, but warned of gritty layout and interactivity details ahead.
- henry-hong (50438064) praised agents that look at screenshots across platforms; Exact's driver is built for that loop.
- ogoffart (50436561) compared the design to Slint, noting Slint's maturity versus Exact's agent-first tooling.
- jdthedisciple (50436854) argued cross-platform claims ring hollow without Windows, a recurring theme when enterprise buyers evaluate agent UI stacks.
- mrbombastic (50434617) joked about "agent-first DX" pushing humans aside; Exact's README embraces that positioning openly.
Treat star counts and HN points as attention, not maturity proofs.
How Exact compares to Electron and React Native paths
| Approach | UI fidelity | Agent testability | Maturity (Nov 2026) |
|---|---|---|---|
| Electron / web shell | Web tech everywhere | Playwright-style, one DOM | Production proven |
| React Native + Expo | Native components via bridge | Detox, Maestro, custom | Production proven |
| Exact | Native draw per platform, shared Contract | Built-in agent.mjs + contract tests | Pre-alpha experiment |
Exact bets that agents close the last mile on three native hosts while humans keep CSS mental models. If you only ship a marketing site, that is overkill. If you want agents to prove multi-host widgets nightly, the integrated driver is the differentiator.
Risks and licensing notes
- Churn:
rules/DEFERRED.mdstates features may disappear without migration paths. - Rebuild lineage: README calls this repo exact2, a rebuild of earlier Exact work; research imports under
llp/research/are not authoritative specs. - Feedback telemetry:
bun exact.mjs feedbackcan send friction notes to Expo's worker endpoint when projects opt in;EXACT_FEEDBACK=0disables sends. - Agent hype backlash: Teams allergic to "Claude-speak" README prose should still read
docs/start-here.md, which the repo marks as the single required agent onboarding doc.
Toolchain and dependency pins (what agents must install)
The README is explicit about versions because agent-driven setups fail silently on drift:
| Tool | Requirement |
|---|---|
| Rust | rust-toolchain.toml stable pin; first cargo run bootstraps it |
| Bun | 1.4.2 per package.json; README documents isolated ~/.bun-1.4.2 install |
| Chrome | Headless driver for web agent ops; override with CHROME env |
| Xcode | 27.1+ for Apple hosts; exact setup --check validates |
| Hermes | Ibex 260318099.0.4 bundles for host and iOS targets via installer crate |
bun scripts/exact.mjs setup also pulls wasm-bindgen, Binaryen, nightly Rust components for game web bakes, and offline crate caches for Exact and bundled game SDK locks. Agents should treat a failed setup as blocking before writing Contract: partial installs produce confusing compiler errors that burn context windows.
Hermes installs land under ~/.cargo/hermes-lean-sys/ with attestation verification. The README stresses ordinary builds stay offline once bundles exist, important for air-gapped CI trying to replicate agent success stories.
Contract compiler affordances for agents
Humans benefit from the same JSON diagnostics agents consume:
contract build --jsonreturns stable error ids and source ranges suitable for fix loops.contract symbolssupports navigation queries so agents do not grep blindly through generated artifacts.- Development source maps tie on-screen nodes back to Contract source lines.
Those interfaces mirror why Janestreet's agent skills and Vercel's agent-browser CLI emphasize machine-readable errors: without them, autonomous retries oscillate.
Example apps and templates in the monorepo
Beyond Caltrain, the repository ships runnable references agents can copy:
examples/calendarand otherapps/targets for host integration patterns.exact-templatesmarketing mentions Softwear, a generated apparel storefront demo (not a real merchant).- Markdown viewer tooling via
exact run markdown README.mdfor dogfooding docs inside Exact hosts.
When evaluating Exact, start from exact new scaffolding (Contract + app.ts + app.test.contract) rather than porting a mature React Native screen one-to-one. The runtime assumes you accept Contract's refusal-oriented semantics: invalid writes should fail loudly with remediation text, a style closer to Rust than to permissive JSX.
Performance claims and how to verify them
README cites internal LLP notes for web benchmarks (for example Conduit vs React SSR hydration time and bundle size comparisons). Treat them as vendor engineering notes, not independent benchmarks, until Expo publishes reproducible scripts.
Your team can still partially verify locally:
- Run
bun host/web/dev.mjsand measure reload time after a one-line Contract edit (README reports ~99 ms on a fresh app). - Capture
bun scripts/agent.mjs web perfoutputs after setup (operation exists in the ten-op API). - Compare cold-start video captures across hosts with the agent screenshot film syntax documented in Quick start.
Document hardware whenever you post results; Mac Studio versus laptop thermals change compile timelines dramatically.
When to try Exact this week
| You should experiment if… | Wait if… |
|---|---|
| You run agents that break UI on iOS vs web | You need Windows or Android today |
| You want contract tests without per-platform forks | You require stable semver APIs |
| You already use Bun + Rust + Xcode in CI | You cannot absorb 15-minute first native builds |
Pair a spike with loop engineering for coding agents so agent retries do not burn unbounded compile minutes.
Related reading on explainx.ai
- Expo Skills install guide
- Addy Osmani's agent skills pack
- Janestreet Socratic tutor skills
- DESIGN.md templates for agent UI
- AI usage and fragile codebases on HN
- Vercel agent-browser for agent-driven UI checks
- Claude Fable coding ownership guide
- Microsoft Lazarus agent backdoor research
Repository layout, star count, and platform support reflect the expo/exact README as read on November 11, 2026.
