TRENDSHIFT DEEP-DIVE · 2026.05.21 · clash-verge-rev/clash-verge-rev

Clash Verge Rev —
Tauri 2 + Rust + Go(mihomo)로 만든 프록시 GUI

Electron 대신 Tauri 2로 다시 짠 크로스플랫폼 GUI 프록시 클라이언트. Rust로 wrapping한 데스크탑 + Go의 mihomo 코어를 한 묶음으로 묶었다. 데스크탑 앱이 가벼우면서 강력하게 만드는 패턴의 좋은 케이스 스터디.

0먼저, Clash가 뭐고 GUI가 왜 필요한가

"룰 기반 터널"이라는 개념부터.

Clash는 원래 Go로 짠 룰 기반 네트워크 터널(rule-based tunnel)이다. 어떤 트래픽은 직접 보내고, 어떤 트래픽은 프록시 서버 A로 보내고, 또 다른 트래픽은 차단 — 이런 규칙을 YAML로 정의해 두면 알아서 라우팅한다.

여기서 핵심 용어 정리.

용어
Clash (커맨드라인 터널)
2018년 시작된 Go 기반 오픈소스 네트워크 터널. 도메인·IP·포트·프로세스 등 다양한 기준의 룰을 정의해 트래픽을 분기한다. SOCKS5, HTTP(S), VMess, Shadowsocks, Trojan 등 십여 개 프로토콜 지원. 본가는 2023년 stop maintenance를 선언했고, 그 자리를 fork들이 메우고 있다.
용어
Clash Meta / mihomo (메타 코어)
원래 Clash가 지원 안 한 추가 프로토콜(VLESS·Hysteria 등) + 추가 기능(TUN 모드 강화·DoH 등)을 넣은 fork. 2024년 이름을 mihomo로 바꾸고 독립 프로젝트가 됐다. 현재 Clash 생태계의 사실상 표준 코어. Clash Verge Rev는 이 mihomo를 코어로 내장한다.
용어
TUN (Tunnel) 모드
운영체제 수준에서 가상 네트워크 인터페이스를 만들어, 모든 시스템 트래픽을 그쪽으로 흘려 보내는 방식. 시스템 프록시 설정을 무시하는 앱(예: 일부 게임·VPN)이 있어도 트래픽을 가로챌 수 있다. 관리자 권한이 필요해서 일반 GUI 앱에선 까다로운 기능. clash-verge-rev는 이 TUN 모드 토글을 GUI 버튼 하나로 제공.

"왜 GUI가 필요한가" — Clash/mihomo는 본래 명령줄 도구로, YAML 설정 파일을 직접 편집해야 했다. 일반 사용자에겐 진입장벽이 너무 높다. GUI 클라이언트는 — 프로파일 가져오기, 노드 선택, 룰 편집, 트래픽 시각화, 시스템 트레이 통합을 마우스 클릭으로 가능하게 한다. Clash Verge Rev는 그 GUI 중 데스크탑에서 가장 활발히 유지되는 옵션 중 하나.

1한 줄 요약

전체 글의 핵심 메시지.

핵심 메시지

"Electron이 만든 100MB 앱을,
Tauri 2가 10MB로 다시 짠다."

같은 데스크탑 GUI 앱이라도 — Electron(Chromium + Node.js 임베드)으로 만들면 100MB가 넘는다. Tauri 2(OS 기본 WebView + Rust)로 만들면 10MB 안으로 줄어든다. 메모리 사용량도 1/3 수준. 같은 기능, 다른 골격.

Clash Verge Rev는 "Tauri 2로 데스크탑 앱을 다시 짜면 어떻게 보이나"의 모범 사례다. 거기에 Go로 짠 mihomo 코어를 Rust 측에서 자식 프로세스로 띄워 — 세 언어 생태계가 한 앱에 공존하는 흥미로운 케이스이기도 하다.

2왜 지금 주목받는가

트렌딩 7위까지 올라온 맥락.

Clash Verge Rev는 사실 2023년부터 있던 레포다. 2026년에 다시 트렌딩에 오른 이유는 3가지로 정리된다.

이유 1

본가 Clash의 stop maintenance + 후속 fork 정리

2023년 본가 Dreamacro/clash가 유지보수 중단을 선언. 그 빈자리를 — 코어는 MetaCubeX/mihomo, 데스크탑 GUI는 clash-verge-rev가 차지하며 사실상의 표준이 됐다. 2026년 들어 안정성·기능이 충분히 성숙해, 신규 사용자 유입이 다시 늘고 있다.

