불러오는 중…

Exact — 한 번 쓰면 웹·맥·아이폰·리눅스에서 네이티브로 돌아가는 앱 런타임

앱을 하나 만들면 웹에서는 웹답게, 아이폰에서는 아이폰답게, 맥에서는 맥답게 돌아가야 합니다. 보통은 플랫폼마다 따로 만들거나, 웹뷰로 때우거나, 둘 중 하나를 포기합니다. Expo가 "한 번 쓰고 네 곳에서 네이티브로 돌리는" 런타임을 내놨습니다. 그것도 AI 에이전트가 만들고 테스트하는 걸 전제로 설계한 물건입니다.

이게 뭐에요?

Exact는 한 번 작성한 앱을 웹·macOS·iOS·리눅스에서 네이티브로 실행하는 크로스플랫폼 앱 런타임입니다. React Native로 유명한 Expo 팀이 만든 오픈소스 프로젝트입니다. 화면은 Contract라는 작은 선언형 언어로 적고, 데이터 로직은 TypeScript나 Rust로 씁니다. Contract 컴파일러가 화면을 작은 "계획(plan)"으로 바꾸면, 웹에서는 약 20KB짜리 ES 모듈 하나가 실제 DOM을 직접 굴리고, 맥·아이폰·리눅스에서는 Rust 러너가 같은 계획을 실행해 각 플랫폼의 네이티브 도구(AppKit, UIKit, GPU 페인터)로 그립니다. 웹뷰도 없고, 자바스크립트 브리지도 없고, 첫 화면이 뜨기 전에 앱 자바스크립트가 실행되지도 않습니다.

뭐가 재밌어요?

  • AI 에이전트가 앱을 만들고 테스트하는 게 전제입니다: 에이전트가 앱을 만들고, 실행하고, 보고, 테스트까지 할 수 있게 설계됐습니다. tree · screenshot · tap · type · state · layout · logs · clock · prefer · perf, 딱 열 가지 조작이 모든 플랫폼에서 똑같이 통합니다. 테스트도 이 조작들의 스크립트라서, 한 번 쓴 테스트가 웹·맥·아이폰 시뮬레이터에서 그대로 돌아갑니다.
  • 시간을 에이전트가 조종합니다: 애니메이션이 끝나길 기다리며 잠드는 대신, 에이전트가 clock +60000처럼 시계를 직접 돌려 결과를 확인합니다. 타이밍 때문에 테스트가 간헐적으로 깨지는 일이 원천적으로 없습니다.
  • 속도 예산이 규칙입니다: 첫 화면까지 100ms, 수정하고 다시 보이는 것까지 100ms 같은 예산이 커밋마다 추적되고, 예산을 어기면 최우선 버그(P0) 취급을 받습니다. 실제로 수정한 내용이 화면에 반영되는 데 99ms가 걸렸다고 합니다. RealWorld 벤치마크에서는 React SSR이 하이드레이션을 마치기도 전에 Exact 런타임이 약 300ms 먼저 준비됐고, 코드량도 26KB 대 81KB였다고 합니다.
  • 쓰는 건 웹, 나오는 건 플랫폼입니다: 레이아웃과 이름은 CSS 그대로 씁니다. 버튼·색·글자·제스처 같은 건 각 플랫폼이 알아서 자기답게 그려줍니다. 같은 코드인데 브라우저에서는 웹 앱처럼, 아이폰에서는 UIKit 앱처럼 보입니다. 브라우저가 레이아웃의 정답지(oracle) 역할을 해서 네이티브 화면이 웹과 어긋나지 않는지 확인합니다.
  • 에이전트 데모가 실제로 돌아갑니다: README에 나온 사례에서는 아무것도 모르는 새 에이전트가 클린 클론에서 할 일 앱을 만들고 웹·macOS·iOS 시뮬레이터에서 테스트까지 통과하는 데 57분쯤 걸렸다고 합니다. 그중 25분은 첫 macOS·iOS 빌드 시간이었고, 이후 빌드는 1~2분이면 됐다고 합니다.
  • 진짜 앱이 기준입니다: v1의 기준은 "데모가 아니라 진짜 앱 하나가 하나의 Contract 소스로 네 플랫폼에서 돌아가는 것"이고, 그 앱이 기차 시간표 앱 Caltrain입니다. 예시 앱으로 할 일 목록, 날씨, 캘린더, 사진 편집기, 데모 스토어 Softwear 같은 것들이 함께 들어 있습니다.

지금 상태는?

저장소는 2026년 11월 2일에 만들어졌고, 확인 시점 기준 GitHub 스타 약 2,900개, 포크 64개, 커밋 659개입니다. 아직 1.0 전 단계라 API가 매일 바뀔 수 있고, 하위 호환도 보장하지 않는다고 README에 솔직히 적혀 있습니다. 웹·macOS(AppKit)·iOS(UIKit)·리눅스 네 호스트가 동작하고, CSS 레이아웃·가상화 목록·마크다운 편집기·SQLite·OAuth 로그인·서버 측 사전 렌더링까지 들어 있습니다. Windows는 아직 준비 중입니다. 시작하려면 Rust, Bun 1.4.2, Chrome이 필요하고, 맥·아이폰 호스트에는 Xcode 27.1 이상이 필요합니다. 라이선스는 MIT입니다.

한 줄 평: "에이전트 시대의 크로스플랫폼은 '어디서든 돌아간다'가 아니라 '에이전트가 어디서든 만들고 증명할 수 있다'는 뜻."

링크 모음

댓글 0

아직 댓글이 없어요. 첫 댓글을 남겨 주세요.

댓글 남기기

댓글 입력창은 Blogger(Google)가 제공해요.