Loading...
본문으로 건너뛰기
개발

웹 앱을 Mac 앱으로 만드는 방법 (실제 옵션, 장단점, 선택 가이드)

· siimplelab
웹 앱을 Mac 앱으로: PWA, Electron, App Store 옵션
Chrome에서 실행 중인 웹 앱과 PWA, Electron, App Store 옵션

이미 웹 앱이 있다면 “Mac 앱”을 만든다는 것은 매우 다른 의미가 될 수 있습니다:

  • 앱처럼 열리는 사이트 (독 아이콘, 별도 창)
  • 사용자에게 배포 가능한 .app
  • OS 수준 통합이 있는 데스크톱 제품 (파일 시스템, 알림, 딥 링크, 자동 업데이트)

아래는 현재 사람들이 쓰는 실전 경로입니다—가장 단순한 것부터 가장 “진짜 앱”에 가까운 순서로 정리했습니다.


1) Safari 웹 앱 (독에 추가): 가장 빠른 “앱 같은” Mac 존재감

macOS Sonoma부터 Safari는 웹사이트를 독립형 웹 앱으로 저장할 수 있으며, 독에 표시되고 Safari와 별개로 실행됩니다. Apple 지원

이걸 쓸 때

  • 거의 공짜로 가벼운 데스크톱 존재감을 원할 때.
  • 웹 앱이 데스크톱 Safari에서 이미 잘 동작할 때.

한계를 정직하게

  • 패키지된 제품을 직접 배포하는 것과는 다릅니다. 주로 사용자 측 “설치” 경험입니다.
  • 진짜 앱에 비해 네이티브 통합은 최소한입니다.

2) 데스크톱 PWA: 플랫폼 간 “설치 가능한 웹 앱” (주의사항 있음)

Progressive Web App은 manifest와 service worker로 지원 브라우저에서 설치 가능성과 오프라인에 가까운 동작을 가능하게 합니다. Apple 지원

이걸 쓸 때

  • 웹 우선으로 가고 앱 패키징·네이티브 빌드 파이프라인을 피하고 싶을 때.
  • 앱이 주로 폼, 대시보드, 콘텐츠, 내부 도구일 때.

단점

  • 데스크톱 “설치” 동작은 브라우저·OS마다 다릅니다. 경험이 들쭉날쭉할 수 있습니다.

3) Electron: 웹 UI를 진짜 Mac 앱으로 배포하는 기본 답

Electron은 “웹 기술로 데스크톱 앱” 접근법으로 널리 쓰입니다. 데스크톱 런타임과 함께 UI를 배포하고 Electron 환경과 Node로 OS 기능에 접근합니다. Electron 공식 문서는 튜토리얼, 모범 사례, 아키텍처 가이드가 있는 완전한 프레임워크로 소개합니다. electronjs.org

이걸 쓸 때

  • 진짜 배포 가능한 앱이 필요할 때 (DMG, notarization 워크플로 등).
  • 웹 기능에 최대 호환성을 원할 때 (자체 Chromium을 포함하므로).
  • 성숙한 생태계와 많은 예제를 원할 때.

트레이드오프 (완곡 없이)

  • 무겁습니다. 브라우저 런타임을 묶어 배포합니다. 단순한 앱도 “크게” 느껴질 수 있습니다.

4) Tauri: Electron과 비슷한 아이디어, 시스템 웹 렌더러로 더 가벼움

Tauri는 OS의 네이티브 웹 렌더러를 사용해 바이너리를 작게 만드는 것을 목표로 하며, 어떤 프론트엔드 스택이든 유지하고 Rust로 백엔드를 씁니다. Tauri

이걸 쓸 때

  • Electron 개발 모델은 좋지만 더 작은 앱과 보안 중심 설계를 원할 때.
  • “데스크톱 앱”에 Rust/백엔드 생각이 조금 들어가도 괜찮을 때.

현실

  • 필요에 따라 Electron보다 더 일찍 네이티브에 가까운 도구를 다룰 수 있습니다.

5) Neutralinojs: 초경량 “웹→데스크톱” 래퍼

Neutralinojs는 HTML/CSS/JS로 데스크톱 앱을 만들고 IPC 확장으로 확장할 수 있는 경량·이식 가능한 도구로 자리 잡고 있습니다. Neutralinojs

이걸 쓸 때

  • Electron이 모기 잡는데 대포 같을 때.
  • 앱이 단순하고 오버헤드를 최소로 하고 싶을 때.

단점

  • Electron 대비 생태계가 작습니다. 특이한 OS 통합이 필요하면 DIY가 더 필요합니다.

6) 네이티브 macOS 셸 직접 만들기 (WKWebView): 최대 제어, 최대 책임

Swift/SwiftUI/AppKit으로 네이티브 macOS 앱을 만들고, 그 안에 웹 앱을 WebView로 넣고 JS↔네이티브 브릿지를 직접 구현할 수 있습니다. macOS 통합 스토리는 가장 깔끔해지지만, 모든 엣지 케이스를 직접 책임집니다.

이걸 쓸 때

  • macOS 동작을 타이트하게 제어해야 할 때 (커스텀 메뉴, 깊은 통합, 엄격한 보안).
  • 업데이트, 권한, 앱 생명주기를 완전히 통제하고 싶을 때.

단점

  • “단순해” 보이는 건 기능 요청이 들어오기 전까지입니다. 그 다음부터는 WebView 안에 웹 UI가 있는 네이티브 개발입니다.

어떤 걸 고를까?

냉정한 선택 가이드입니다.

Safari 웹 앱 / PWA를 고를 때…

  • “앱처럼 열리기”만 원하고 제품이 근본적으로 웹사이트일 때. Apple 지원

Electron을 고를 때…

  • 웹 렌더링 동작에서 놀랄 일이 가장 적은, 데스크톱 제품 배포의 가장 검증된 경로를 원할 때. electronjs.org

Tauri를 고를 때…

  • 데스크톱 제품을 원하지만 용량과 시스템 웹 렌더러 활용을 많이 신경 쓸 때. Tauri

Neutralinojs를 고를 때…

  • 앱이 단순하고 데스크톱 앱 느낌을 유지하면서 가장 가벼운 래퍼를 원할 때. Neutralinojs

네이티브 WKWebView 셸을 고를 때…

  • macOS 전용 통합이 목적 전체이고 네이티브 코드베이스 유지가 가능할 때.

몇 달을 낭비하게 만드는 흔한 실수

  • “웹 앱을 창에 넣은 것”이 제품과 같다고 가정하기. 배포, 업데이트, 권한, 딥 링크, 보안 정책이 중요합니다.
  • 자동 업데이트 전략을 무시하기. 데스크톱 앱을 배포하면 사용자 고통 없이 업데이트할 계획이 필요합니다.
  • “데스크톱 UX”를 과소평가하기. 메뉴, 키보드 단축키, 창 동작, 드래그 앤 드롭, 파일 처리—사용자는 데스크톱 표준을 기대합니다.