이유 2

Tauri 2 정식 출시 + 모범 사례 수요

2024년 말 Tauri 2가 정식 출시. 모바일(iOS/Android) 지원 + 새 권한 시스템 + IPC 개편. 데스크탑 앱을 만들 때 Electron 대안으로 Tauri 2를 평가하는 개발자들이 — "실제로 어떻게 짜야 하지?"의 답을 찾을 때 clash-verge-rev 코드를 참조하는 흐름이 생겼다. mihomo 같은 외부 코어 통합, 시스템 트레이, 권한 처리 등 Tauri 2의 거의 모든 기능을 실전에 활용한 케이스.

이유 3

한 바이너리로 Win/macOS/Linux 다 커버

Windows (x64/x86), Linux (x64/arm64), macOS 11+ (Intel/Apple Silicon) — 한 코드베이스에서 빌드. 메모리 사용량도 Electron 기반 경쟁자(Clash for Windows 등)보다 압도적으로 적다. "가볍고 빠르고 어디서나 동작"이 입소문의 핵심.

3기술 스택 전체 지도

3개 언어 생태계가 한 앱에 공존.

3.1 백엔드 — Rust (Tauri 2 셸)

스택 1

Tauri 2 (Rust 프레임워크)

OS의 기본 웹뷰(macOS WKWebView, Windows WebView2, Linux WebKitGTK)를 Rust 셸에 임베드해 데스크탑 앱을 만드는 프레임워크. Chromium을 같이 번들하지 않아서 크기·메모리가 작다. Rust 측에서는 시스템 트레이, 단축키, 파일 시스템, 네트워크, 자식 프로세스 관리 등을 처리.

스택 2

Tauri Sidecar 패턴

Tauri 앱에 외부 바이너리(여기선 mihomo)를 sidecar(부속 프로세스)로 포함시키는 기능. src-tauri/tauri.conf.json에 등록하면 패키징 시 자동으로 함께 들어가고, Rust 코드에서 Command::new로 자식 프로세스로 띄울 수 있다. Clash Verge Rev는 mihomo 바이너리를 sidecar로 묶어 사용자가 따로 설치하지 않아도 되게 만든다.

스택 3

IPC (Inter-Process Communication)

Rust 측과 웹뷰(프론트엔드) 측의 통신. Tauri 2의 commands(프론트 → Rust 함수 호출) + events(Rust → 프론트 이벤트 푸시) 양방향 채널을 사용. mihomo의 HTTP API(127.0.0.1의 RESTful 인터페이스)도 Rust 측에서 프록시해서 프론트에 전달한다.

3.2 프론트엔드 — React + Vite + MUI

스택 4

React 19 + TypeScript

UI는 React 19로 작성. src/ 폴더에 컴포넌트·페이지·훅·서비스 분리. 전역 상태는 @tanstack/react-query v5(서버 상태)로 관리. TypeScript로 타입 안전성 확보.

스택 5

Vite (빌드 도구)

Next-gen 프론트엔드 빌드 도구. esbuild + Rollup을 기반으로 빠른 HMR(Hot Module Reload) + 작은 번들 사이즈 제공. pnpm dev로 띄우면 Vite dev 서버가 돌고, Tauri는 그 dev 서버를 웹뷰에 로드.

스택 6

MUI (Material-UI) + 커스텀 테마

구글 머티리얼 디자인 시스템의 React 구현체. 라이트/다크 모드, 커스텀 컬러 스킴, CSS Injection까지 사용자 커스터마이징 가능.

3.3 코어 — Go (mihomo)

스택 7

mihomo (Go 기반 룰 기반 터널)

Go로 짠 네트워크 터널 엔진. SOCKS5/HTTP/HTTPS/VMess/Trojan/Hysteria 등 모든 프로토콜 처리, 룰 매칭, DNS 처리, 부하 분산. RESTful API(기본 9090 포트)로 외부에서 제어 가능. clash-verge-rev는 이 mihomo를 자식 프로세스로 띄우고 — RESTful API로 노드 변경·룰 변경·트래픽 조회를 한다.

3.4 빌드·배포 인프라

스택 8

pnpm + GitHub Actions

