Expo Exact 정리: React 없이 코드 한 벌로 4개 플랫폼 앱

Expo Exact 정리: React 없이 코드 한 벌로 4개 플랫폼 앱

핵심 요약

  • Expo Exact는 React Native 도구를 만드는 Expo가 2026년 11월 9일 공개한 Rust 기반 앱 런타임입니다. 화면은 새 언어 Contract로, 데이터와 로직은 TypeScript나 Rust로 쓰면 같은 코드가 웹, macOS, iOS, Linux에서 네이티브로 돕니다. React와 JSX 계층은 없습니다.
  • 설계의 중심은 AI 코딩 에이전트입니다. 에이전트가 화면 구조 읽기, 스크린샷, 탭, 입력, 시계 조작 같은 조작 10개를 모든 플랫폼에서 같은 스크립트로 실행하고, 테스트 파일 하나를 모든 플랫폼에서 돌립니다.
  • MIT 라이선스로 무료지만 아직 프리알파입니다. 릴리스와 버전 번호, 패키지로 설치하는 CLI가 없어 저장소를 내려받아 쓰고, 첫 네이티브 빌드에 10~15분이 걸립니다.
  • 성능 수치는 인상적이지만 모두 Expo 쪽이 공개한 값이고 독립 검증은 없습니다. 웹 벤치마크 LCP 802ms(Next.js 2,014ms), iPad 스크롤 119.9fps를 내세웠고, 웹 벤치마크는 경쟁 프레임워크와 다른 날 따로 잰 값을 한 표에 합쳤습니다.
  • Android는 초기, Windows는 미완성이고, npm 패키지와 React Native 라이브러리를 쓸 수 없습니다. 치버는 발표 글에서 기존 Expo 프레임워크를 계속 지원한다고 밝혔습니다. 필자는 직접 빌드해 보지 않았고, 2026년 11월 12일 기준 공식 글과 저장소, 커뮤니티 후기를 읽고 정리했습니다.

목차

Expo Exact는 어떤 도구인가

Expo Exact는 앱 화면과 동작을 한 번 써서 여러 플랫폼에서 네이티브 앱으로 돌리는 런타임입니다. GitHub 저장소 설명은 "앱을 한 번 쓰면 웹, macOS, iOS, Linux에서 네이티브로 돌고, AI 에이전트가 그 모든 곳에서 앱을 만들고 실행하고 보고 테스트할 수 있다"입니다(GitHub expo/exact). README는 스스로를 "cross-platform application runtime"이라고 부릅니다.

공개는 Expo 공동창업자 찰리 치버(Charlie Cheever)가 미국 시간 2026년 11월 9일 개인 블로그 글 "A preview of Exact"와 X 게시물로 했습니다(치버 블로그, X). 치버는 Exact를 "Rust로 쓴 새로운 에이전트 네이티브 앱 프레임워크"라고 소개했고, 같은 날 Expo 공식 X 계정이 "지금 Exact는 프리알파이고, 더 많은 사용자와 피드백을 원해 공유한다"고 알렸습니다(Expo X). 2026년 11월 12일 기준 Expo 공식 블로그에는 따로 발표 글이 없습니다.

Softwear라는 데모 쇼핑몰 화면 하나를 iPhone 두 종류, Android 에뮬레이터, macOS 창, 웹 브라우저 Chrome에 동시에 띄운 Expo Exact 발표 이미지
같은 데모 쇼핑몰 앱을 iPhone, Android 에뮬레이터, macOS, 웹에 띄운 발표 이미지. 출처: Charlie Cheever, A preview of Exact

React Native와 가장 크게 다른 점은 화면을 그리는 방식입니다. README에 따르면 웹에서는 약 20KB 런타임이 실제 DOM을 다루고, macOS·iOS·Linux에서는 Rust 러너가 같은 화면 계획을 실행합니다. 레이아웃은 CSS 규칙을 따르는 Rust 레이아웃 엔진(Taffy)이 계산하고, 그리기는 각 플랫폼 도구가 맡습니다. macOS는 AppKit, iOS는 UIKit, Linux는 GPU 페인터입니다. README는 "UI에 웹뷰도 JavaScript 브리지도 없고, 첫 픽셀 전에 앱 JavaScript가 돌지 않는다"고 적었습니다. Exact는 Expo 프레임워크의 다음 버전이 아니라 따로 만든 런타임이고, 치버는 기존 Expo 프레임워크를 계속 지원한다고 밝혔습니다.

