tauri-runtime-wry-v2.12.0

tauri-apps/tauritauri-runtime-wry-v2.12.0Sep 26, 2026by github-actions[bot]

Upgrading?

AI Summary

This release exposes the `wry` permission handler API, adds fullscreen-on-monitor functionality, and fixes various platform-specific bugs. It also moves the crate to the Rust edition 2024.

Key Highlights

  • Exposed `wry` permission handler API for DisplayCapture, Midi, Sensors, and more.
  • Added `set_fullscreen_on_monitor` functionality.
  • Added `activate_ignoring_other_apps` on macOS.
  • Moved to Rust edition 2024.

Breaking Changes

  • `RuntimeHandle::primary_monitor`, `monitor_from_point`, and `available_monitors` now return `Result`s.
  • `CreateWebviewOptions::focused_webview` now takes `Arc<Mutex<FocusState>>` instead of `Arc<Mutex<Option<String>>>`.
  • `WindowsStore` and `DispatcherMainThreadContext` are no longer `Send` and `Sync`.
  • Removed unused DPI wrapper types like `PhysicalPositionWrapper`.

New Features

  • Exposed permission handler API.
  • Added `set_fullscreen_on_monitor`.
  • Added `no_redirection_bitmap` method.

Full Release Notes

<details>
<summary><em><h4>Cargo Audit</h4></em></summary>

```
Fetching advisory database from `https://github.com/RustSec/advisory-db.git`
      Loaded 1271 security advisories (from /home/runner/.cargo/advisory-db)
    Updating crates.io index
    Scanning Cargo.lock for vulnerabilities (1091 crate dependencies)
Crate:     fxhash
Version:   0.2.1
Warning:   unmaintained
Title:     fxhash - no longer maintained
Date:      2025-09-05
ID:        RUSTSEC-2025-0057
URL:       https://rustsec.org/advisories/RUSTSEC-2025-0057

Crate:     paste
Version:   1.0.15
Warning:   unmaintained
Title:     paste - no longer maintained
Date:      2024-10-07
ID:        RUSTSEC-2024-0436
URL:       https://rustsec.org/advisories/RUSTSEC-2024-0436

Crate:     rustls-pemfile
Version:   2.2.0
Warning:   unmaintained
Title:     rustls-pemfile is unmaintained
Date:      2025-11-28
ID:        RUSTSEC-2025-0134
URL:       https://rustsec.org/advisories/RUSTSEC-2025-0134

Crate:     rustybuzz
Version:   0.20.1
Warning:   unmaintained
Title:     `rustybuzz` is unmaintained
Date:      2026-07-11
ID:        RUSTSEC-2026-0206
URL:       https://rustsec.org/advisories/RUSTSEC-2026-0206

Crate:     ttf-parser
Version:   0.25.1
Warning:   unmaintained
Title:     `ttf-parser` is unmaintained
Date:      2026-06-28
ID:        RUSTSEC-2026-0192
URL:       https://rustsec.org/advisories/RUSTSEC-2026-0192

