개요
데스크톱 앱 프레임워크는 웹 기술(HTML/CSS/JS) 또는 네이티브 UI로 크로스플랫폼 데스크톱 애플리케이션을 만드는 도구입니다. Electron이 시장을 지배했으나 메모리/번들 크기 문제로 Tauri, Electrobun 등 경량 대안이 등장하고 있습니다.
웹 기반 프레임워크
Electron
| 항목 | 내용 |
|---|---|
| 개발 | OpenJS Foundation (원래 GitHub) |
| 언어 | JavaScript/TypeScript |
| 렌더링 | Chromium (내장) + Node.js |
| 번들 크기 | ~150MB |
| 라이선스 | MIT |
| 웹사이트 | https://www.electronjs.org |
특징:
- 데스크톱 앱 프레임워크의 사실상 표준
- VS Code, Discord, Slack, Notion, Figma, Obsidian 등 사용
- Chromium 전체 내장 → 크로스 브라우저 호환성 문제 없음
- npm 생태계 전체 활용 가능
- 단점: 메모리 과다 (각 앱이 Chromium 인스턴스), 번들 크기 큼
Tauri
| 항목 | 내용 |
|---|---|
| 개발 | Tauri Foundation |
| 언어 | Rust (백엔드) + JS/TS (프론트엔드) |
| 렌더링 | OS 네이티브 WebView (WKWebView, WebView2, WebKitGTK) |
| 번들 크기 | |
| 라이선스 | MIT / Apache 2.0 |
| 웹사이트 | https://tauri.app |
특징:
- Electron 대비 10~50배 작은 번들, 절반 이하 메모리
- Rust 백엔드 → 높은 성능, 메모리 안전성
- Tauri 2.0: 모바일(iOS/Android) 지원 추가
- 단점: Rust 학습 곡선, OS WebView 차이로 렌더링 불일치 가능
Electrobun
| 항목 | 내용 |
|---|---|
| 개발 | BlackBirdHQ |
| 언어 | TypeScript + Zig |
| 렌더링 | OOPIF 기반 웹뷰 |
| 번들 크기 | ~12MB |
| 런타임 | Bun |
| 라이선스 | MIT |
특징:
- Bun 런타임 + Zig 네이티브 바인딩
- 14KB 업데이트 패치 (바이너리 diff)
- 코드 서명·공증·배포 통합
- TypeScript만으로 개발 가능 (Rust 불필요)
- 아직 초기 단계
Neutralino
| 항목 | 내용 |
|---|---|
| 언어 | JS/TS (프론트엔드) + C++ (백엔드) |
| 렌더링 | OS 네이티브 WebView |
| 번들 크기 | ~2MB |
| 라이선스 | MIT |
- Tauri보다 더 가벼움, C++ 백엔드
- API 제한적, 생태계 작음
Wails
| 항목 | 내용 |
|---|---|
| 언어 | Go (백엔드) + JS/TS (프론트엔드) |
| 렌더링 | OS 네이티브 WebView |
| 번들 크기 | |
| 라이선스 | MIT |
- Go 개발자를 위한 Tauri 대안
- Go의 동시성 강점 활용
- 단일 바이너리 배포
네이티브 UI 프레임워크
Flutter (Desktop)
| 항목 | 내용 |
|---|---|
| 개발 | |
| 언어 | Dart |
| 렌더링 | Skia/Impeller (자체 렌더링 엔진) |
| 번들 크기 | ~20MB |
| 플랫폼 | macOS, Windows, Linux + 모바일 + 웹 |
- 모바일 → 데스크톱 확장
- 자체 렌더링 → 모든 플랫폼에서 동일한 UI
- 단점: OS 네이티브 룩앤필 아님
Qt
| 항목 | 내용 |
|---|---|
| 언어 | C++, Python (PySide/PyQt), QML |
| 렌더링 | 네이티브 위젯 + 커스텀 |
| 라이선스 | LGPL / 상용 |
- 가장 오래된 크로스플랫폼 프레임워크
- 산업용/임베디드 앱에 강점
- Python 바인딩 (PySide6, PyQt6)
.NET MAUI
| 항목 | 내용 |
|---|---|
| 개발 | Microsoft |
| 언어 | C#, XAML |
| 렌더링 | 네이티브 컨트롤 |
| 플랫폼 | Windows, macOS, iOS, Android |
- Xamarin 후속
- .NET 생태계 통합
- Windows 앱에 최적
SwiftUI (macOS)
| 항목 | 내용 |
|---|---|
| 개발 | Apple |
| 언어 | Swift |
| 플랫폼 | macOS, iOS, iPadOS, watchOS, visionOS |
- Apple 전용, 가장 네이티브한 경험
- 크로스플랫폼 아님 (Apple 생태계 내)
종합 비교
| 프레임워크 | 언어 | 번들 크기 | 메모리 | 성숙도 | 모바일 | 네이티브 느낌 |
|---|---|---|---|---|---|---|
| Electron | JS/TS | ~150MB | 높음 | 최고 | X | 낮음 |
| Tauri | Rust+JS | 낮음 | 높음 | O (v2) | 중간 | |
| Electrobun | TS+Zig | ~12MB | 낮음 | 초기 | X | 중간 |
| Neutralino | JS+C++ | ~2MB | 최저 | 중간 | X | 중간 |
| Wails | Go+JS | 낮음 | 중간 | X | 중간 | |
| Flutter | Dart | ~20MB | 중간 | 높음 | O | 자체 UI |
| Qt | C++/Python | 가변 | 중간 | 최고 | O | 높음 |
| .NET MAUI | C# | 가변 | 중간 | 중간 | O | 높음 |
| SwiftUI | Swift | 최소 | 최저 | 높음 | O (Apple) | 최고 |
대표 앱 사례
| 프레임워크 | 대표 앱 |
|---|---|
| Electron | VS Code, Discord, Slack, Notion, Figma, Obsidian, Spotify |
| Tauri | Cody (Sourcegraph), Crabnebula, 1Password (일부) |
| Flutter | Google Earth, Canonical Ubuntu 앱 |
| Qt | VLC, Maya, Telegram Desktop, VirtualBox |
| .NET MAUI | Microsoft 365 모바일 |
| SwiftUI | Apple 기본 앱, Bear, Things 3 |
선택 가이드
| 상황 | 추천 |
|---|---|
| 빠른 프로토타입, 웹 기술 | Electron |
| 경량 + 보안 + Rust | Tauri |
| TypeScript만, 쉬운 배포 | Electrobun |
| Go 백엔드 | Wails |
| 모바일 + 데스크톱 통합 | Flutter |
| 산업용/임베디드 | Qt |
| Apple 전용 | SwiftUI |
| .NET 생태계 | .NET MAUI |
| 최소 번들 크기 | Neutralino |
2025~2026 트렌드
- Electron 탈출: 번들/메모리 문제로 Tauri, Electrobun 등 이동
- Tauri 2.0: 모바일 지원으로 Flutter 영역 침투
- Bun/Zig 기반: Electrobun이 Bun 생태계 활용 시도
- WebView 표준화: 각 OS의 네이티브 WebView 품질 향상
- AI 네이티브 앱: LLM 연동 데스크톱 앱 증가 (Claude Desktop, ChatGPT 등)
관련 항목
- Electrobun
- Bun — Electrobun 런타임
- 프로그래밍 언어 비교
- 브라우저 비교