
오늘 Wails v3 베타를 출시합니다.
Wails를 사용하면 Go 개발자가 이미 익숙한 웹 프런트엔드 도구로 데스크톱 애플리케이션을 빌드할 수 있습니다. 내장 브라우저 대신 각 플랫폼의 네이티브 WebView를 사용합니다. v3는 큰 진전입니다. 애플리케이션에 더 직접적인 API와 더 명확한 빌드 모델을 제공하며, 사용자들이 Wails에서 지원해 달라고 요청해 온 데스크톱 애플리케이션을 위한 더 나은 기반을 마련합니다.
이 릴리스는 베타이며 최종 3.0 릴리스가 아닙니다. 데스크톱 API는 안정화되었고 여러 팀이 이미 v3를 프로덕션에서 사용하고 있지만, 배포 전에 철저히 테스트하는 것이 좋습니다. 베타 기간에는 커뮤니티와 함께 남아 있는 호환성 및 워크플로 문제를 찾고 있습니다. Wails v2는 여전히 현재 안정 릴리스이며 계속 수정 사항을 제공받게 됩니다.
베타 기간의 문서
베타 기간에는 API와 워크플로의 최종 검증이 진행되는 동안 영어 문서를 기준 문서로 유지합니다. 현 단계에서는 번역 PR을 받지 않습니다. 문서가 충분히 안정되어 번역자가 반복적인 변경 없이 작업할 수 있게 되면 정식 출시 전에 번역 작업을 재개할 예정입니다.
v3에 포함된 기능
- 일급 다중 창 지원을 포함한 명시적인 애플리케이션 및 창 API
- 주석과 의미 있는 매개변수 이름을 보존하는 정적 소스 분석으로 더 풍부한 TypeScript 바인딩을 생성하는 Go 서비스
- 백엔드 API와 함께 프런트엔드 애셋 및 스크립트를 번들로 묶을 수 있는 서비스 — 설치 가능한 고기능 플러그인의 기반
- 검토하고 확장하며 디버그할 수 있는, 구조가 드러나는 Taskfile 기반 빌드 시스템
- 네이티브 데스크톱 창 없이 동일한 애플리케이션과 서비스를 실행하기 위한 서버 빌드
- 지원되는 환경에서 Intel, Apple Silicon, amd64 및 arm64 기반 macOS, Windows, Linux를 위한 최신 데스크톱 지원
- 시험적으로 사용할 수 있지만 데스크톱 베타의 호환성 보장 대상에는 포함되지 않는 iOS 및 Android 실험적 모바일 지원
v3가 필요한 이유
Wails v2를 사용하면 최신 웹 프런트엔드를 갖춘 Go 애플리케이션을 간편하게 빌드할 수 있었습니다. 프로젝트와 수많은 애플리케이션에 큰 도움이 되었습니다. 그러나 단일 창과 컨텍스트 중심의 런타임, 엄격하게 관리되는 빌드 프로세스로 인해 몇몇 일반적인 데스크톱 작업이 필요 이상으로 어려웠습니다.
v3는 다른 모델에서 출발합니다. 애플리케이션, 창, 서비스, 이벤트 및 플랫폼 기능이 명시적인 객체입니다. 따라서 애플리케이션이 커져도 프레임워크의 작동 방식을 더 쉽게 이해할 수 있으며, 다중 창과 같은 기능도 임시방편이 아니라 애플리케이션 모델의 일반적인 일부가 됩니다.
새로운 기능
실제 데스크톱 소프트웨어를 위해 설계된 애플리케이션 API
v3에서는 v2의 wails.Run(...) 구성 방식이 명시적인 애플리케이션 수명 주기로 대체됩니다. 애플리케이션을 만들고, 서비스를 등록하고, 창을 생성한 다음, 필요한 동작을 소유한 객체와 상호작용합니다.
이로써 암시적으로 컨텍스트를 전달하는 작업이 대폭 줄어듭니다. 창 작업은 창에 속하고 애플리케이션 전체 작업은 애플리케이션에 속합니다. 이는 다중 창 애플리케이션에 더 자연스러운 모델이며, 규모가 큰 코드베이스의 테스트와 유지보수에도 더 적합합니다.
알파 기간에 v3를 사용한 사용자들의 반응은 압도적으로 긍정적이었습니다. 특히 개발자들은 명시적인 모델을 높이 평가했습니다. 코드를 더 쉽게 파악할 수 있고 소유 관계가 더 명확해지며, 복잡한 데스크톱 애플리케이션이 프레임워크와 씨름하지 않고도 확장될 여지를 제공하기 때문입니다.
일급 다중 창 지원
다중 창은 v3의 핵심 기능입니다. 각 창에는 자체 수명 주기가 있으며 런타임에 생성하고 관리하고 닫을 수 있습니다. 따라서 편집기, 검사기, 환경설정, 도구 창 또는 서로 독립된 여러 UI 요소가 필요한 데스크톱 소프트웨어를 더 명확하게 구현할 수 있습니다.
서비스와 생성된 바인딩
Go 서비스는 기존 바인딩 모델을 대체합니다. 애플리케이션 로직을 일반 Go 코드로 유지하면서 프런트엔드와의 경계를 명확히 합니다. 바인딩은 애플리케이션과 서비스의 구조를 반영하도록 생성되므로 프런트엔드에 노출된 API를 더 쉽게 찾고 사용할 수 있습니다.
v3는 정적 소스 분석을 사용해 이러한 바인딩을 생성합니다. 따라서 생성기는 이미 빌드된 프로그램을 리플렉션으로 조사하는 대신 주석과 의미 있는 매개변수 이름을 비롯해 개발자가 코드에 담은 정보를 유지할 수 있습니다. 그 결과 프런트엔드 API가 더 풍부하고 유용해지며 생성 프로세스도 더 쉽게 이해하고 유지보수할 수 있습니다.
서비스는 Go 코드와 함께 프런트엔드 애셋 및 스크립트도 마운트할 수 있습니다. 따라서 하나의 기능에 필요한 백엔드 API, JavaScript 또는 UI, 호스트 애플리케이션과의 통합 지점을 일관된 한곳에 둘 수 있습니다. 이로써 개발자가 서로 느슨하게 연결된 바인딩과 프런트엔드 종속성을 직접 조합하는 대신, 플러그인을 설치하고 서비스를 마운트한 뒤 바로 풍부한 기능을 사용할 수 있는 Wails 플러그인을 제공할 길이 열립니다. 범용 플러그인 시스템은 이번 베타에 포함되지 않지만, v3는 v2 바인딩 모델과 달리 이러한 방향을 실용적으로 구현할 수 있는 기반을 제공합니다.
검토하고 조정할 수 있는 빌드 시스템
v3는 프로젝트의 빌드 구조를 명확히 드러냅니다. 모든 빌드 결정을 하나의 명령 안에 숨기는 대신, 프로젝트에서 일반적인 레이아웃과 Taskfile 기반 빌드 구성을 사용하므로 애플리케이션과 함께 이를 이해하고 확장하고 디버그할 수 있습니다.
더 견고한 크로스 플랫폼 데스크톱 기반
이 베타는 amd64 및 arm64 기반 Windows, Intel 및 Apple Silicon 기반 macOS, amd64 및 arm64 기반 Linux를 지원합니다. WebKitGTK 6.0를 사용하는 GTK4가 기본 Linux 스택이며, GTK3는 v3.0 시리즈 전반에서 레거시 옵션으로 계속 제공됩니다. 모바일 지원은 기대되는 기능이지만 아직 실험 단계이며 데스크톱 베타의 호환성 보장 대상에는 포함되지 않습니다.
이번 릴리스에는 일상적인 개발 경험의 안정성을 높이는 데 필요한 작업도 포함되어 있습니다. 플랫폼 동작을 개선하고, 창 모델의 기능을 강화하고, 진단 정보를 더 명확하게 제공하며, 체크섬과 출처 정보가 포함된 릴리스 아티팩트를 제공합니다.
v2에서 이전하기
v3는 새로운 메이저 버전이므로 마이그레이션은 단순히 버전 번호만 바꾸는 것이 아니라 실제로 포팅하는 작업입니다. 주요 개념 변화로는 애플리케이션과 창의 수명 주기, 컨텍스트 기반 바인딩을 대체하는 서비스, v2 런타임 패키지를 대체하는 직접적인 애플리케이션 및 창 API, 새로 생성되는 프런트엔드 바인딩이 있습니다.
이러한 변경 사항을 단계별로 설명하고 기능 매핑과 테스트 체크리스트를 포함한 v2에서 v3로의 마이그레이션 가이드를 게시했습니다. 이 수동 가이드가 이번 베타에서 지원되는 마이그레이션 경로입니다. 모든 v2 프로젝트가 검토 없이 변환될 것으로 기대해서는 안 됩니다. 결과를 테스트하고, 런타임 호출을 신중하게 포팅하며, 새 애플리케이션이 준비될 때까지 v2를 그대로 유지하십시오.
실험적인 마이그레이션 도우미도 검토하고 있습니다. 이 도구는 이번 베타 릴리스에 포함되지 않으며, 실제 환경을 대표하는 v2 프로젝트를 대상으로 검증한 후에만 사용을 권장할 예정입니다.
그간의 여정에 대한 솔직한 이야기
첫 번째 v3 알파 태그는 2023년 1월 18일에 공개되었습니다. 알파 단계에 머문 기간이 매우 길었으므로, 이에 대해서는 모호한 언급만으로 넘어갈 수 없습니다.
그동안 프로젝트는 크게 변화했습니다. 2021년 9월에 Windows용 Wails v2 베타가 처음 출시되었을 당시 저장소의 스타 수는 약 4000개였습니다. 2022년 9월 v2가 출시될 무렵에는 약 10300개였으며, 현재는 35000개가 넘습니다. 이러한 성장은 큰 영광이지만, 동시에 프로젝트를 잘 관리한다는 것의 의미도 바꾸어 놓았습니다. 더 많은 사용자가 릴리스 결정에 의존하고, 더 많은 기여자가 참여할 수 있는 명확한 경로를 필요로 하며, 이제는 단순히 다음 기능을 추가하기보다 프로젝트를 예측 가능하게 만드는 일이 더 큰 비중을 차지합니다.
이러한 성장에 맞춰 필요한 만큼 빠르고 명확하게 프로세스를 개선하지 못한 때도 있었습니다. 그 책임은 저에게 있습니다. 해답은 거창한 약속을 하거나 모든 결정을 의례적인 절차로 만드는 것이 아닙니다. 무엇이 지원되고 무엇이 실험적인지, 의사결정이 어떻게 이루어지는지, 다음에 무엇을 할 것인지 더 명확히 밝히는 것입니다.
그 작업은 이번 베타부터 시작됩니다. 이제 베타, 릴리스 후보, GA 마일스톤을 명시적으로 마련했고, 호환성에 관한 약속을 더 명확히 했으며, 보안 정책을 업데이트하고 공개 동작 변경과 새로운 기능을 위한 WEP(Wails Enhancement Proposal) 프로세스를 도입했습니다. Wails의 성장에 맞춰 로드맵을 계속 개선하고 프로젝트 거버넌스도 검토하겠습니다. 목표는 움직이기 어려운 프로젝트가 아니라, 더 쉽게 신뢰하고 기여할 수 있는 프로젝트를 만드는 것입니다.
또한 Wails 서브레딧을 다시 활성화하고, v3가 정식 출시를 향해 나아가는 동안 실질적인 논의와 질문, 피드백을 나누는 또 하나의 공간으로 적극 관리하겠습니다.
베타 설치 및 사용해 보기
릴리스가 공개되면 다음 명령으로 최신 v3 CLI를 설치하세요:
go install github.com/wailsapp/wails/v3/cmd/wails3@latest
프로젝트를 만들기 전에 안내형 설정 마법사를 실행하세요. 이 마법사는 로컬 개발 환경을 점검하고 Wails에 필요한 종속 항목을 구성할 수 있도록 도와줍니다:
wails3 setup