패키지 매니저는 pnpm(npm/yarn 대비 디스크 공간 절약 + 빠른 설치). GitHub Actions로 — 푸시할 때마다 자동 빌드 + 5개 플랫폼(Win-x64, Win-x86, Linux-x64, Linux-arm64, macOS-universal) 바이너리를 만들어 Release에 자동 첨부.

스택 9

WebDav 백업 + Profile 동기화

설정·프로파일을 WebDav 호환 서버(Nextcloud 등)에 자동 백업. 여러 기기 간 동기화에 사용. Rust 측에서 HTTP 요청을 처리.

이 3개 언어 스택을 한 패키지로 묶는 게 핵심 도전. JS/TS(프론트) ↔ Rust(셸) ↔ Go(코어) 세 계층 사이의 빌드 파이프라인이 복잡한데, Tauri 2가 sidecar 패턴으로 이걸 깔끔하게 처리해 준다.

4아키텍처 심화 — 3 프로세스 모델

한 앱처럼 보이지만 사실 3개의 프로세스.

4.1 전체 아키텍처 (ASCII)

┌────────────────────────────────────────────────────────┐ │ 사용자 │ │ · 시스템 트레이 클릭 / 메인 윈도우 / 단축키 │ └────────────────────┬───────────────────────────────────┘ │ ┌─────────────────┴────────────────────┐ │ │ ▼ ▼ ┌────────────────────────┐ ┌──────────────────────────┐ │ 프로세스 1: WebView │ │ 프로세스 2: Rust 셸 │ │ · React 19 UI │◄──►│ · Tauri 2 framework │ │ · MUI 컴포넌트 │IPC │ · 시스템 트레이 │ │ · react-query로 상태 │ │ · 자식 프로세스 관리 │ │ · WebKit/WebView2 위 │ │ · 파일/네트워크/권한 │ └────────────────────────┘ └──────────────┬────────────┘ │ │ stdout/stdin │ + HTTP API ▼ ┌────────────────────────────┐ │ 프로세스 3: mihomo (Go) │ │ · 룰 기반 터널 코어 │ │ · RESTful API :9090 │ │ · TUN 모드 (가상 NIC 생성) │ │ · 프로토콜 핸들러 (VMess 등) │ └─────────────┬──────────────┘ │ ▼ 실제 네트워크 트래픽 (시스템 프록시 또는 TUN)

한 앱처럼 보이지만 사실은 3개의 분리된 프로세스가 있다. 사용자가 GUI에서 "노드 A로 바꿔" 클릭하면 — 프로세스 1(React)이 IPC로 프로세스 2(Rust)에 명령 → 프로세스 2가 HTTP API로 프로세스 3(mihomo)에 명령 → mihomo가 실제 라우팅 변경. 이 3단 통신이 거의 모든 작업의 패턴이다.

4.2 핵심 설계 패턴 5가지

패턴 1

Sidecar로 외부 코어 통합

mihomo Go 바이너리를 Tauri sidecar로 포함시켜 사용자 설치를 한 번에 끝낸다. tauri.conf.jsonexternalBin 배열에 추가하면 — 빌드 시 자동 포함, 권한 자동 부여, 실행 시 자식 프로세스로 띄움. "여러 언어 코어를 하나의 데스크탑 앱으로 묶는 표준 패턴".

패턴 2

Tauri Commands로 권한 격리

웹뷰(JS)는 보안상 OS 자원을 못 만진다. 대신 Rust 측이 command로 노출한 함수만 호출 가능. 파일 쓰기·시스템 프록시 설정 변경·TUN 모드 토글 같은 권한 필요 작업은 Rust 함수로만 가능. 권한 누수 방지의 핵심.

패턴 3

RESTful API 프록시

mihomo의 9090 포트 API를 직접 노출하면 보안 위험. 대신 Rust 측이 — JS 측 요청을 받아 검증한 뒤 localhost mihomo API로 프록시. 외부에서 들어오는 요청은 막고, 내부 요청만 허용.

패턴 4

시스템 트레이 + 단축키로 백그라운드 동작

창을 닫아도 트레이에 남아 동작 — VPN/프록시 앱의 표준 UX. Tauri 2의 시스템 트레이 API + 글로벌 단축키 API로 OS별 차이 추상화. "창 닫음"은 트레이로 minimize, "Quit"만 진짜 종료로 분기.

패턴 5

프로파일 가져오기 + Merge/Script로 가공

