개요

Electrobun은 TypeScript 기반 크로스플랫폼 데스크톱 앱 프레임워크로, 메인 프로세스에 Bun을, 네이티브 바인딩에 Zig를 사용합니다. Electron과 Tauri의 한계를 극복하기 위해 개발되었으며, ~12MB 번들 크기, 14KB 업데이트 패치, 5분 코딩 → 10분 배포를 목표로 합니다.

왜 만들었나

“코드 서명·공증·배포·업데이트 과정이 앱 개발보다 프레임워크와 싸우는 느낌이었다”

  • Electron: 번들 크기 150MB+, 메모리 과다
  • Tauri: Rust 학습 곡선, 배포 파이프라인 복잡
  • Electrobun: TypeScript만으로 개발, 배포까지 통합

기술 스택

계층기술역할
앱 코드TypeScript비즈니스 로직
메인 프로세스BunJS/TS 런타임 (Node.js 대체)
네이티브 바인딩Zig시스템 API 바인딩
웹뷰OOPIF 기반렌더링 (Chromium 기반)
빌드통합 빌드 시스템코드 서명, 공증, 패키징

핵심 기능

기능설명
창 관리멀티 윈도우, 리사이즈, 최소화/최대화
메뉴네이티브 메뉴바, 컨텍스트 메뉴
단축키글로벌/로컬 키보드 단축키
클립보드시스템 클립보드 읽기/쓰기
대화상자파일 열기/저장, 알림 다이얼로그
자동 업데이트14KB 바이너리 diff 패치
코드 서명macOS 공증, Windows 서명 통합
OOPIF 웹뷰Out-of-Process iFrame 기반 안정적 렌더링

번들 크기 비교

프레임워크빈 앱 크기업데이트 패치
Electron~150MB~50MB+
Tauri310MB가변
Electrobun~12MB~14KB
Flutter~20MB가변

개발 워크플로우

# 프로젝트 생성
npx create-electrobun my-app
 
# 개발 모드
cd my-app && bun run dev
 
# 빌드 + 코드 서명 + 공증 + 패키징
bun run build
# → .dmg (macOS), .exe (Windows), .deb (Ubuntu)
// main.ts — 메인 프로세스
import { app, BrowserWindow } from "electrobun";
 
app.whenReady().then(() => {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
  });
  win.loadURL("https://example.com");
  // 또는 로컬 HTML
  win.loadFile("index.html");
});

Electrobun vs Electron vs Tauri

항목ElectrobunElectronTauri
앱 언어TypeScriptJavaScript/TSRust + JS/TS
런타임BunNode.js없음 (네이티브)
네이티브ZigC++ (Node)Rust
웹뷰OOPIF (Chromium)Chromium (내장)OS WebView
번들 크기~12MB~150MB310MB
업데이트 패치~14KB~50MB가변
학습 곡선낮음 (TS only)낮음중간 (Rust)
배포 통합O (서명/공증)별도 설정별도 설정
메모리 사용낮음높음낮음
성숙도초기최고높음
생태계작음최대성장 중

관련 항목