Tauri v2 vs Electron 6개월 실제 개발 후 — 나의 솔직한 평가
Source: Dev.to
Overview
모든 테스트는 8년 된 MacBook Air에서 진행되었습니다. 저는 Electron을 심도 있게 평가한 뒤 Tauri v2로 여러 macOS 앱을 배포했습니다. 아래 내용은 실제 6개월 개발 경험을 바탕한 것이며, 인위적인 벤치마크가 아닙니다.
Bundle Size
- Electron은 Chromium을 번들에 포함하므로, 코드를 추가하기 전에도 앱 크기가 대략 150 MB 정도 됩니다.
- Tauri는 시스템 WebView(macOS에서는 WKWebView)를 사용합니다. 제가 만든 가장 큰 Tauri 앱은 10 MB 이하의 DMG 파일로 배포됩니다.
App Store 외부에서 유료 앱을 배포할 경우 차이는 크게 느껴집니다. 예를 들어 단순 PDF 도구라 해도 150 MB 다운로드는 판매에 큰 장벽이 될 수 있습니다.
Language and Development Experience
| Aspect | Electron | Tauri |
|---|---|---|
| Primary language | JavaScript/TypeScript | 백엔드는 Rust, 프론트엔드는 任意 웹 기술 |
| Learning curve | JS를 이미 알고 있다면 낮음 | Rust가 처음이라면 높음; 빌림 검사기와 async 공유 상태에 익숙해지는 데 2~3개월 정도 소요될 수 있음 |
| Type safety | 런타임에 타입 안전성 없음 | 컴파일 시 강력한 보장; 타입 시스템이 사용자에게 도달하기 전에 많은 오류를 잡아줌 |
| Performance headroom | Chromium에 의해 제한됨 | 네이티브 Rust 코드 덕분에 여유가 큼 |
약간의 Rust 지식이 있더라도 개발 속도가 예상보다 느렸습니다.
Permissions and Plugin Ecosystem
- Tauri의 capabilities/permissions 시스템은 각 창이 접근할 수 있는 범위를 세밀하게 제어할 수 있게 해줍니다.
- 플러그인 생태계가 빠르게 확장되고 있습니다. 자주 사용되는 플러그인 예시:
tauri-plugin-fstauri-plugin-shelltauri-plugin-notification
대부분의 일반적인 기능은 이미 플러그인으로 제공됩니다.
Inter‑Process Communication (IPC)
프론트엔드와 Rust 백엔드 간 통신은 invoke()를 사용합니다. 적절히 설정하면 이 IPC는 깨끗하고 타입‑안전합니다.
Native macOS API Access
macOS 전용 API(예: PDFKit, Vision Framework)에 접근하려면 Swift/Objective‑C 사이드카 바이너리가 필요합니다. Tauri는 이 레이어를 추상화하지 않으며, 직접 브리지를 구축하고 관리해야 합니다. 작동은 하지만 문서가 부족합니다.
Hot Reload and Development Speed
cargo tauri dev는 프론트엔드에 대한 핫 리로드를 제공합니다.- Rust 코드를 수정하면 전체 재컴파일이 발생하며, 복잡한 백엔드의 경우 30~60초가 소요됩니다.
- 비교하면 Electron의 개발 경험이 더 빠르게 느껴집니다.
Error Handling
Tauri 명령이 실패하면 프론트엔드에서는 흔히 “command failed”라는 일반적인 메시지만 받습니다. 유용한 진단 정보를 얻으려면 Rust 측에서 오류를 명시적으로 직렬화해야 합니다.
Conclusion
Tauri v2는 번들 크기, 성능, Rust 통합이 중요한 앱에 강력한 선택입니다. 그러나 보편적인 해결책은 아니며 프로젝트 제약 조건과 팀 역량에 따라 적절한 도구를 선택해야 합니다.
Example app: Hiyoko PDF Vault –
— @hiyoyok