사용자는 보통 프록시 제공자(VPN 서비스)로부터 YAML 프로파일 URL을 받는다. clash-verge-rev는 — URL 가져오기 + Merge(여러 프로파일 합치기) + Script(JavaScript로 동적 변경)를 지원. "가져온 프로파일에 내 규칙 한 줄 끼우기" 같은 흔한 시나리오 해결.

5레포 구조 해부

Tauri 표준 모노레포 구조.

clash-verge-rev/ ├── src/ ← 프론트엔드 (React + TS) │ ├── components/ 공통 컴포넌트 │ ├── pages/ 페이지별 화면 │ ├── services/ Tauri command 래퍼 │ ├── hooks/ 커스텀 React 훅 │ ├── providers/ Context·Provider 계층 │ ├── locales/ i18n 번역 (13개 로케일) │ └── main.tsx 엔트리 포인트 ├── src-tauri/ ← 백엔드 (Rust) │ ├── src/ │ │ ├── cmd/ Tauri commands (JS → Rust 함수) │ │ ├── config/ 설정 파일 처리 │ │ ├── core/ mihomo 통합 + 프로세스 관리 │ │ ├── feat/ 기능별 모듈 (proxy, tray, ...) │ │ └── utils/ 유틸리티 │ ├── icons/ 앱 아이콘 (각 플랫폼) │ ├── tauri.conf.json Tauri 설정 │ └── Cargo.toml Rust 의존성 ├── docs/ ← 다국어 README, 스크린샷 ├── scripts/ ← 빌드 스크립트 ├── package.json Node/pnpm 매니페스트 ├── pnpm-lock.yaml └── vite.config.ts Vite 설정
폴더 1

src/ — React 프론트엔드

UI 전체. pages/에 메인 화면들(Proxies·Profiles·Connections·Logs·Rules·Settings 같은 탭), services/에 Rust command 호출 래퍼들이 있다. 프론트 개발자는 거의 이 폴더만 만져도 된다.

폴더 2

src-tauri/src/cmd/ — IPC 진입점

JS → Rust 호출이 시작되는 곳. #[tauri::command] 어트리뷰트가 붙은 함수들. 예: set_proxies(현재 프록시 노드 변경), get_clash_info(mihomo 정보 조회), patch_clash_config(설정 패치). 새 기능 추가 시 거의 항상 여기 함수가 하나 더 생긴다.

폴더 3

src-tauri/src/core/ — mihomo 통합 핵심

mihomo 자식 프로세스를 띄우고·죽이고·재시작하고·로그를 읽는 코드. "코어 헬스 체크 + 비정상 종료 시 자동 재시작" 같은 운영 로직이 여기. Tauri Sidecar API와 Rust의 std::process·tokio::process를 섞어 사용.

폴더 4

src-tauri/tauri.conf.json — 빌드 설정

앱 메타데이터(이름·버전·아이콘)·창 설정(크기·제목)·sidecar 등록·번들 옵션·플랫폼별 권한 등이 모두 여기. Tauri의 모든 설정이 모이는 곳이라, Tauri 학습 시 첫 정독 대상.

6학습 포인트 — 이 레포에서 뭘 배울 수 있나

데스크탑 앱 개발자가 봐야 할 패턴.

교훈 1

"Electron 대안으로 Tauri 2는 실전 검증됐다"

Tauri 1 시절엔 "장난감" 평가가 많았지만, Tauri 2가 모바일 지원 + 새 권한 모델로 정식화한 이후 clash-verge-rev 같은 본격 앱들이 나왔다. 같은 기능의 Electron 대비 바이너리 크기 1/10, 메모리 1/3이 실측 가능한 차이.

교훈 2

"외부 코어 통합엔 sidecar 패턴"

여러 언어 코어(Go·Python·Rust)를 한 데스크탑 앱에 묶을 때 — sidecar는 가장 깔끔한 패턴. 빌드·배포·자식 프로세스 관리가 자동화된다. Python 데이터 분석 코어 + Rust 셸 + React UI 같은 조합도 같은 패턴으로 가능.

교훈 3

"Tauri commands는 권한 격리의 핵심"

웹뷰가 OS 자원을 직접 못 만지는 게 약점이 아니라 보안 자산이다. Rust commands로 명시적으로 노출한 함수만 가능. 잘못 만든 Electron 앱이 흔히 빠지는 RCE 위험을 구조적으로 차단.

교훈 4