치버 글에 따르면 Exact는 치버 혼자 시작한 프로젝트였고, 최근 Expo의 제임스 아이드(James Ide) 등이 함께 만들고 있습니다. 저장소는 2026년 11월 2일 만들어졌고, 공개 이틀째에 치버는 "새 커밋 83개, 이슈 41개 해결"을 알렸습니다(X).

Contract 언어: React 대신 쓰는 것

Exact에서 화면은 JSX가 아니라 Contract라는 새 언어로 씁니다. 치버는 Contract가 "처음부터 AI 에이전트를 위해 설계됐다"고 했습니다. 생김새는 파이썬처럼 들여쓰기에 뜻이 있고 형식이 엄격하며, 타입은 Rust처럼 분명하게 적습니다. 한 파일에서 React가 하던 화면 구성과 Redux, Zustand, TanStack Query가 하던 상태·데이터 흐름을 함께 적는다는 것이 치버의 설명입니다.

Contract 언어로 쓴 app.contract 파일. Post와 Feed 같은 데이터 모양을 shape로 정의하고, 검색어 state, 피드를 불러오는 resource, 좋아요 mutation, search와 like action, 그리고 column과 input, 반복문으로 게시물 행을 그리는 view를 들여쓰기 문법으로 적었다
Contract로 쓴 피드 화면. 데이터 모양(shape), 상태(state), 서버 데이터(resource), 쓰기(mutation), 동작(action), 화면(view)을 한 파일에 적는다. 출처: Charlie Cheever, A preview of Exact

Contract에서는 할 수 없는 일도 일부러 정해 두었습니다. 치버는 "재귀 반복문, useEffect, 임의의 TypeScript/JavaScript는 쓸 수 없다"고 적었고, 대신 컴파일러가 에이전트가 하려는 일을 어떻게 해야 하는지 알려 주는 오류 메시지를 낸다고 했습니다. README는 "Contract는 일부러 작다. 앱 전체가 컨텍스트 창 하나에 들어간다"고 설명합니다. 에이전트에게 넘기는 맥락의 크기와 구조가 왜 중요한지는 AI 코딩에 DDD가 중요한 이유에서 다뤘습니다.

화면보다 깊은 로직은 TypeScript나 Rust로 씁니다. 앱 전체를 Rust로 쓰면 JS 엔진을 아예 싣지 않을 수도 있지만, 치버는 "실제 앱 대부분은 비즈니스 로직을 TS로 쓰는 편이 더 실용적이었다"고 했습니다. 그래서 "React 없이"가 "JavaScript 없이"라는 뜻은 아닙니다. README에 따르면 TypeScript는 빌드 때 Hermes 바이트코드로 컴파일되어 네이티브에서는 Hermes 엔진으로, 웹에서는 브라우저 엔진으로 돌고, 첫 픽셀이 그려진 뒤에 로드됩니다.

Expo Exact로 할 수 있는 일

