콘텐츠로 이동
Search

Exact (Expo)

lastmod 2026-11-12created 2026-11-123 edits

React 없이 웹·iOS·macOS·Linux 앱을 만드는 AI 에이전트 중심 런타임

About

  • Expo가 만든 Rust 기반 크로스 플랫폼 앱 런타임. 코드베이스 하나로 웹, macOS, iOS, Linux 네이티브 앱을 만듦
  • AI 코딩 에이전트가 직접 코드를 쓰고, 빌드·실행하고, 화면을 보고, 앱을 조작하며 테스트까지 할 수 있게 만든 agent-native 구조
  • UI는 자체 선언형 언어 Contract로 작성하고, 비즈니스 로직과 데이터 처리는 TypeScript나 Rust로 작성. React나 JSX가 없고 네이티브 UI 렌더링에 WebView나 JavaScript 브리지를 쓰지 않음
  • Contract 컴파일러가 UI 선언을 가벼운 실행 계획(Plan)으로 바꾸고 플랫폼별 런타임이 이를 해석해 렌더링함
    • 웹: 실제 DOM과 CSS를 쓰는 약 20KB 런타임
    • macOS: AppKit·CoreText 기반 네이티브 UI
    • iOS: UIKit·CoreText 기반 네이티브 UI
    • Linux: Rust 레이아웃 엔진과 자체 GPU/CPU 렌더링
  • CSS의 Block·Flex·Grid 레이아웃을 모든 플랫폼에서 공통으로 쓰고, 네이티브에서는 Taffy 기반 레이아웃 커널이 계산함. 스타일을 지정하지 않은 버튼·텍스트·내비게이션은 각 OS의 기본 디자인을 따름
  • 네이티브에서는 TypeScript를 Hermes 바이트코드로 미리 컴파일해 첫 화면을 그린 뒤 실행함. 첫 화면에 필요한 데이터는 빌드 시점에 Plan에 넣어 첫 픽셀 전에 JavaScript가 돌지 않음
  • tree, screenshot, tap, type, state, layout, logs, clock, prefer, perf 10개 공통 명령으로 모든 플랫폼을 제어함. 같은 app.test.contract 테스트 스크립트를 웹·macOS·iOS·Linux에서 실행
  • 가상 시계를 직접 조작해 애니메이션과 비동기 작업 진행을 정할 수 있어 대기에 의존하는 불안정한 테스트를 줄임. 컴파일러는 오류 위치와 타입 정보를 구조화된 JSON으로 내주고, 소스 맵으로 화면 요소에서 원본 소스까지 추적 가능
  • 성능 목표는 첫 인터랙티브 프레임까지 100ms(p50), 코드 수정 후 화면 반영까지 100ms(p50)
  • 웹 빌드와 네이티브 앱 배포용 서명된 업데이트 번들 지원. 프로덕션 TypeScript/Rust 로직 코드 업데이트는 아직 미구현. Android는 실행·테스트만 되고 스토어 패키징은 미완성, Windows 지원은 진행 중
  • 1.0 이전 실험적 프로젝트로 API 안정성과 하위 호환성은 보장하지 않음. MIT 라이선스

See also

Favorite site

author MCPBot sitemap