비교 목록으로 돌아가기
크로스 플랫폼 UI

Perry vs Tauri

Tauri는 Rust 백엔드와, 운영체제에 내장된 웹뷰 — Windows의 WebView2, macOS의 WKWebView, Linux의 WebKitGTK — 안에서 동작하는 프런트엔드로 크로스 플랫폼 데스크톱 (그리고 점차 모바일) 앱을 만드는 프레임워크입니다. Tauri 앱은 OS 웹뷰가 번들되지 않기 때문에 Electron보다 훨씬 작습니다. Perry는 다른 길을 택합니다 — 웹뷰 자체를 쓰지 않고, HTML 렌더링도 없이, TypeScript를 곧바로 네이티브 머신 코드로 컴파일하여 실제 플랫폼 위젯을 구동합니다.

Tauri란 무엇인가?

Tauri는 Rust로 작성된 오픈소스 프레임워크로, 웹 프런트엔드 (React, Vue, Svelte 등 어떤 프레임워크든)와 Rust 백엔드로 크로스 플랫폼 애플리케이션을 만들 수 있게 해줍니다. Chromium을 번들링하는 대신 시스템에 내장된 웹뷰를 사용하기 때문에, Linux/Windows/macOS에서 앱 설치 파일이 한 자릿수 MB 수준에 머무릅니다. Tauri 2부터 모바일 (iOS와 Android) 지원이 추가되었습니다. 프런트엔드는 시스템 웹뷰가 HTML/CSS/JS로 그리며, Rust 백엔드와의 통신은 IPC 브리지를 통해 이루어집니다.

Perry란 무엇인가?

Perry는 LLVM을 통해 TypeScript를 곧바로 네이티브 머신 코드로 컴파일합니다. UI 레이어 (perry/ui)는 웹뷰가 그리는 HTML이 아니라 네이티브 플랫폼 위젯에 매핑되는 SwiftUI 스타일의 선언적 API입니다. Perry로 작성된 앱은 JavaScript 엔진을 동반하지 않고, WebKit/WebView2 안에서 돌지 않으며, UI와 로직 사이에 IPC 브리지도 필요 없습니다. Perry는 모바일, 워치, TV를 포함해 10개 플랫폼을 타겟합니다.

나란히 비교

기능PerryTauri
UI 렌더링네이티브 플랫폼 위젯 (AppKit, UIKit, GTK4, Win32, JNI)시스템 웹뷰 (WKWebView, WebView2, WebKitGTK) — HTML/CSS/JS
프런트엔드 언어TypeScript (선언적 위젯 API)어떤 웹 프레임워크든 (React, Vue 등) HTML/CSS/JS
백엔드 언어TypeScriptRust
UI와 로직 간 IPC없음 — 단일 프로세스, 직접 호출필요 (UI는 웹뷰, 로직은 Rust 프로세스)
Hello-world 설치 파일약 330 KB약 3–10 MB (웹뷰는 OS에서 제공)
모바일 (iOS, Android)지원 — 네이티브 UI지원 — 웹뷰 기반 (Tauri 2)
워치·TVwatchOS, tvOS, Wear OS지원하지 않음
WebAssembly 타겟지원 (DOM 브리지를 통한 perry/ui)해당 없음 (Tauri 자체가 웹뷰를 네이티브로 사용)
성숙도1.0 이전안정 (1.x / 2.x)

Perry가 앞서는 점

  • +진정한 네이티브 UI — Perry는 HTML을 그리지 않고 실제 플랫폼 위젯을 구동하므로, 앱이 네이티브 스크롤 물리, 포커스, 접근성, IME, OS 테마를 무료로 물려받습니다.
  • +더 작은 hello world (Tauri의 한 자릿수 MB 대비 약 330 KB), 그리고 런타임에 시스템 웹뷰 의존성이 없습니다.
  • +단일 언어, 단일 프로세스. UI와 로직 모두 TypeScript이며, 설계하거나 디버깅할 IPC 브리지가 없습니다.
  • +watchOS, tvOS, Wear OS, 그리고 번들된 웹뷰가 아닌 진짜 네이티브 컴파일 파이프라인을 갖춘 완전한 Web/JS 타겟.
  • +플랫폼 간 웹뷰 동작 차이가 없습니다. Tauri는 WKWebView vs WebView2 vs WebKitGTK의 변덕을 그대로 물려받지만, Perry는 각 OS에서 네이티브 위젯 경로를 택합니다.
  • +연산 성능은 웹뷰 JIT가 아니라 AOT 네이티브입니다. M1 Max에서 동일 조건으로 측정한 연산 마이크로벤치마크에서 Perry가 우위에 있습니다 (perry/benchmarks).

Tauri이 앞서는 점

  • +활발한 2.x 라인과 큰 커뮤니티를 가진 성숙하고 안정적인 프레임워크.
  • +프런트엔드 유연성 — 이미 알고 있는 어떤 웹 프레임워크든 (React, Vue, Svelte, Solid 등) 사용할 수 있습니다.
  • +Tauri는 Chromium을 번들링하는 대신 OS가 제공하는 웹뷰에 의존하기 때문에 Electron보다 설치 파일이 작습니다.
  • +시스템 수준 작업 (파일 시스템, 네이티브 API)을 처리해야 하고 거기서 컴파일 타임 보장을 원한다면 Rust 백엔드는 이상적입니다.
  • +웹뷰 렌더링 덕분에 CSS/HTML 반복 속도와 DevTools가 웹 개발에서 기대하는 그대로 작동합니다.
  • +확립된 패키징, 코드 서명, 업데이터 파이프라인.

Perry을 선택해야 할 때

(웹뷰가 그리는 HTML이 아닌) 진정한 네이티브 UI가 필요할 때, 웹뷰 의존성이 없는 작은 네이티브 바이너리가 필요할 때, 데스크톱·모바일·워치·TV를 아우르는 하나의 TypeScript 코드베이스가 필요할 때, 또는 컴파일 타임에 검증되는 크로스 플랫폼 위젯 코드가 필요할 때 Perry를 선택하세요.

Tauri을 선택해야 할 때

이미 있거나 계획 중인 웹 프런트엔드가 있을 때, Rust 백엔드 기반의 작은 설치 파일을 가진 데스크톱 앱을 원할 때, UI를 HTML/CSS로 만드는 것이 만족스러울 때, 또는 웹 프레임워크와 도구의 폭넓은 생태계를 활용하고 싶을 때 Tauri를 선택하세요.

결론

Tauri는 훨씬 더 좋은 Electron입니다 — 같은 웹 기술 접근 방식이지만 OS 웹뷰가 번들되지 않기 때문에 설치 파일이 극적으로 작습니다. 하지만 여전히 웹뷰 기반 아키텍처이며, 그 말은 HTML/CSS/JS 렌더링과 IPC 브리지가 따라온다는 뜻입니다. Perry는 다른 자리를 택합니다: 웹뷰 자체가 없고, 네이티브 플랫폼 위젯, 단일 프로세스. 웹 스택을 유지하면서 Electron보다 작은 바이너리를 원한다면 Tauri가 정답입니다. TypeScript에서 웹 스택을 떠나 네이티브 위젯으로 가고 싶다면 Perry가 정답입니다.

Perry 사용해보기

오늘 바로 TypeScript를 네이티브로 컴파일하세요.

시작하기