에이전트가 앱을 만들고, 띄우고, 보고, 테스트까지 사람 없이 하게 하는 것이 Exact의 핵심 기능입니다. README의 첫 원칙이 "Agent native"이고, 문장은 "에이전트가 앱을 만들고, 실행하고, 보고, 조작하고, 사람 없이 동작을 증명할 수 있다"입니다. 에이전트가 만든 결과를 스스로 확인하게 하는 장치가 왜 필요한지는 AI 하네스 뜻에서도 다뤘습니다.

  • 플랫폼 공통 조작 10개. tree(화면 구조), screenshot, tap, type, state, layout, logs, clock, prefer, perf를 웹, macOS, iOS(시뮬레이터와 실기기), Linux에서 scripts/agent.mjs 하나로 실행합니다. README는 이전 버전의 에이전트 API가 하나씩 늘어 80개가 됐던 것을 반성해 일부러 10개로 줄였다고 적었습니다.
  • 시계를 에이전트가 쥡니다. 애니메이션이 끝나길 기다리며 잠들지 않고, 에이전트가 시계를 앞으로 돌린 뒤 결과를 읽습니다. README 표현으로는 "두 조작 사이에는 아무것도 움직이지 않는다"입니다.
  • 테스트 파일 하나로 모든 플랫폼을 검사합니다. 같은 테스트가 플랫폼마다 그대로 돕니다. README는 2026년 10월 4일, Hermes와 Rust 빌드 캐시가 이미 준비된 컴퓨터의 깨끗한 저장소에서 새 에이전트에게 과제를 줬더니 약 57분 만에 끝냈고 세 플랫폼에서 테스트가 통과했다고 적었습니다. 그중 약 25분은 첫 macOS·iOS 빌드였습니다.
  • 기계가 읽는 출력과 에이전트용 문서. contract build --json은 고정 ID와 소스 위치가 붙은 진단을 내고, 새 앱에는 AGENTS.md와 CLAUDE.md가 들어 있어 코딩 에이전트를 시작 문서로 안내합니다. 2026년 11월 12일 기준 README와 저장소에는 MCP 서버가 없고, 에이전트는 위의 CLI 스크립트로 앱을 조작합니다.
  • 빠른 수정 반영. 치버에 따르면 Contract 수정은 대개 10~20ms에 상태를 유지한 채 반영되고, TypeScript 수정은 보통 100ms 안에, Rust 수정은 wasm으로 컴파일되어 핫 리로드됩니다. Contract 변경은 무선(OTA) 업데이트로 이미 설치된 앱에 보낼 수도 있다고 했습니다.
  • 네이티브 코드로 내려가는 출구. 프레임워크가 UIKit의 UIView 같은 플랫폼 요소를 만들면 그 요소에 직접 접근해 Swift 코드를 붙일 수 있습니다. 치버는 이를 Access Hatches라고 불렀습니다. 기존 Swift 앱에 Exact 화면을 끼워 넣는 ExactKit도 있습니다.
  • 그 밖의 것. GPU 모듈(Apple은 Metal, 웹은 WebGPU), 게임 엔진 추가 기능, 터미널 앱(TUI) 제작도 지원한다고 치버는 적었습니다.

플랫폼마다 그리는 방식은 조금씩 다릅니다. 치버는 iOS, macOS, 웹에서는 플랫폼이 주는 익숙한 요소를 쓰고, 표준이 약한 Android와 Windows, Linux에서는 Exact가 픽셀을 더 많이 직접 그린다고 했습니다. Linux와 Windows용 자체 렌더러 이름은 Ink입니다. 앱도 에이전트가 쓸 것을 전제로 접근성 메타데이터와 API를 낸다고 했지만, 발표 글에는 구체적인 설명이 없습니다.

Expo Exact 사용법: 설치부터 첫 앱까지

지금은 npm 패키지가 아니라 GitHub 저장소를 내려받아 씁니다. README가 적은 준비물은 Rust, Bun 1.4.2(Node와 npm은 필요 없음), Google Chrome, Xcode 27.1 이상이고, 네이티브에서 TypeScript 앱을 돌리려면 Hermes가 필요합니다. Apple 플랫폼 빌드에 Xcode가 필요하니 macOS에서 시작하는 편이 수월합니다.

git clone https://github.com/expo/exact.git
cd exact
bun scripts/exact.mjs setup      # 준비 상태 점검과 설치
bun host/web/dev.mjs             # 예제 앱 Caltrain을 http://127.0.0.1:8765/ 에서 실행
bun host/apple/build.mjs --run         # macOS로 실행
bun host/apple/build.mjs --ios --run   # iOS 시뮬레이터로 실행

README는 첫 네이티브 빌드가 노트북에서 10~15분 걸리고, 그다음부터는 1~2분이라고 적었습니다. 내 앱은 bun scripts/exact.mjs new ../hello로 만듭니다. 그러면 화면을 쓰는 app.contract, 데이터를 다루는 app.ts, 앱 정보를 담은 app.json이 생기고, 같이 생기는 AGENTS.md(와 CLAUDE.md)가 코딩 에이전트를 docs/start-here.md로 안내합니다.

Expo가 권하는 방식은 사람이 문법을 익혀 직접 쓰기보다 에이전트에게 맡기는 것입니다. Expo 공식 X 게시물의 마지막 문장도 "에이전트에게 써 보게 하라"였고, 시작점으로 쓸 템플릿 앱 모음(expo/exact-templates)을 함께 안내했습니다. 예를 들어 Claude Code에 저장소를 열어 주고 "start-here 문서를 읽고 할 일 목록 앱을 만들어 웹과 iOS에서 테스트해 줘"처럼 맡기는 흐름입니다. 클로드 코드에 일을 맡기는 기본기는 Claude Code 팁 11가지에서도 다뤘습니다.