"localhost API 프록시로 외부 코어 보호"

mihomo의 9090 포트를 외부에 노출하면 큰 보안 위험. Rust 측이 프록시해서 — 인증된 IPC 요청만 통과시키는 패턴. 외부 도구 통합 시 표준 운영 패턴이라 다른 곳에도 적용 가능.

교훈 5

"i18n + 다국어 README가 글로벌 채택의 토대"

7개 언어 README(중·영·스페인·러·일·한·페르시아) + 앱 내 13개 로케일 i18n(ar·de·en·es·fa·id·jp·ko·ru·tr·tt·zh·zhtw). 오픈소스가 글로벌하게 퍼지려면 첫 페이지부터 영어 외 언어 옵션이 보여야 한다. 코드만큼 i18n 인프라가 중요하다는 사례.

7시스템 요구사항

실행 + 개발 환경.

실행 1 · 사용자

지원 OS

Windows (x64/x86, Windows 10 이상), Linux (x64/arm64, WebKitGTK 4.1 필요), macOS 11+ (Intel/Apple Silicon). Release 페이지에서 OS별 인스톨러 다운로드.

실행 2 · 사용자

관리자 권한 (TUN 모드 시)

일반 시스템 프록시 모드는 권한 없이 OK. TUN 모드는 가상 NIC 생성을 위해 — Windows에선 관리자, macOS/Linux에선 sudo·setuid가 필요. 앱이 안내해 준다.

개발 1

Tauri 2 prerequisites

Rust(rustup), Node.js 또는 Bun, 그리고 OS별 의존성. macOS는 Xcode CLT, Linux는 webkit2gtk·build-essential 등, Windows는 Microsoft C++ Build Tools + WebView2 런타임. Tauri 공식 문서의 "Prerequisites" 페이지가 정답.

개발 2

pnpm

패키지 매니저로 pnpm 사용. npm install -g pnpm으로 설치. pnpm i로 의존성 설치, pnpm dev로 dev 서버 + Tauri 실행.

8직접 해볼 수 있는 실습 과제

난이도 ★~★★★★★.

과제 1 · ★

Release 빌드 받아 일상 사용

Release 페이지에서 자기 OS용 인스톨러 받아 설치. 프록시 제공자 YAML URL을 가져와 등록 → 노드 선택 → 트래픽 확인. UX 흐름을 자기 도구의 참고로 사용.

과제 2 · ★★

로컬 빌드 + 첫 UI 수정

레포 clone → pnpm ipnpm dev. 어디 한 UI 텍스트를 자기 이름으로 바꿔 보기. Hot Reload가 동작하는 걸 확인. Tauri 개발 흐름 익히기.

과제 3 · ★★★

새 Tauri command 추가 — "현재 시간 반환"

src-tauri/src/cmd/get_current_time command 추가, src/services/에 호출 래퍼 추가, src/pages/ 어딘가에 버튼 + 결과 표시. JS → Rust → JS 왕복의 완전한 사이클을 손에 익힌다.

과제 4 · ★★★★

다른 외부 코어를 sidecar로 추가

예: yt-dlp 바이너리를 sidecar로 추가하고, "URL 입력 → 다운로드" 기능을 만든다. tauri.conf.jsonexternalBin 등록 → Rust 측에서 Command::new로 호출 → stdout을 IPC로 프론트에 스트리밍. sidecar 패턴 전 과정을 자기 손으로 굴려 본다.

과제 5 · ★★★★★

Tauri 2 + Sidecar 패턴으로 자기 데스크탑 앱 시작

clash-verge-rev를 fork해 핵심만 남기고 — Tauri 2 셸 + Sidecar 한 개 + 단순 UI로 미니멀한 템플릿을 만든다. 자기 도메인의 데스크탑 앱 시작점으로 활용. 1주일 분량으로 충분히 가능.

9관련 기술 심화 학습 로드맵

4주 코스.

1주차

Tauri 2 공식 튜토리얼 + Hello World

Tauri 공식 사이트의 Getting Started 따라하기. 5개 OS에서 빌드 시도. Tauri 2의 권한 시스템(capabilities·permissions) 개념 익히기.

2주차

clash-verge-rev 코드 정독

src-tauri/src/cmd/의 command들과 src/services/의 호출 래퍼들 — 페어로 읽으며 IPC 패턴 익히기. core/의 mihomo 관리 코드도.

3주차

Sidecar 패턴 직접 적용