프로젝트 만들기
설정이 모두 끝나면 다음 명령으로 프로젝트를 만드세요:
wails3 init
- 문서: https://v3.wails.io/
- 마이그레이션 가이드: https://v3.wails.io/migration/v2-to-v3/
- Reddit: https://www.reddit.com/r/wails/
- 릴리스 노트: VERSION PLACEHOLDER
재현 가능한 버그를 발견하면 wails3 doctor의 출력과, 가능하면 최소 재현 예제를 함께 보고해 주세요. 새로운 기능이나 공개 동작의 변경을 제안하려면 기능 요청 이슈 대신 WEP PR 초안을 작성하세요. 두 경로 모두 저희가 명확하게 대응하고 베타를 계속 진전시키는 데 도움이 됩니다.
감사합니다
Wails v3는 완성되지 않은 빌드를 테스트하고, 해결하기 어려운 버그를 보고하고, 문서를 번역하고, 질문에 답하고, 코드를 기여하며, 프로젝트가 더 나아지도록 끊임없이 요구해 주신 분들 덕분에 존재합니다. 감사합니다.
그리고 이 긴 전환 기간 동안 Wails를 지탱해 주신 후원자 여러분께 특별히 진심 어린 감사를 드립니다. 여러분의 지원은 단순히 프로젝트가 계속 운영되게 하는 데 그치지 않았습니다. 프로젝트가 v3를 향해 속도를 높일 수 있도록 해 준 아키텍처, 도구, 테스트, 문서화 작업에 꾸준히 시간을 투입할 기회를 주었습니다. 모든 테스터와 기여자가 이번 릴리스를 만드는 데 힘을 보탰지만, 그 작업에 마땅한 관심과 노력을 기울일 수 있게 해 주신 분들은 후원자 여러분입니다.
이번 베타는 v3를 제대로 완성하는 데 함께해 달라는 초대입니다. 직접 사용하고 이를 기반으로 빌드해 보세요. 어디에서 문제가 발생하는지 알려 주시고, 3.0까지 가는 길을 짧고도 신중하게 만드는 데 힘을 보태 주세요.