배포는 아직 Expo 클라우드가 아니라 저장소의 스크립트로 합니다. 웹 결과물과 서명된 업데이트 묶음은 scripts/deploy.mjs로 올리고, Mac 앱은 exact release가 서명과 공증까지 합니다. Android 앱도 빌드해 에뮬레이터나 폰에서 돌릴 수 있지만, Play 스토어 업로드와 심사 제출은 직접 해야 합니다.

요금과 라이선스: 무료, 다만 릴리스가 없다

Exact는 MIT 라이선스로 공개되어 무료로 쓰고 고치고 포크할 수 있습니다. LICENSE 파일의 저작권자는 Expo의 법인명인 650 Industries, Inc.입니다. 유료 요금제 이야기는 아직 없고, 치버는 "Exact는 앱 빌드, 업데이트, 관찰, 호스팅 같은 Expo의 클라우드 서비스와 함께 쓸 수 있게 된다"고 미래형으로 적었습니다. 기존 Expo 클라우드와 어떻게 연동될지, 따로 값을 받을지는 아직 문서가 없습니다.

대신 "무료"에는 조건이 붙습니다. GitHub에는 릴리스도 태그도 없고, README는 "Exact는 1.0 이전이고 매일 바뀐다. API 안정성도, 하위 호환도, 이전 안내서도 없다"고 못 박았습니다. 치버도 "정식 릴리스 절차를 어떻게 할지 아직 정하지 않았다"고 했습니다.

알아 둘 설정이 하나 있습니다. Exact는 에이전트가 개발하며 겪은 일을 일지로 적어 Expo에 보내는 피드백 기능이 있습니다. README에 따르면 프로젝트 설정이 always이거나, 기본값 ask에서 사용자가 허락했을 때만 보내고, 환경 변수 EXACT_FEEDBACK=0을 두면 그 컴퓨터에서는 알림도 전송도 모두 끕니다. 회사 코드로 시험할 때는 이 값을 먼저 정해 두는 편이 안전합니다.

Expo가 공개한 성능 수치

Expo가 내세운 숫자는 주로 웹 로딩 속도, 스크롤, 앱 시작 시간이고, 모두 Expo 쪽이 공개한 값입니다. 독립된 곳에서 재현한 결과는 2026년 11월 12일 기준 찾지 못했습니다.

항목 Exact 비교 대상
웹 LCP(포켓몬 도감) 802ms Astro 805ms, SvelteKit 1,150ms, Next.js 2,014ms
iPad 스크롤(무거운 목록) 119.9fps UIKit 119.6fps, SwiftUI 92.1fps
iOS 앱 이전 사례 스플래시 0.40초 옮기기 전 1.92초
이전 사례 실행 직후 메모리 36MB 옮기기 전 106MB
RealWorld 웹 코드 크기 26KB React 81KB

표의 값은 모두 Expo 쪽이 공개한 것입니다. 웹 LCP, 스크롤, RealWorld는 Expo 쪽이 직접 쟀고, 이전 사례는 초기 시험자의 앱 수치를 치버가 발표 글에 실은 것입니다. 스크롤은 iPad Pro M1(120Hz), 이전 사례는 이름을 밝히지 않은 앱 하나, RealWorld는 웹 전용 앱 기준입니다.

웹은 Socket의 놀런 로슨(Nolan Lawson)이 제안한 포켓몬 도감 벤치마크입니다. 프레임워크마다 에이전트가 만든 앱 5개를 Lighthouse 모바일 설정으로 재어 중앙값을 냈고(최대 콘텐츠가 그려지는 시간 LCP는 위 표), 홈 화면에 실린 JavaScript는 Exact와 Astro가 0KiB, SvelteKit 36KiB, Next.js 142KiB입니다. Next.js에서 페이지 이동이 느려지는 다른 원인은 Next.js 링크가 느린 이유에서 다뤘습니다.

