
今天,我們正式發布 Wails v3 Beta。
Wails 讓 Go 開發人員能使用已熟悉的 Web 前端工具建置桌面應用程式;它採用各平台的原生 WebView,而不是嵌入式瀏覽器。v3 是一項重大進展:它為應用程式提供更直接的 API、更清晰的建置模型,以及更完善的基礎,以支援大家一直期望使用 Wails 建置的各類桌面應用程式。
這是 Beta 版本,而不是最終的3.0版本。桌面 API 已經穩定,且已有團隊在正式環境中使用 v3,但您仍應在部署前進行完整測試。我們將利用 Beta 階段與社群一同找出最後的相容性與工作流程問題。Wails v2 仍是目前的穩定版本,並將持續獲得修正。
Beta 階段的文件
在 Beta 階段,我們會以英文文件作為事實依據,同時對 API 與工作流程進行最終驗證。現階段我們不接受翻譯 PR。待文件足夠穩定、翻譯人員不必因反覆變動而一再重做後,我們會在正式發布前恢復翻譯工作。
v3 包含哪些內容
- 明確的應用程式與視窗 API,包括原生支援多視窗
- Go 服務搭配靜態原始碼分析,可產生更豐富的 TypeScript 繫結,並保留註解及有意義的參數名稱
- 服務可將前端資產和指令碼與其後端 API 一併封裝,為可安裝且功能更豐富的外掛程式奠定基礎
- 以 Taskfile 為基礎、清楚可見且能檢視、擴充及偵錯的建置系統
- 伺服器建置,可在沒有原生桌面視窗的情況下執行相同的應用程式與服務
- 在受支援的平台上,為 Intel、Apple Silicon、amd64 及 arm64 提供現代化的 macOS、Windows 與 Linux 桌面支援
- 針對 iOS 與 Android 的實驗性行動裝置支援,可供探索,但不在桌面 Beta 版的相容性承諾範圍內
為何推出 v3
Wails v2 讓使用現代 Web 前端建置 Go 應用程式變得簡單直接。它一直很好地服務著這個專案以及眾多應用程式。然而,其單一視窗、由程式上下文驅動的執行階段,以及受到嚴格管理的建置流程,讓一些常見的桌面開發工作變得比原本應有的更困難。
v3 採用不同的模型。應用程式、視窗、服務、事件及平台功能都是明確的物件。隨著應用程式成長,這讓架構更容易理解,也讓多視窗等功能成為應用程式模型的常規部分,而非權宜之計。
新功能
為真正的桌面軟體打造的應用程式 API
v3 以明確的應用程式生命週期取代 v2 的wails.Run(...)設定方式。您會建立應用程式、註冊服務、建立視窗,並與負責所需行為的物件互動。
這大幅減少了隱含的程式上下文傳遞。視窗操作歸屬於視窗;整個應用程式範圍的操作則歸屬於應用程式。這種模型對多視窗應用程式而言更自然,也更適合測試與維護較大型的程式碼庫。
在 Alpha 階段使用過 v3 的使用者給予了極為正面的回饋。開發人員尤其肯定明確的模型:它讓程式碼更容易理解、權責歸屬更清楚,也讓複雜的桌面應用程式能在不受架構掣肘的情況下持續成長。
原生支援多視窗
多視窗是 v3 的核心功能。每個視窗都有自己的生命週期,並可在執行階段建立、管理及關閉。如此一來,需要編輯器、檢查器、偏好設定、工具視窗或多個獨立 UI 區塊的桌面軟體,就有更清晰的實作途徑。
服務與產生的繫結
Go 服務取代了舊有的繫結模型。它們讓應用程式邏輯維持為一般 Go 程式碼,並明確界定與前端之間的邊界。產生的繫結採用能反映應用程式及其服務的結構,讓開發人員更容易尋找並使用公開給前端的 API。
v3 使用靜態原始碼分析來產生這些繫結。這表示產生器能保留開發人員寫入程式碼的資訊,包括註解及有意義的參數名稱,而不是透過反射探索已建置完成的程式。如此產生的前端 API 更豐富、更實用,產生流程也更容易理解與維護。
服務也能將前端資產和指令碼掛載在其 Go 程式碼旁。這讓一項功能的所有部分都有一致的歸屬:其後端 API、所需的 JavaScript 或 UI,以及與主應用程式的整合點。這為開箱即用、提供豐富功能的 Wails 外掛程式開啟了可能性:安裝外掛程式、掛載其服務,然後使用該功能,而不必自行拼湊一組鬆散的繫結與前端相依套件。通用外掛程式系統並非此 Beta 版的一部分,但相較於 v2 的繫結模型,v3 讓這個方向切實可行。
可檢視及調整的建置系統
v3 讓專案的建置結構清楚可見。專案不再將所有建置決策隱藏在單一命令中,而是採用慣用的目錄與檔案結構,以及以 Taskfile 為基礎的建置設定;您可以在開發應用程式的同時理解、擴充及偵錯這些設定。
更健全的跨平台桌面基礎
此 Beta 版支援 amd64 與 arm64 上的 Windows、Intel 與 Apple Silicon 上的 macOS,以及 amd64 與 arm64 上的 Linux。搭配 WebKitGTK 6.0 的 GTK4 是預設的 Linux 技術堆疊;在整個 v3.0 系列中,GTK3 仍可作為舊版選項使用。行動裝置支援令人期待,但目前仍屬實驗性功能,不在桌面 Beta 版的相容性承諾範圍內。
此版本也包含提升日常使用可靠性所需的工作成果:改善平台行為、提供功能更完整的視窗模型、讓診斷資訊更清楚,以及提供附有總和檢查碼與來源證明的發布成品。
從 v2 遷移
v3 是新的主要版本,遷移時必須真正移植專案,而不只是變更版本號碼。主要的概念轉變包括:應用程式與視窗的生命週期、以服務取代與內容脈絡繫結的繫結、以直接的應用程式與視窗 API 取代 v2 執行階段套件,以及重新產生前端繫結。
我們已發布v2 至 v3 遷移指南,逐步說明這些變更,並包含功能對應表與測試檢查清單。此人工操作指南是這個 Beta 版支援的遷移途徑。請不要期待每個 v2 專案都能不經檢查便完成轉換:請測試結果、審慎移植執行階段呼叫,並在新應用程式準備就緒前保留 v2。
我們也正在評估一款實驗性的移轉助理。它不屬於此次 beta 版本;只有在使用具代表性的真實 v2 專案完成驗證後,我們才會推薦使用。
坦誠回顧這段歷程
第一個 v3 alpha 標籤於2023年 1 月18日發布。alpha 階段持續了很長一段時間,不能只含糊地一筆帶過。
在此期間,這個專案發生了巨大的變化。2021 年 9 月,首個適用於 Windows 的 Wails v2 測試版發布時,儲存庫約有 4000 顆星。到了 2022 年 9 月發布 v2 時,約有 10300 顆星。如今已超過 35000 顆星。這樣的成長是一份榮幸,但也改變了妥善維護專案的意義:更多使用者仰賴發布決策,更多貢獻者需要明確的參與途徑,而更多工作著重於讓專案具備可預期性,而不只是加入下一項功能。
我並非總能像這樣的成長所要求的那般迅速、清楚地調整我們的流程。這是我的責任。解決之道不是許下宏大的承諾,也不是讓每項決策都變成繁文縟節;而是更清楚地說明哪些項目受到支援、哪些仍屬實驗性質、決策如何制定,以及我們接下來要做什麼。
這項工作從此次 beta 開始。我們現在已明確訂出 beta、候選發布版與正式發布(GA)的里程碑,也有更清楚的相容性承諾、更新後的安全性政策,以及用於變更公開行為與新增功能的 WEP(Wails Enhancement Proposal)流程。隨著 Wails 成長,我們會持續改善路線圖並檢視專案治理。目標是讓這個專案更容易信賴、更容易參與貢獻,而不是更難向前推進。
我們也將重新啟用 Wails subreddit,並在 v3 邁向正式發布的過程中積極維護它,讓它成為另一個進行實務討論、提問與提供意見回饋的場所。
安裝並試用 beta 版本
版本發布後,使用以下指令安裝最新的 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/
- 版本資訊:版本預留文字
如果您發現可重現的錯誤,請回報並附上 wails3 doctor 的輸出,並儘可能提供最小範例。如果您想提議新增功能或變更公開行為,請建立 WEP PR 草稿,而不是功能請求議題。這兩種途徑都有助於我們明確回應,並讓 beta 階段持續推進。
感謝您
Wails v3 之所以能夠誕生,要歸功於每一位測試未完成版本、回報棘手錯誤、翻譯文件、回答問題、貢獻程式碼,以及持續督促專案精益求精的人。謝謝各位。
我們也要由衷地特別感謝陪伴 Wails 走過這段漫長轉型期的贊助者。各位的支持不僅讓專案得以維持運作,也讓我們能夠持續投入時間改善架構、工具、測試與文件,使專案得以加速邁向 v3。每一位測試者與貢獻者都協助塑造了這個版本,而贊助者則讓我們得以給予這些工作應有的重視。
此次 beta 是一份邀請,邀請您協助我們妥善完成 v3。請試用它、用它建置應用程式、告訴我們它會在哪裡出錯,並協助我們以審慎而迅速的步伐邁向 3.0。