warning: 5 allowed warnings found
```

</details>

## [2.12.0]

### New Features

- [`3f62c70d6`](https://www.github.com/tauri-apps/tauri/commit/3f62c70d6b9a9eeeb7c302b010c858405a1bb761) ([#13848](https://www.github.com/tauri-apps/tauri/pull/13848)) Add `WebviewBuilder::limit_navigations_to_app_bound_domains`, `WebviewWindowBuilder::limit_navigations_to_app_bound_domains`, and limitNavigationsToAppBoundDomains to tauri.config.json.
- [`21ec647cf`](https://www.github.com/tauri-apps/tauri/commit/21ec647cf945284716696ce2388b5ae381ae5e14) ([#15223](https://www.github.com/tauri-apps/tauri/pull/15223)) Add `Builder::activate_ignoring_other_apps` on macOS to control whether the app activates at launch when another app is already active.
- [`29265557c`](https://www.github.com/tauri-apps/tauri/commit/29265557c7a42ef6a1f982e0ef738208df1f6dd3) ([#15410](https://www.github.com/tauri-apps/tauri/pull/15410)) Added `WindowBuilder/WebviewWindowBuilder::no_redirection_bitmap` method to disable the window redirection bitmap on Windows.
- [`382dd6ccc`](https://www.github.com/tauri-apps/tauri/commit/382dd6ccc022277d5620fde90a39b4c5e896310e) ([#14865](https://www.github.com/tauri-apps/tauri/pull/14865)) Expose the `wry` permission handler API through Tauri.
    This includes support for permission types such as `DisplayCapture`, `Midi`, `Sensors`, `MediaKeySystemAccess`, `LocalFonts`, `WindowManagement`, `PointerLock`, `AutomaticDownloads`, `FileSystemAccess`, and `Autoplay`.
    Added `PermissionResponse::{Allow, Deny, Default}` for runtime permission decisions.
- [`6edc2f4d4`](https://www.github.com/tauri-apps/tauri/commit/6edc2f4d49d2477649bf170aa2867276c25573da) ([#14926](https://www.github.com/tauri-apps/tauri/pull/14926)) Added `Window::set_fullscreen_on_monitor`, `WebviewWindow::set_fullscreen_on_monitor` and the `setFullscreenOnMonitor` JavaScript API to make a window fullscreen on the monitor containing a given physical position, along with the `core:window:allow-set-fullscreen-on-monitor` permission.

### Bug Fixes

- [`0aeadb6b2`](https://www.github.com/tauri-apps/tauri/commit/0aeadb6b2674ecd43f15b5dd6fcace3232f74b8a) ([#15821](https://www.github.com/tauri-apps/tauri/pull/15821)) Transfer the exit code from the `window.app_handle().exit(1)` call to the `run_return()` result instead of always returning 0.
- [`d727d6316`](https://www.github.com/tauri-apps/tauri/commit/d727d631659f07a597cc86cf808f505858dee878) ([#15630](https://www.github.com/tauri-apps/tauri/pull/15630)) Query monitor information (`primary_monitor`, `monitor_from_point`, `available_monitors`) on the main thread from the app-level runtime handle instead of touching the event loop's window target directly.
- [`a370f6533`](https://www.github.com/tauri-apps/tauri/commit/a370f653330506c2a5f59b643645a15b4cc30c18) ([#15224](https://www.github.com/tauri-apps/tauri/pull/15224)) Avoid leaking Objective-C objects in `WebviewMessage::WithWebview` on Apple targets by replacing `Retained::into_raw` with scoped retained bindings and `Retained::as_ptr` pointer handoff.
- [`59e077457`](https://www.github.com/tauri-apps/tauri/commit/59e077457ac87ffd43db4c557ca2987d2fa6d37e) ([#16075](https://www.github.com/tauri-apps/tauri/pull/16075)) Fix a crash on iOS when the monitor APIs (`Window::current_monitor`, `primary_monitor`, `available_monitors`, `monitor_from_point` and the `AppHandle` equivalents) are called off the main thread, e.g. from a command: the monitor is now read on the main thread, where iOS requires it.
- [`0a28d9b76`](https://www.github.com/tauri-apps/tauri/commit/0a28d9b7644d2ecf0fa6613f35a8a7aa8b2ea3eb) ([#15760](https://www.github.com/tauri-apps/tauri/pull/15760)) On macOS, `App::set_theme` now also updates the theme each window reports, so `Window::theme` (and `getCurrentWindow().theme()` in JavaScript) reflects the app-level theme instead of keeping the previous value until the system appearance changes.
- [`e2c54be10`](https://www.github.com/tauri-apps/tauri/commit/e2c54be1055851686b1b57b69cfa7d6b5a0f552f) `WindowsStore` and `ActiveTraceSpanStore` now implement `Debug` manually without borrowing the inner `RefCell`, so formatting them re-entrantly while the store is already borrowed no longer panics with "already borrowed".
- [`08acfb3fa`](https://www.github.com/tauri-apps/tauri/commit/08acfb3fa04945a6a4f822d66c7556111d9385aa) ([#15625](https://www.github.com/tauri-apps/tauri/pull/15625)) Fix webview don't get focus when Alt-Tab back to the window if `unstable` feature is enabled on Windows
- [`1c573a075`](https://www.github.com/tauri-apps/tauri/commit/1c573a075a4e6d0754687d5ecfe7ded4c3d9e74d) ([#15508](https://www.github.com/tauri-apps/tauri/pull/15508)) `create_window` and `create_webview` should wait for the window creation to complete before returning even if it's off main thread, it should also return the error if it failed
- [`5a882eccf`](https://www.github.com/tauri-apps/tauri/commit/5a882eccfda53a189ec076c79c4ad186f50db5ff) ([#15701](https://www.github.com/tauri-apps/tauri/pull/15701)) On Linux, fix resize cursor for undecorated Window not being set correctly when mouse is over a resize edge.
- [`08acfb3fa`](https://www.github.com/tauri-apps/tauri/commit/08acfb3fa04945a6a4f822d66c7556111d9385aa) ([#15625](https://www.github.com/tauri-apps/tauri/pull/15625)) Fix `WindowEvent::Focused` events emitted when dragging the window on Windows
- [`f4feb2ba7`](https://www.github.com/tauri-apps/tauri/commit/f4feb2ba71ae018f0fc200453ae9cf12a6b0c05f) ([#15950](https://www.github.com/tauri-apps/tauri/pull/15950)) On Windows, fixed `Window::is_focused` always returns `false` in multi-webview mode

### What's Changed

- [`2e6e33c85`](https://www.github.com/tauri-apps/tauri/commit/2e6e33c8501c66c9a49aad861048d39345cfb26f) ([#16029](https://www.github.com/tauri-apps/tauri/pull/16029)) Moved to edition 2024
- [`ce3f13b91`](https://www.github.com/tauri-apps/tauri/commit/ce3f13b91a75cb723f229f56a3e82eb5f2d3f644) ([#15887](https://www.github.com/tauri-apps/tauri/pull/15887)) Lock unstable tauri crates to minor versions.
- [`7cc68e74f`](https://www.github.com/tauri-apps/tauri/commit/7cc68e74ff6981f5c50a52a67d56c5eb2d227188) ([#15307](https://www.github.com/tauri-apps/tauri/pull/15307)) `WindowEvent::Resumed` and `WindowEvent::Suspended` are now only fired for the matching activity window instead of every window.
- [`1cffb01da`](https://www.github.com/tauri-apps/tauri/commit/1cffb01da55f5fcd5a0f74ef3281b5a715513e4d) ([#13221](https://www.github.com/tauri-apps/tauri/pull/13221)) Set MSRV to 1.90.
- [`7fd603542`](https://www.github.com/tauri-apps/tauri/commit/7fd603542134fed792514a392af828555859c5d6) ([#15413](https://www.github.com/tauri-apps/tauri/pull/15413)) `EventLoopIterationContext` and `UserMessageContext` now takes references to avoid clones

### Dependencies

- Upgraded to `tauri-utils@2.10.0`
- Upgraded to `tauri-runtime@2.12.0`
- [`872428fe9`](https://www.github.com/tauri-apps/tauri/commit/872428fe910efe25eeaa959b56adcd9d9a9a2157) ([#15790](https://www.github.com/tauri-apps/tauri/pull/15790)) On macOS, updated `objc2-*` dependencies to 0.3.2
- [`51433d740`](https://www.github.com/tauri-apps/tauri/commit/51433d740fbac79247aad82764e53f13abcbb01a) ([#15996](https://www.github.com/tauri-apps/tauri/pull/15996)) Updated `windows` to `0.62` and `webview2-com` to `0.39`, this drops Windows 7 support, see https://github.com/microsoft/windows-rs/issues/3808.

### Breaking Changes

- [`24cb6de2d`](https://www.github.com/tauri-apps/tauri/commit/24cb6de2d4fe4d350afce2fd852dcdcc6a1320f0) ([#15544](https://www.github.com/tauri-apps/tauri/pull/15544)) Removed unused dpi wrapper types like `PhysicalPositionWrapper`
- [`579c7e2d2`](https://www.github.com/tauri-apps/tauri/commit/579c7e2d2f97182fcd933ca560ee810261322d60) ([#14805](https://www.github.com/tauri-apps/tauri/pull/14805)) `WindowsStore` and `DispatcherMainThreadContext` are no longer `Send` and `Sync`, and unsafe impl has been moved to `Context` directly.
- [`d727d6316`](https://www.github.com/tauri-apps/tauri/commit/d727d631659f07a597cc86cf808f505858dee878) ([#15630](https://www.github.com/tauri-apps/tauri/pull/15630)) Changed `RuntimeHandle::primary_monitor`, `RuntimeHandle::monitor_from_point`, `RuntimeHandle::available_monitors` to return `Result`s
- [`08acfb3fa`](https://www.github.com/tauri-apps/tauri/commit/08acfb3fa04945a6a4f822d66c7556111d9385aa) ([#15625](https://www.github.com/tauri-apps/tauri/pull/15625)) `CreateWebviewOptions::focused_webview` now takes `Arc<Mutex<FocusState>>` instead of `Arc<Mutex<Option<String>>>`

<details>
<summary><em><h4>Cargo Publish</h4></em></summary>

```
Updating crates.io index
   Packaging tauri-runtime-wry v2.12.0 (/home/runner/work/tauri/tauri/crates/tauri-runtime-wry)
    Updating crates.io index
    Packaged 23 files, 313.9KiB (71.0KiB compressed)
   Verifying tauri-runtime-wry v2.12.0 (/home/runner/work/tauri/tauri/crates/tauri-runtime-wry)
 Downloading crates ...
  Downloaded gdkx11 v0.18.2
  Downloaded dlopen2 v0.8.0
  Downloaded dlopen2_derive v0.4.0
  Downloaded lock_api v0.4.12
  Downloaded dbus v0.9.10
  Downloaded gdkx11-sys v0.18.2
  Downloaded gdkwayland-sys v0.18.2
  Downloaded crossbeam-channel v0.5.15
  Downloaded parking_lot_core v0.9.10
  Downloaded parking_lot v0.12.3
  Downloaded libdbus-sys v0.2.7
  Downloaded x11 v2.21.0
  Downloaded tao v0.37.0
  Downloaded wry v0.57.0
  Downloaded x11-dl v2.21.0
  Downloaded tauri-runtime v2.12.0
   Compiling x11 v2.21.0
   Compiling gdkx11-sys v0.18.2
   Compiling url v2.5.8
   Compiling lock_api v0.4.12
   Compiling libdbus-sys v0.2.7
   Compiling x11-dl v2.21.0
   Compiling parking_lot_core v0.9.10
   Compiling crossbeam-utils v0.8.21
   Compiling raw-window-handle v0.6.2
   Compiling scopeguard v1.2.0
   Compiling urlpattern v0.6.0
   Compiling dlopen2_derive v0.4.0
   Compiling tauri-runtime v2.12.0
   Compiling wry v0.57.0
   Compiling tauri-utils v2.10.0
   Compiling dlopen2 v0.8.0
   Compiling crossbeam-channel v0.5.15
   Compiling gdkx11 v0.18.2
   Compiling dbus v0.9.10
   Compiling parking_lot v0.12.3
   Compiling gdkwayland-sys v0.18.2
   Compiling tauri-runtime-wry v2.12.0 (/home/runner/work/tauri/tauri/target/package/tauri-runtime-wry-2.12.0)
   Compiling tao v0.37.0
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 9.67s
   Uploading tauri-runtime-wry v2.12.0 (/home/runner/work/tauri/tauri/crates/tauri-runtime-wry)
    Uploaded tauri-runtime-wry v2.12.0 to registry `crates-io`
note: waiting for tauri-runtime-wry v2.12.0 to be available at registry `crates-io`
help: you may press ctrl-c to skip waiting; the crate should be available shortly
   Published tauri-runtime-wry v2.12.0 at registry `crates-io`
```

</details>

Related Repositories