포켓몬 도감 벤치마크 홈 화면의 Lighthouse 모바일 측정표. LCP는 Exact 802ms, Astro 805ms, SvelteKit 1150ms, Next.js 2014ms이고 JavaScript 용량은 0, 0, 36, 142KiB다
포켓몬 도감 벤치마크(Lighthouse 모바일, 프레임워크별 앱 5개 중앙값). 표 부제에 "our rerun"이라고 적혀 있다. 출처: Charlie Cheever, A preview of Exact

이 표는 읽을 때 조건을 봐야 합니다. 저장소에 올라온 원자료를 보면 경쟁 프레임워크 값은 2026년 10월 30일 한꺼번에 잰 실행에서, Exact 값은 11월 2일 Exact만 다시 잰 실행(round 21)에서 나왔습니다(competitors.md, exact-round21.md). 10월 30일 실행에서는 Exact가 LCP 2,161ms, 작성 비용(에이전트가 앱을 만드는 데 쓴 토큰 비용) 6.67달러로 넷 중 가장 나빴습니다. 그 사이 Exact를 고쳐 다시 잰 것으로 보이고, 저장소 결과 폴더에는 같은 날 넷을 함께 다시 잰 값이 없습니다.

iOS 쪽 숫자는 두 가지입니다. iPad Pro M1(120Hz) 스크롤에서 무거운 목록은 UIKit 119.6fps, SwiftUI 92.1fps, Exact 119.9fps였습니다.

iPad Pro M1 120Hz에서 UIKit, SwiftUI, Exact의 스크롤 성능을 비교한 막대 그래프. 무거운 목록에서 초당 프레임은 UIKit 119.6, SwiftUI 92.1, Exact 119.9이고 실시간 업데이트가 있을 때는 96.1, 68.4, 120.0이다
iPad Pro M1(120Hz) 스크롤 비교. 무거운 목록에서 UIKit 119.6fps, SwiftUI 92.1fps, Exact 119.9fps. Expo 쪽 자체 측정. 출처: Charlie Cheever, A preview of Exact

처음 시험한 사람 중 한 명은 iOS 앱을 같은 날 Exact로 옮겼는데, 스플래시 화면이 사라지는 시간이 1.92초에서 0.40초로, 실행 직후 메모리가 106MB에서 36MB로, 시뮬레이터 기준 앱 크기가 151MB에서 36MB로 줄었다고 합니다. 앱 이름은 공개하지 않았습니다.

한 iOS 앱을 Exact로 옮기기 전후 비교표. 스플래시 화면이 사라지는 시간 1.92초에서 0.40초, 목록 표시 1.93초에서 0.88초, 실행 후 메모리 106MB에서 36MB, 시뮬레이터 앱 크기 151MB에서 36MB
한 iOS 앱을 Exact로 옮긴 전후 비교(앱 이름 비공개, 앱 크기는 시뮬레이터 기준). 출처: Charlie Cheever, A preview of Exact

README의 "콜드 스타트 100ms"는 측정 결과가 아니라 목표치입니다. README의 속도 예산표에 첫 화면이 상호작용 가능해질 때까지 중앙값 100ms, 수정에서 화면 반영까지 100ms가 목표로 적혀 있습니다. 실제 측정으로 적힌 것은 새로 만든 앱에서 Contract나 TypeScript 수정이 99ms 만에 페이지에 반영됐다는 것과, RealWorld 벤치마크(웹 전용)에서 Exact 런타임이 React SSR보다 약 300ms 먼저 준비되고 코드가 26KB로 React의 81KB보다 작았다는 것입니다.

써 본 사람들의 평가

공개 사흘 동안 나온 후기는 "빠르고 에이전트가 잘 다룬다"와 "아직 실무에 쓰기는 이르다"로 갈립니다. 필자가 직접 써 본 후기가 아니라 커뮤니티 글을 읽고 정리한 것입니다.

실제로 옮겨 본 사례가 몇 있습니다. Reddit r/expo의 u/hydromoll은 React Native 0.88과 Expo SDK 58로 만든 실서비스 반려동물 입양 앱을 프롬프트 한 번으로 Exact로 옮겼다고 썼습니다. 기능 10개, Contract와 TS 약 8,600줄이 나왔고, 첫 네이티브 빌드는 약 14분, 이후 빌드는 1~2분이었습니다. 피드와 채팅 화면이 "FlashList도, 가상화 튜닝도, memo 지옥도 없이" 부드럽게 스크롤된다고 했습니다(r/expo). Medium의 Jayesh는 Cursor로 계산기를 약 15분 만에 만들었고, 컴파일러 오류가 "다음에 무엇을 고칠지 분명할 만큼 구체적"이었다고 적었습니다(Medium).

