Wails v3 Beta Release - v3.0.0-beta.31
Added
- Expose the
@wailsio/runtime/cancellablesubpath export soCancellablePromisecan be imported without evaluating the root runtime entry (#6153)
Changed
- Require Go 1.26 or later: the v3 module now declares
go 1.26.0, and projects generated bywails3 initandwails3 service initdeclare the same minimum
Fixed
- Fix binding generator output changing when building with Go 1.27, where
encoding/jsontypes such asMarshaler,UnmarshalerandRawMessagebecame aliases ofencoding/json/v2andencoding/json/jsontexttypes: they are rendered asanyagain and no models are emitted forencoding/json/v2(#6292) - Validate remote template URLs passed to
wails3 init -tbefore cloning: onlyhttps://,http://,ssh://,git://anduser@host:pathURLs are accepted, values are passed to git after--, and git is restricted to those transports during the clone - Reject out-of-range
x-wails-window-idheader values in the HTTP runtime transport instead of silently truncating them to another window's ID - Harden the updater's archive extraction against zip-slip: entry paths are now checked with
filepath.IsLocalplus a containment check on the joined path, with tests for nested.., backslash, absolute-path and symlink write-through entries in zip and tar.gz archives - Fix AppImages from
wails3 generate appimagecrashing on start outside Debian and Ubuntu with "Unable to spawn a new child process: … WebKitNetworkProcess". The bundled WebKit now runs the helper processes shipped in the AppImage. WebKit's bubblewrap sandbox stays on - Fix
-tags serverbuilds failing to compile for Android and iOS, fixing #6271 - Fix the updater failing to swap on Linux when the temp dir is on another filesystem (such as a tmpfs
/tmp) by staging beside the installed binary and copying across filesystems - Fix the updater trying to replace the read-only mount of an AppImage instead of the
.AppImagefile - Fix reserved
wails:window control messages being accepted from iframes on macOS and iOS. They are now only accepted from the window's main frame; other messages from iframes still reachRawMessageHandlerwith their origin info - Stop posting
WindowDidUpdateandWindowWillUpdateon macOS:NSWindowDidUpdateNotificationfires on every run-loop pass, so the page received ~120 emptyevaluateJavaScript:calls per second, and on macOS 27.0 each of them consumed the transient activation of the user's click —navigator.clipboard.writeText()and other activation-gated APIs rejected withNotAllowedErrorfrom real clicks (#6170) by @APshenkin - Fix default Windows info.json language to en-US (0409) so Explorer shows version details (#6210)
- Fix the Linux DMA-BUF renderer being turned off on laptops with an NVIDIA dGPU beside an AMD or Intel iGPU: on Wayland it is now turned off only when WebKit renders on NVIDIA (the app was offloaded to the dGPU, or the compositor runs on it), not whenever the nvidia module is loaded, which slowed rendering to a crawl on the iGPU; X11 sessions keep the old behaviour, since Xorg's render GPU is set by its configuration
- Handle cross-device rename failures in Linux updater with staged copy fallback in PR by @john-okeefe
- Fix
WebviewWindow.SetMenuon Windows not redrawing the menu bar unless a menubar theme was configured, fixing #6103 - Fix
WebviewWindow.SetMenu(nil)panicking on Windows instead of being a no-op like on macOS, fixing #6104 - Preserve changelog entries across competing pushes with retries in PR by @leaanthony
- Fix
go mod vendorfailing withpattern arm64/WebView2Loader.dll: no matching files foundon every platform, by removing the embeds that referenced binaries never shipped in the module, fixing #5782 and #5376, in PR by @Grantmartin2002 - Prevent duplicate window teardown on macOS in PR by @charlesbalderson
- Handle WM_CONTEXTMENU for systray menu to open on right-click in PR by @wzk2025
- Fix all five
InvokeSync*variants blocking their caller forever when the dispatched callback panics, fixing #6107, in PR by @RALIST - Rebuilds destroyed GTK3 submenus safely in PR by @leaanthony
- Implement Windows worker forwarding shim for nested workers in PR by @taliesin-ai
- Fix
OpenFile()on Windows ignoringPromptForMultipleSelection()whenCanChooseDirectories(true): users can now pick several folders at once, as on macOS and Linux (#6263) - Fix by-value
doublearguments to WebView2 COM methods on windows/arm64 —ZoomFactor,RasterizationScale, cookieExpires, and the print settings scale, page size and margins were affected there (the print-settings setters previously returnedErrDoubleArgUnsupported): affected calls now goes through aruntime.cgocalltrampoline that loadsd0, which Go's syscall path cannot (golang.org/issue/62583) by @APshenkin
Security
- Server mode (
-tags server) now accepts/wails/runtimecalls only asPOSTrequests from the server's own origin or an origin listed inServerOptions.WebSocketOriginPatterns; other methods receive HTTP 405 and other browser origins HTTP 403. Deployments behind a reverse proxy that rewrites theHostheader should add their public origin toWebSocketOriginPatterns - Server mode (
-tags server) bound to a loopback address (the defaultlocalhost,127.0.0.0/8or::1) now rejects requests with HTTP 403 unless theHostheader islocalhost, an IP literal, the bind host, or a host matchingServerOptions.WebSocketOriginPatterns, blocking DNS rebinding attacks against/wails/runtimeand the WebSocket endpoints - Windows notifications no longer fall back to PowerShell when the WinRT toast API fails; the error is returned instead
🤖 This is an automated nightly release generated from the latest changes on master.
Installation:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-beta.31⚠️ Beta Warning: This is pre-release software. The API is stable, but you may still encounter issues before the final 3.0 release.