자기 도메인의 외부 도구 한 개(yt-dlp·ffmpeg·llama.cpp 등)를 sidecar로 묶어 미니 앱 만들기. 빌드 → 패키징까지 한 번 완주.

4주차

네트워크 도구 깊이 학습

mihomo 프로토콜·규칙 시스템·DNS 옵션 정독. 자기가 만드는 앱이 네트워크와 무관해도 — 룰 매칭, 우선순위, 메트릭, 헬스 체크 같은 개념은 다른 분야에도 적용된다.

10핵심 키워드 사전

관련 용어 한 번에.

키워드
Tauri (타우리)
Rust 기반 크로스플랫폼 데스크탑 앱 프레임워크. Electron의 경량 대안. 2024년 말 Tauri 2 출시로 모바일 지원 + 권한 시스템 개편. 핵심 아이디어 — Chromium 임베드 대신 OS 기본 웹뷰 사용.
키워드
Sidecar (사이드카)
Tauri 앱과 함께 번들되어 자식 프로세스로 실행되는 외부 바이너리. tauri.conf.jsonexternalBin 배열에 등록. 여러 언어 코어를 한 데스크탑 앱에 묶는 표준 패턴.
키워드
WebView2 / WKWebView / WebKitGTK
각 OS의 기본 웹뷰. Tauri 앱은 이걸 임베드해 UI를 그린다. Windows는 WebView2(Edge 기반), macOS는 WKWebView(Safari 기반), Linux는 WebKitGTK. 같은 React 코드가 OS별로 다른 엔진에서 렌더링.
키워드
mihomo (구 Clash Meta)
Go 기반 룰 기반 네트워크 터널. Clash의 후속 fork로 사실상 표준 코어. RESTful API + TUN 모드 + 다양한 프로토콜 지원.
키워드
TUN Mode (TUN 모드)
가상 네트워크 인터페이스를 만들어 모든 시스템 트래픽을 가로채는 방식. 시스템 프록시 우회 앱도 잡을 수 있지만 관리자 권한 필요.
키워드
IPC (Inter-Process Communication)
프로세스 간 통신. Tauri 2는 commands(JS→Rust 함수 호출) + events(Rust→JS 이벤트 푸시)로 구현. 보안 격리 + 양방향 데이터 흐름.
키워드
WebDav (웹대브)
HTTP 기반 파일 시스템 프로토콜. Nextcloud·OwnCloud·심지어 일부 클라우드 스토리지가 지원. 데스크탑 앱이 클라우드 동기화를 간단히 구현할 때 자주 활용.
키워드
YAML 프로파일
Clash/mihomo의 설정 형식. 프록시 노드 목록·룰·DNS·TUN 설정을 YAML로 표현. 프록시 서비스 제공자가 URL로 제공하면 앱이 가져와서 파싱.

11참고 링크

레포·문서·관련 프로젝트.

실용 가이드

오늘 바로 시도해볼 만한 것들

  1. Tauri 2 공식 사이트 30분 정독. Tauri의 코어 개념(commands·events·capabilities·sidecar)을 한 번 훑어 두면 — 이후 어떤 데스크탑 앱을 보든 빠르게 구조 파악이 된다.
  2. clash-verge-rev 로컬 빌드 한 번. pnpm i && pnpm dev 한 번이면 자기 OS에서 띄울 수 있다. 자기가 만들고 싶은 데스크탑 앱의 출발 템플릿으로 fork.
  3. Electron vs Tauri 한 번 비교. 같은 기능의 Electron 앱(예: VSCode) 대비 메모리·CPU·바이너리 크기를 직접 측정. 데이터로 Tauri의 가치를 손에 잡기.
  4. "sidecar 패턴" 자기 도메인에 매핑. 자기 도메인에 묶을 수 있는 외부 도구(yt-dlp·ffmpeg·로컬 LLM·Pandas 스크립트 등)가 있는지 본다. 있으면 Tauri + sidecar로 데스크탑 앱화 가능.
  5. i18n 인프라부터 깔기. 새 앱 시작할 때 — 한국어만으로 시작해도 i18n 구조부터 잡아 두면, 나중에 영어 추가가 30분 작업이 된다. 안 잡고 시작하면 1주일 리팩토링.
원문 · clash-verge-rev/clash-verge-rev, 2026.05.21 · github.com/clash-verge-rev · TrendShift 7위 기준