에이전트가 앱을 직접 본다는 설계에 대한 호평도 있습니다. Hacker News의 henry-hong은 "에이전트가 짠 UI의 어려운 점은 짜는 게 아니라, 에이전트가 자기가 만든 것을 한 번도 보지 않는다는 것"이라며 이 부분을 짚었습니다(HN). 국내 GeekNews 댓글에서도 "가상 시계로 비동기 테스트를 제어하는 기능은 꽤 유용해 보인다"는 반응이 나왔습니다(GeekNews). 또 다른 HN 사용자 doodlesdev는 이 방식이 통한다면 "Electron의 군살을 걷어 낸 네이티브 앱이 다시 늘 것"이라고 기대했습니다(HN). Electron을 떠나는 흐름은 디스코드가 Electron에서 Rust로 간 사례에서도 다뤘습니다.

반대쪽 목소리도 뚜렷합니다. 135점, 댓글 109개(11월 12일 조회 기준)가 달린 HN 메인 스레드에서는 fodkodrasz가 "Windows나 Android를 지원하지 않으면 세계 컴퓨팅 시장의 74%를 빠뜨린 것"이라고 꼬집었고(HN), egorfine은 README가 개발자가 아니라 "에이전트를 위한 프로젝트"라고 선언해 거부감이 든다고 했습니다(HN). README와 코드가 Claude 말투로 쓰여 사람이 읽기 어렵다는 지적, Contract 같은 전용 언어가 복잡한 UI까지 감당할지 모르겠다는 의문도 있었습니다. Convex 블로그는 연동에는 성공했지만, Exact가 아직 npm 패키지를 런타임에 쓰지 못하고 전역 WebSocket이 없어서 Convex 공식 클라이언트 대신 에이전트가 약 170줄짜리 클라이언트를 새로 짰다고 적었습니다(Convex).

앱을 옮긴 hydromoll도 "지금 큰 회사와 앱에 갈아타라고 권하는 건 나쁜 생각"이라며 아직 알파 단계라고 덧붙였습니다.

한계: 프리알파, Android와 Windows는 아직

지금의 Exact는 실서비스용이 아니라 시험해 보는 단계입니다. 쓸지 판단할 때 볼 한계는 다음과 같습니다.

  • 플랫폼. README가 첫 버전 기준으로 삼은 곳은 웹, macOS, iOS, Linux 네 곳입니다. Android는 "2026년 10월 7일 지원 대상에 들어왔고 아직 초기 단계", Windows는 "미완성"입니다. 치버도 "iOS가 가장 성숙하고, 웹과 macOS는 꽤 좋으며, Android와 Windows와 Linux는 돌아가지만 덜 성숙하다"고 했습니다. Linux 호스트는 아직 실행만 되고 편집 중 반영은 안 됩니다.
  • 한 번 쓰면 끝은 아닙니다. 제임스 아이드는 "한 플랫폼용 Exact 코드가 다른 모든 플랫폼에서 마법처럼 완벽하게 돌지는 않는다. 각 플랫폼마다 원하는 결과를 얻으려면 손이 간다"고 기대치를 낮췄습니다. 목표는 플랫폼 N개에 드는 토큰 비용을 N배에서 1배 가까이로 줄이는 것이라고 했습니다(X).
  • 생태계. React Native 라이브러리와 npm 패키지를 그대로 쓸 수 없습니다. 대신 저장소에 결제(@exact/payments), 지도(@exact/maps), 카메라(@exact/camera) 같은 Exact 자체 패키지가 생기고 있습니다. README는 여러 제스처가 겹칠 때 하나를 고르는 처리(gesture arena), 일반 레이아웃 애니메이션, 웹뷰(iframe 제외), 개발자 도구 UI를 첫 버전에서 일부러 뺐다고 적었습니다. 팬, 스와이프, 핀치 같은 기본 제스처는 동작합니다. 운영 중인 앱에 TypeScript나 Rust 코드 업데이트를 서명해 보내는 기능도 아직 없습니다.
  • 한글 입력. 저장소의 닫힌 이슈 문서에 따르면 macOS 27.2의 한국어 2벌식 입력에서 AppKit 입력란이 글자를 조합하는 중에 누른 Enter가 조합 중이 아닌 것으로 잡혀 '전송'이 실행됩니다. Exact는 순정 입력란도 같다며 고치지 않기로 했습니다. 한국어 채팅이나 검색 앱을 macOS용으로 만든다면 직접 처리해야 할 부분입니다.

처음 써 볼 때 정해 둘 것

  1. 목적을 시험용으로 정합니다. 운영 중인 React Native 앱을 옮길 계획보다, 새 사이드 프로젝트나 사내 도구로 에이전트 개발 흐름을 익혀 보는 쪽이 지금 단계에 맞습니다. 토스는 2022년 6월부터 React Native에 투자해 자체 React Native 프레임워크 Granite까지 공개했고(토스 기술 블로그, toss/granite), 우아한형제들도 2024년 기술블로그에서 배민커넥트 앱을 React Native로 개발한다고 밝혔습니다(우아한형제들 기술블로그). 이런 팀에게 Exact는 당장의 대안이라기보다 지켜볼 실험입니다.
  2. 대상 플랫폼을 확인합니다. Android나 Windows가 꼭 필요하면 아직 기다리는 편이 낫습니다.
  3. 필요한 라이브러리를 먼저 적어 봅니다. npm 패키지에 기대던 기능은 Exact 자체 패키지(@exact/*)에 있는지 먼저 확인하고, 없으면 직접 짜야 할 수 있습니다. Convex 사례처럼 공식 클라이언트 대신 에이전트가 작은 클라이언트를 새로 짠 경우도 있습니다.
  4. 빌드 환경을 준비합니다. macOS, Xcode 27.1 이상, Rust, Bun 1.4.2, Google Chrome이 필요하고, 첫 네이티브 빌드에 10~15분을 잡아 둡니다.
  5. 피드백 전송 설정을 정합니다. 회사 코드라면 EXACT_FEEDBACK=0을 두거나 프로젝트 설정을 확인합니다.
  6. 버전을 고정합니다. 릴리스가 없고 API가 매일 바뀌므로, 시험한 커밋 해시를 기록해 두어야 나중에 같은 결과를 다시 낼 수 있습니다.

Expo는 어떤 회사인가

Expo는 React Native 앱 개발에 쓰는 Expo 프레임워크와 앱 빌드·업데이트·호스팅용 클라우드 서비스를 만드는 회사이고, Exact LICENSE에 적힌 법인명은 650 Industries, Inc.입니다. Exact를 공개한 찰리 치버는 공동창업자이고, 제임스 아이드도 Expo에서 Exact 개발을 함께하고 있습니다. 치버는 발표 글에서 Expo 프레임워크가 "어느 때보다 빠르게 크고 있다"며, 회사가 Exact와 별개로 이 프레임워크를 계속 지원한다고 밝혔습니다.

출처

  1. GitHub expo/exact: github.com/expo/exact
  2. Charlie Cheever, A preview of Exact: ccheever.expo.app
  3. X: x.com/ccheever/status/2119764253242695754
  4. Expo X: x.com/expo/status/2119805185967169720
  5. X: x.com/ccheever/status/2120285344184877277
  6. expo/exact-templates: github.com/expo/exact-templates
  7. competitors.md: github.com/expo/exact/blob/main/bench/agent-framework/results/competito…
  8. exact-round21.md: github.com/expo/exact/blob/main/bench/agent-framework/results/exact-rou…
  9. r/expo: reddit.com/r/expo/comments/1xsjdwz/i_let_an_agent_rewrite_my_production…
  10. Medium: medium.com/@jayeshm.2318/exact-by-expo-a-rust-based-cross-platform-nati…
  11. HN: news.ycombinator.com/item?id=50438064
  12. GeekNews: news.hada.io/topic?id=36991
  13. HN: news.ycombinator.com/item?id=50434172
  14. HN: news.ycombinator.com/item?id=50437266
  15. HN: news.ycombinator.com/item?id=50437512
  16. Convex: stack.convex.dev/expo-exact-with-convex
  17. X: x.com/JI/status/2119857454632894573
  18. 토스 기술 블로그: toss.tech/article/react-native-2024
  19. toss/granite: github.com/toss/granite
  20. 우아한형제들 기술블로그: techblog.woowahan.com/15883