Skip to content

Tauri Core Releases

tauri, @tauri-apps/api, and the Tauri CLI, grouped by version.

2.12.x

2.12.0

Sep 26, 2026

tauri 2.12.0

New Features
  • 3f62c70d6 (#13848) Add WebviewBuilder::limit_navigations_to_app_bound_domains, WebviewWindowBuilder::limit_navigations_to_app_bound_domains, and limitNavigationsToAppBoundDomains to tauri.config.json.
  • 7dbfc1fe5 (#14620) Added the app > appDirectoriesOverride config to override the directories returned by the app_*_dir path APIs, either with a single root directory or per directory. This lets apps keep all of their data, including the data of Tauri itself and of plugins that use these APIs, in a single place of their choosing, such as next to the executable for portable apps. The override can also be set at runtime through Context::config_mut.
  • d8d02ba60 (#14767) Added the exit function to @tauri-apps/api/app, backed by the new plugin:app|exit command (core:app:allow-exit permission), to exit the app without requiring the @tauri-apps/plugin-process plugin.
  • 460ec3544 (#14786) Add Webview::convert_file_src and WebviewWindow::convert_file_src, the Rust equivalent of the JavaScript convertFileSrc function. The returned URL uses the scheme the webview was configured with (useHttpsScheme), so it always matches what the webview can load.
  • 21ec647cf (#15223) Add Builder::activate_ignoring_other_apps on macOS to control whether the app activates at launch when another app is already active.
  • d203f74a2 (#15274) Added Image::from_app_icon_resource and Image::from_icon_resource on Windows for loading images from icon resources embedded in the executable (identified by an IconResource id or name), and the default default_window_icon from tauri::generate_context macro is now loaded using from_app_icon_resource. The resource id tauri-build embeds the application icon with is exposed as tauri_utils::platform::WINDOWS_APP_ICON_RESOURCE_ID.
  • 29265557c (#15410) Added app > windows > noRedirectionBitmap config option to disable the window redirection bitmap on Windows.
  • 29265557c (#15410) Added WindowBuilder/WebviewWindowBuilder::no_redirection_bitmap method to disable the window redirection bitmap on Windows.
  • 382dd6ccc (#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 (#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.
Enhancements
  • aebf38c84 (#15694) Migrate the Android Gradle scripts from the deprecated kotlinOptions DSL to compilerOptions, which is accepted by both Kotlin Gradle Plugin 1.9.x and 2.x. This lets projects move to Kotlin 2.x without hitting the hard error that 2.3+ raises on the old DSL.

    This increased the minimum supported Gradle version to 8.13, if your gradle is on an earlier version, delete src-tauri/gen/android/gradle/wrapper/gradle-wrapper.properties and re-run tauri android init to update it.

  • d3108ff9a (#15578) State had Send and Sync trait bounds that were already implied, remove them from the struct definition.

  • 4a5065653 (#14454) Added Regular and Clear Liquid Glass window effects, and the interactive window effects option (macOS 27.0+) that enables the glass' visual response to user interactions.

  • 459fc315e (#15711) Fix different build and runtime debug assertion profiles on the tauri-utils crate can resulting in compilation errors.

Bug Fixes
  • 0349b6fb8 (#16072) Fix the runtime ACL denying a command for every origin when any capability denied it: deny permissions are now correctly scoped to the capability's execution context (local/remote) instead of denying the command for every origin. Previously a capability that denied a command for a remote URL also denied it for the local app (and vice-versa), because the origin match result was discarded. The debug message reporting an explicit denial now also only references the capabilities that actually deny the requesting origin.

  • d8d02ba60 (#14767) On Android, AppHandle::exit (and the process plugin exit command) now finishes the activity instead of exiting the process directly, so the app closes with the system transition instead of flashing a blank screen.

  • e3e3474d3 On Android, Invoke.resolveObject and the other values serialized with the plugin JSON mapper now write JSObject and JSArray as JSON objects and arrays. They were serialized through their private fields, so a JSArray reached the frontend as { "values": [...] } and a JSObject as { "nameValuePairs": {...} }.

  • 020919a1b (#15798) On Android, fixed requesting permission in a plugin fails after the first activity closed.

  • cb2ecac53 (#15949) On Android, fixed a crash when an activity is destroyed while another one is already running — installing an APK over the running app is the common way to hit it. The plugin manager tried to move its activity result launchers to the surviving activity, and registerForActivityResult rejects that with IllegalStateException: LifecycleOwner ... is attempting to register while current state is RESUMED. Each activity now registers its own launchers when it is created.

  • f9ed1a3fd (#15838) Fix malformed asset:// multi-range responses: the multipart body now ends with the closing boundary, Content-Type is only multipart/byteranges, and the status is 206 Partial Content.

  • 127aa176b (#16050) Load asset:// files asynchronously instead of on the event loop thread, so a slow or unreachable path no longer freezes every window.

  • 97f6666b9 (#16088) Bump tray-icon to 0.25 and muda to 0.20 to pick up the fix for left-click events being swallowed by the tray menu on macOS 27 (fix #16035).

  • 1417768f9 (#15679) Remove the Channel used to send event to JavaScript side on dropping the menu

  • 17717757b (#15617) Remove Rust-side event listeners bound to a window or webview when that target is destroyed, so listen/once handlers registered on a Window, Webview or WebviewWindow no longer leak after it is closed.

  • 0aeadb6b2 (#15821) Transfer the exit code from the window.app_handle().exit(1) call to the run_return() result instead of always returning 0.

  • 82c706e26 Stop queuing large channel payloads once the target webview is closed. They were kept in memory until the app exited, and a new webview reusing the same label could fetch them.

  • 023fe7f59 (#15291) Fix capabilities added at runtime through add_capability (feature dynamic-acl) being merged into the command scopes of the build time ACL, which polluted unrelated plugin scopes and made their deserialization fail. Scope values are also no longer duplicated when a scoped permission allows more than one command.

  • 4a0e1df18 (#15604) Remove a webview's JS event listeners from the backend Listeners map when that webview is destroyed. Previously the entries keyed by the source webview label lingered after the webview was dropped, so they could never be delivered and leaked until the app exited — forcing apps to manually unlisten() before closing a window.

  • d727d6316 (#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 (#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.

  • 406feea75 (#15800) Guard the handler lookup in the generated unlisten script. When the unlisten function ran before its listener registration eval reached the webview, the entry was still missing and reading its handlerId threw, which aborted _unlisten before it sent the backend plugin:event|unlisten and left the listener registered.

  • 448d39ee2 (#15860) Fix menu related commands can panic if called with invalid input through invoke directly.

    • The internal do_menu_item! macro now returns Err(crate::Error::UnexpectedMenuKind) instead of unreachable!()
    • Added a new error type tauri::Error::UnexpectedMenuKind
    • menu:new with the Predefined kind now returns an error instead of panicking when the item option is missing
    • Converting an Image to a menu or tray icon now returns tauri::Error::InvalidIcon when the RGBA buffer does not match the image size, instead of panicking on Linux when the icon is rendered
  • e517fa18e (#15450) Fix run_main_thread! macro used by things like MenuItem and some other APIs deadlock when called on main thread with MockRuntime

  • 2087bcae2 (#15920) Fix path.normalize("") returning an empty string instead of ".", matching Node.js and the existing path.join("") behavior.

  • 08acfb3fa (#15625) Fix webview don't get focus when Alt-Tab back to the window if unstable feature is enabled on Windows

  • 5a882eccf (#15701) On Linux, fix resize cursor for undecorated Window not being set correctly when mouse is over a resize edge.

  • 08acfb3fa (#15625) Fix WindowEvent::Focused events emitted when dragging the window on Windows

  • f4feb2ba7 (#15950) On Windows, fixed Window::is_focused always returns false in multi-webview mode

Performance Improvements
  • 26a876a9f (#16049) Skip redundant rgba buffer copies in icon conversions (muda::Icon/tray_icon::Icon), Image::from_bytes, and submenu icon construction.
  • ba0828c76 (#15955) Skip serializing to JSON for Image::rgba
What's Changed
  • 1fbadc877 (#15952) Internal refactors removing an Arc and a Mutex. Deprecate InvokeMessage::state and InvokeMessage::state_ref that should accidentally were made public.
  • 2e6e33c85 (#16029) Moved to edition 2024
  • ce3f13b91 (#15887) Lock unstable tauri crates to minor versions.
  • 7cc68e74f (#15307) WindowEvent::Resumed and WindowEvent::Suspended are now only fired for the matching activity window instead of every window.
  • 1cffb01da (#13221) Set MSRV to 1.90.
Security fixes
  • 201437309 Bind channel data IPC queue entries to the webview they were created for and scope their ids per webview. Queued channel payloads and large invoke responses can no longer be read by other webviews, and entries are purged when the owning webview is closed. Fixes GHSA-w28w-mhc8-qvjv.
Dependencies
  • Upgraded to tauri-utils@2.10.0

  • Upgraded to tauri-build@2.7.0

  • Upgraded to tauri-runtime@2.12.0

  • Upgraded to tauri-runtime-wry@2.12.0

  • Upgraded to tauri-macros@2.7.0

  • e2e585ad1 (#15828) On Android, fix missing consumer-rules.pro file in the template.

    IMPORTANT: For plugin authors, update your build.gradle.kts file to remove the

    buildTypes {
    release {
    isMinifyEnabled = false
    proguardFiles(
    getDefaultProguardFile("proguard-android-optimize.txt"),
    "proguard-rules.pro"
    )
    }
    }

    section and rename your proguard-rules.pro to consumer-rules.pro to match the consumerProguardFiles("consumer-rules.pro") in the template.

  • e2e585ad1 (#15828) On Android, updated the template to use Gradle v9.6.1 (com.android.tools.build:gradle v9.3.1) and Kotlin v2.2. Use tauri android init to apply the change.

  • 2bb4fdbd0 (#15592) Updated cargo_toml crate to 1

  • 872428fe9 (#15790) On macOS, updated objc2-* dependencies to 0.3.2

  • 9e9a54dea (#15890) Update swift-rs to support builds using Xcode 27.

  • 51433d740 (#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
  • 26cb3d665 (#15563) On Android, $VIDEO and video_dir() now resolve to the app-specific Movies directory instead of external cache storage.

    Migration: Files previously written to the old location (.../cache) will not be discovered at the new location (.../files/Movies). Migrate existing files or update path assumptions accordingly.

@tauri-apps/api 2.12.0

New Features
  • d8d02ba60 (#14767) Added the exit function to @tauri-apps/api/app, backed by the new plugin:app|exit command (core:app:allow-exit permission), to exit the app without requiring the @tauri-apps/plugin-process plugin.
  • 990f77eb2 (#15961) Added JsImage type alias and documented its relationship to the Rust JsImage
  • 29265557c (#15410) Added noRedirectionBitmap option to the Window and WebviewWindow constructors on Windows.
  • 6edc2f4d4 (#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.
Enhancements
  • be019795a (#14103) Add ECMAScript Explicit Resource Management to Resource. You can now use the using syntax in supported browsers or with polyfills:

    import { create, BaseDirectory } from "@tauri-apps/plugin-fs"
    ...
    {
    await using file = await create("foo/bar.txt", { baseDir: BaseDirectory.AppConfig });
    await file.write(new TextEncoder().encode("Hello world"));
    // Before `file` goes out of scope, it is disposed by calling `file[Symbol.asyncDispose]()` and awaited.
    }
  • 4a5065653 (#14454) Added Regular and Clear Liquid Glass window effects, and the interactive window effects option (macOS 27.0+) that enables the glass' visual response to user interactions.

Bug Fixes
  • 4fabe2ff1 (#16067) Fix Window.setBackgroundColor, Webview.setBackgroundColor and WebviewWindow.setBackgroundColor sending a color argument while the plugin:window|set_background_color and plugin:webview|set_webview_background_color commands expect label and value. The color was always deserialized as None, so instead of applying the given color the call cleared the background of the calling window/webview.
  • 32efd0232 (#15957) Image.rgba now returns a more specific type Promise<Uint8Array<ArrayBuffer>> instead of the default Promise<Uint8Array<ArrayBufferLike>

cli 2.12.0

New Features
  • f6c1eb253 (#15401) Added bundle.windows.bundleVCRuntime to copy the Visual C++ runtime DLLs into Windows MSI and NSIS installers. The bundler locates the runtime through VCTOOLS_REDIST_DIR or the bundled vswhere.exe.

  • f76b1d3ae (#15644) The bundler now prints the size of each generated bundle next to its path in the Finished N bundles at: output (directories such as macOS .app bundles are measured recursively).

  • af465eae1 (#15619) Add a --no-binary-patching flag to tauri build and tauri bundle. When set, the bundler skips patching the main executable with bundle type information (and the subsequent re-signing), leaving an already-signed binary untouched. Patching is only required when shipping multiple bundle types per platform that should each update with their own installer format.

  • 0646cc162 (#15620) Add a --fit option to tauri icon to accept non-square source images. --fit cover center-crops the source to a square (clipping the longer side) and --fit contain pads the shorter side with transparency. Non-square sources without --fit keep erroring, now with a hint pointing to the flag.

  • f6c1eb253 (#15401) Added build.windows.staticVCRuntime to control MSVC static runtime linking. The STATIC_VCRUNTIME environment variable is now deprecated and emits a migration warning when used.

  • f45ec0dcf Record the app version in the trusted comment of updater signatures, so a signed artifact is bound to the version it was released as.

    An update endpoint response is not signed, and the signature only covers the downloaded artifact, so the announced version on its own does not prove which release the url and signature point at. minisign covers the trusted comment with its global signature, which lets the updater plugin compare the two and reject a response that pairs a version number with a different release. Enable requireSignedVersion in the updater plugin configuration to enforce this.

    tauri build fills the version in automatically, and tauri plugin add updater now enables requireSignedVersion for the project it is adding the plugin to. tauri signer sign gains an --app-version flag for signing updater artifacts by hand, and warns when it is omitted.

Enhancements
  • e19121427 (#15993) Don't always rewrite Cargo.toml file from CRLF line endings to LF

  • aebf38c84 (#15694) Migrate the Android Gradle scripts from the deprecated kotlinOptions DSL to compilerOptions, which is accepted by both Kotlin Gradle Plugin 1.9.x and 2.x. This lets projects move to Kotlin 2.x without hitting the hard error that 2.3+ raises on the old DSL.

    This increased the minimum supported Gradle version to 8.13, if your gradle is on an earlier version, delete src-tauri/gen/android/gradle/wrapper/gradle-wrapper.properties and re-run tauri android init to update it.

  • d89d8fa62 (#15780) Warn during Android commands (init/dev/build) when the active Java version is too new for the Gradle version the project uses (e.g. Java 27 against the Gradle 9.6.1 the template ships, or Java 25 against a project still on Gradle 8.14), instead of letting the build fail later with a cryptic error. The warning points to the Gradle/Java compatibility matrix and suggests a supported JDK.

  • c3d21bd60 (#15730) Use Theme.Material3.DayNight.NoActionBar instead of Theme.MaterialComponents.DayNight.NoActionBar when running tauri android init

  • f654f470c (#15862) Update template to use targetSdk = 37

  • cdaf7eab6 (#15765) Clarify that the tauri init frontend commands run before tauri dev and tauri build, and can be left empty when they are not needed.

  • d0f38df06 (#15997) When stdin is not a terminal, tauri init now automatically skips prompts, avoiding IO errors in CI and scripts. This eliminates the need to pass --ci explicitly in non-interactive environments.

  • ca160ad48 (#15895) tauri build now warns when productName is still set to the default tauri-app, since it names the generated bundles and is written into install paths and metadata that are expected to be unique to your application. The config documentation for productName now lists what the field controls on each platform, and identifier's documentation notes that the default value is rejected.

  • 010f06bae (#15737) Document the TAURI_SIGNING_PRIVATE_KEY_PATH environment variable and clarify that TAURI_SIGNING_PRIVATE_KEY accepts a string or a path for the build and bundle command but must be the literal key string for the signer sign command, both in ENVIRONMENT_VARIABLES.md and in the signer generate command output.

Bug Fixes
  • 9bad06b9f (#16096) tauri capability new and tauri permission new now accept an --out path to a file that does not exist yet, trim comma-separated prompt answers (so fs:default, core:default works), report invalid permissions as errors instead of panicking, and reject identifiers that are not valid file names (such as ../../x), which previously let them write outside of the capabilities or permissions directory.
  • 9642b3087 (#16117) tauri add now honors --tag, --rev and --branch for official plugins instead of silently installing the registry version, and rejects passing more than one of them. With npm, the JS package requirement is now ~<version> like the other package managers, instead of >=<version> which allowed a later major version.
  • cada1cd4f (#16105) Fix Android dev server port forwarding: adb reverse --list is now matched on the exact port (so tcp:80 no longer matches tcp:8080), stale forwards on other connected devices are actually removed, and the forward verification gives up with a warning after a few attempts instead of retrying forever.
  • d5bd04658 (#16111) Fix bundle > android > debugApplicationIdSuffix being written to the signingConfigs debug block instead of the buildTypes one, and keep the existing content of single-line debug blocks such as getByName("debug") { isDebuggable = true } instead of dropping it.
  • ba17da2e5 (#16101) tauri icon now generates 72x72 Android hdpi launcher icons (previously 49x49) and writes the Android launcher background color in #RRGGBB/#AARRGGBB notation instead of the raw CSS color string, which Android rejected or misread. Invalid SVG sources and --png 0 now return an error instead of panicking.
  • 272842a57 (#16128) Fix error messages that printed placeholders such as {t} literally instead of the value, e.g. "Could not find an Android device matching {t}".
  • 10ad4e54e (#16127) The Bash completions generated by tauri completions no longer replace the completions of cargo, npm, pnpm, yarn, bun and deno. They now define a _tauri_cli function registered only for the tauri and cargo-tauri commands. Generating completions when running the cargo-tauri binary directly no longer panics.
  • 0e4ded72a (#16107) Fix binaries in src/bin and src/main.rs being left out of bundles when Cargo.toml declares a [[bin]] target without a path.
  • 8e0fa2e2f (#16097) Fix the bundler using the host target triple when --target is not passed but build.target is set in .cargo/config.toml. The CLI now also accepts build.target as an array and honors the CARGO_BUILD_TARGET environment variable.
  • 7bb0a5421 (#16120) Fix the Cargo.toml feature rewrite corrupting a string dependency version that has a trailing comment or uses single quotes (e.g. tauri = "2" # pin became "2#pin"). The version value is now kept as-is and the comment is preserved.
  • e4630258e (#16114) Fix the CLI's working directory being left changed to the config directory when the Tauri configuration fails to parse, for example when tauri dev reloads an invalid config.
  • 1b91b7b7b (#16102) tauri info now logs a warning when it cannot check the latest crate version on crates.io instead of silently ignoring the failure, and no longer panics if crates.io returns a version it cannot parse.
  • 1b91b7b7b (#16102) tauri info now lists every locked version of a Rust crate when Cargo.lock contains more than one, and no longer panics when the crates.io response cannot be parsed.
  • 6507d0b8b (#16124) tauri dev now reports an error instead of panicking when the beforeDevCommand cannot be spawned or the devUrl host cannot be resolved, and no longer risks stopping the beforeDevCommand process tree twice when Ctrl+C and the app exit race.
  • c1ea96ad6 (#16110) Fix tauri dev not reacting to the app exiting when a process spawned by the app kept its stderr open, and stop keeping the whole app stderr output in memory. Also fix command output capture that could return empty output when the command finished before its output was read.
  • d61fbdc3e (#16109) Fix Cargo.toml feature injection and the v1 migration only updating either [dependencies] or [target.'cfg(..)'.dependencies], whichever came first in the file. Both the main and all target-specific dependency tables are now updated.
  • 5d995ed35 (#16017) Normalize gen/android/gradlew CRLF line endings to LF on all host platforms, not only Unix. A gradlew checked out with CRLF broke sh ./gradlew on Windows hosts using Git Bash. The rewrite only runs when a CRLF is actually present. A failure to rewrite aborts on Unix, where the script is executed directly; on Windows the CLI invokes gradlew.bat, so failures there only warn.
  • 6d943c420 (#16065) Fix the tauri capability new command description, which said "Create a new permission file", and the --skip-stapling help text on tauri build and tauri bundle, whose first line described the opposite of what the flag does.
  • b8be924d3 (#16106) tauri init no longer panics when the app name, window title, frontend dist, dev URL or before dev/build commands contain quotes or backslashes (e.g. -D ..\dist or vite --host "0.0.0.0"); the values are now JSON-escaped in the generated tauri.conf.json.
  • b9b32a259 (#16108) Fix PRODUCT_BUNDLE_IDENTIFIER in the iOS Xcode project being set to the raw identifier (with underscores) instead of the sanitized iOS bundle identifier used by the Xcode project template and the export options provisioning profiles.
  • 4f51a2f06 (#16115) Fix tauri ios run --features being ignored, and tauri ios dev --release still building the app in debug mode.
  • 59e077457 (#16075) tauri ios build for a simulator target no longer fails with "failed to rename app: Directory not empty" when the output .app from a previous build exists.
  • fe1aa30d2 (#16113) Quote the Tauri CLI path and the Xcode variables in the iOS "Build Rust Code" build phase, fixing builds when Xcode or the CLI is installed in a path containing spaces (requires regenerating the Xcode project with tauri ios init). Also fixes CXXFLAGS not being set for iOS targets in tauri ios xcode-script.
  • aa0a801c3 (#16116) Fix Java version detection for the Android Java/Gradle compatibility warning when JAVA_HOME is not set: the java binary on PATH is now resolved through symlinks (e.g. Linux alternatives and Homebrew), and on macOS the /usr/bin/java stub falls back to /usr/libexec/java_home.
  • 1aafaa4e3 (#16103) When rewriting a localhost devUrl to the network address for mobile development, the query string and fragment are now preserved, and the IPv6 loopback ([::1]) and unspecified ([::]) addresses are now treated as localhost.
  • 022932dd5 (#16123) Fix iOS Xcode project synchronization corrupting project.pbxproj when several build settings were added to the same configuration, when an added setting was changed again, or when a multi-line setting was overwritten. Product names, signing identities and other values written to the project are now properly escaped.
  • a4099d819 (#16098) tauri permission add (and tauri add) no longer overwrites an existing capabilities/desktop.json or capabilities/mobile.json when adding a desktop-only or mobile-only plugin permission and no platform-restricted capability exists; the new capability now gets an unused file name and identifier (e.g. desktop-2.json). An explicitly passed capability is now used even if its platforms do not match the plugin, with a warning, instead of being silently ignored.
  • e49d1b474 (#16100) tauri permission rm <plugin>:* and tauri remove no longer strip unrelated permissions whose identifier merely contains the plugin name (e.g. tauri remove os removing positioner:default). Local permission files are now looked up in the Tauri directory, like tauri permission new, and an unparsable permission file is skipped with a warning instead of aborting the command.
  • efa82f5ed (#16125) Fix plugin scaffolding for names like my-plugin: the default Android package ID now uses a snake_case segment (com.plugin.my_plugin) and user-provided IDs are validated, iOS Xcode folders use the same kebab-case name as the project file, and the plugin ios init/plugin android init code snippets now match the generated bindings and the setup(|app, api| ..) API. plugin init into a non-empty directory no longer creates a permissions folder after skipping the template.
  • db6804d80 (#16126) Fix --release being added to the cargo command when a custom profile is passed as --profile=<name>, which made cargo reject the build.
  • 8310461f6 (#16104) Fix tauri init and tauri info detecting SvelteKit projects as plain Svelte; tauri init suggested the wrong dev server URL and frontend dist directory.
  • eaf96690d (#15804) On Linux, do not bundle xdg-open and xdg-utils in the AppImage anymore. This rarely worked and usually requires host system support anyway.
  • 2b7c1f8b6 (#16003) Fix tauri add / tauri remove installing npm plugin packages into src-tauri instead of the frontend directory.
  • c735ba32b (#15241) Fix broken child window icons in Task Manager, you'll need to re-run tauri icon to generate the fixed icons
  • adf5acf6f (#15651) Fix MSI bundling when an external binary filename starts with a digit.
  • 11012a13f (#15681) Fix WiX bundler doesn't respect the resource's target file name.
  • 59e077457 (#16075) Detect pnpm from npm_config_user_agent when generating the mobile projects. pnpm's native binary (pnpm 11+) runs package scripts without setting PNPM_PACKAGE_NAME, and when installed through corepack the binary is named pnpm-native, so tauri android init recorded pnpm-native as the command for Gradle to run and the Android build failed with "A problem occurred starting process 'command 'pnpm-native''".
  • 6a298ee12 (#15713) Fix tauri info reporting the Rust-only plugins (localhost, persisted-scope and single-instance) as missing their @tauri-apps/plugin-* JavaScript package, which is never published for those plugins.
  • 33b3ea582 The bundled vswhere.exe is now written to a new, uniquely named temporary file on each use and removed afterwards, instead of running any existing %TEMP%\vswhere.exe.
What's Changed
Security fixes
  • 98918df64 (#16112) tauri add no longer installs the npm package tauri-plugin-<name>-api for community plugins. npm and crates.io are separate namespaces, so that package may be unowned or squatted; the CLI now asks you to install the plugin's JavaScript bindings yourself. tauri remove only removes the plugin's JS package when package.json lists it, and a failure there no longer skips the capability cleanup.
  • cc9d522c6 (#16095) The built-in dev server now rejects requests whose Host header is not the address it serves on, which blocks DNS rebinding attacks, and rejects cross-site Origins on its reload WebSocket. The index.html fallback now goes through the same path scope check as other files, and the reload WebSocket no longer closes when the client sends a message.
  • dacddfe9f (#16094) The CLI no longer writes its default ignore rules to shared files in the system temporary directory (.gitignore and .tauri/.gitignore) and reads them back, which let other local users change which files the project lookup and the dev watcher skip. The rules are now applied in memory. TAURI_CLI_WATCHER_IGNORE_FILENAME is now consistently treated as an ignore file name looked up in each directory, as documented.
  • fdd56da19 (#16099) Secure the local server that tauri android|ios dev|build uses to pass options to the Android Studio and Xcode build scripts: requests now need a random per-session token, WebSocket connections from web pages (with an Origin header) are rejected, and variables whose name contains TOKEN, PASSWORD, SECRET or CREDENTIAL are no longer sent. The connection details are now written with owner-only permissions to gen/<android|apple>/.tauri/cli-options-server.json (instead of the shared temp directory) and removed when the command exits. The IDE build scripts now report a clear error when the Tauri CLI command is not running.
  • ff7cd8d86 (#16118) tauri signer generate --write-keys now creates the private key with owner-only permissions (0600) on Unix and refuses to overwrite either the private or the public key file without --force. Updater signing now rejects file names containing tabs or newlines (which would corrupt the signature's trusted comment) and assumes an empty password instead of prompting when no password is given and stdin is not a terminal. tauri signer reports errors instead of panicking.
  • 51aa20388 (#16119) On Windows, package manager commands (npm, pnpm, yarn, bun, deno, node) are now executed directly instead of through cmd /c, so arguments such as @tauri-apps/plugin-fs@>=2 are escaped properly and can no longer be interpreted as shell redirections or command separators.
Dependencies
  • Upgraded to tauri-utils@2.10.0

  • Upgraded to tauri-bundler@2.10.0

  • Upgraded to tauri-macos-sign@2.4.0

  • e2e585ad1 (#15828) On Android, fix missing consumer-rules.pro file in the template.

    IMPORTANT: For plugin authors, update your build.gradle.kts file to remove the

    buildTypes {
    release {
    isMinifyEnabled = false
    proguardFiles(
    getDefaultProguardFile(&quot;proguard-android-optimize.txt&quot;),
    &quot;proguard-rules.pro&quot;
    )
    }
    }

    section and rename your proguard-rules.pro to consumer-rules.pro to match the consumerProguardFiles("consumer-rules.pro") in the template.

  • e2e585ad1 (#15828) On Android, updated the template to use Gradle v9.6.1 (com.android.tools.build:gradle v9.3.1) and Kotlin v2.2. Use tauri android init to apply the change.

  • 9e9a54dea (#15890) Update the generated iOS Xcode project to build with Xcode 27. The scenes lifecycle is not enabled by default: to opt in, add the UIApplicationSceneManifest key to your src-tauri/Info.ios.plist.

  • b6660a041 (#15954) Update typescript to v7 in tauri plugin init template. Also fixes the default rootDir in the template tsconfig.json

  • 9e9a54dea (#15890) Update cargo-mobile2 and change the default minimum iOS version to 15.0 to support Xcode 27.

2.11.x

2.11.5

Jul 1, 2026

tauri 2.11.5

Dependencies

2.11.4

Jun 28, 2026

tauri 2.11.4

Dependencies

cli 2.11.4

Bug Fixes
  • 67ffa192a (#15596 by @FabianLars) Fixed an issue in the AppImage bundler that caused the /.desktop and .DirIcon files to be absolute symlinks instead of relative symlinks which caused problems with AppImage installers like AppManager.
Dependencies
  • Upgraded to tauri-bundler@2.9.4

2.11.3

Jun 17, 2026

tauri 2.11.3

Bug Fixes
Performance Improvements
Dependencies
  • Upgraded to tauri-utils@2.9.3
  • Upgraded to tauri-runtime-wry@2.11.3
  • Upgraded to tauri-runtime@2.11.3
  • Upgraded to tauri-macros@2.6.3
  • Upgraded to tauri-build@2.6.3
  • 504ff3f44 (#15364 by @renovate) Updated dependency tray-icon to 0.24

cli 2.11.3

Bug Fixes
  • 50b0237ed (#15549 by @Legend-Master) Escape special characters in productName when generating Android strings.xml

  • 728c8d4a5 (#15473 by @Legend-Master) Skip building bundles when using tauri android run

  • 828f710a5 (#15427 by @puneetdixit200) Prevent binaries gated by disabled Cargo features from being re-added by the src/bin scan.

  • be0cb0d43 (#15344 by @raglady) Fix NDK_HOME environment variable not honored when set

  • ed8fd411f (#15552 by @Legend-Master) Make ureq_proto show trace level logs only on -vvv instead of -vv

  • fca4a31f9 (#15454 by @fallintoplace) Fix tauri migrate generating invalid namespace imports for aliased pluginified imports from @tauri-apps/api.

    Inputs like import { cli as superCli } from "@tauri-apps/api" now migrate to import * as superCli from "@tauri-apps/plugin-cli" instead of producing invalid ESM syntax. The migration tests also reparse migrated JS, Svelte, and Vue output so syntax regressions are caught directly.

Dependencies
  • Upgraded to tauri-utils@2.9.3
  • Upgraded to tauri-bundler@2.9.3

2.11.2

May 16, 2026

tauri 2.11.2

Bug Fixes
Dependencies
  • Upgraded to tauri-utils@2.9.2
  • Upgraded to tauri-runtime@2.11.2
  • Upgraded to tauri-runtime-wry@2.11.2
  • Upgraded to tauri-macros@2.6.2
  • Upgraded to tauri-build@2.6.2

cli 2.11.2

Dependencies
  • Upgraded to tauri-utils@2.9.2
  • Upgraded to tauri-bundler@2.9.2

2.11.1

May 6, 2026

tauri 2.11.1

Enhancements
Bug Fixes
  • 5f479c0c3 (#15336) Fix crash when using the requestPermission API on Android.
Security fixes
  • 1b26769f9 (#15266) Enforce ACL checks for IPC requests from remote origins even when no AppManifest is configured. Previously, custom (non-plugin) commands bypassed ACL entirely without an AppManifest, allowing any origin to invoke them. Now, remote origins are always subject to ACL resolution, and can only reach custom commands if an explicit remote capability has been granted.
  • ba025588f Correctly handle .localhost suffix in local origins on Windows and Android to fix a security issue that made tauri think remote websites that started with a registered scheme were local websites. For example, when registering an app custom protocol, Tauri would think http://app.evil.com/ would be a local URL on Windows/Android.
Dependencies
  • Upgraded to tauri-utils@2.9.1
  • Upgraded to tauri-runtime@2.11.1
  • Upgraded to tauri-runtime-wry@2.11.1
  • Upgraded to tauri-macros@2.6.1
  • Upgraded to tauri-build@2.6.1

@tauri-apps/api 2.11.1

Enhancements
  • 916782601 (#15520 by @polw1) Document that Monitor.size, Monitor.position and Monitor.workArea are in physical pixels, with examples showing how to convert them to the logical pixels expected by window creation options via toLogical(monitor.scaleFactor).

cli 2.11.1

Dependencies
  • Upgraded to tauri-utils@2.9.1
  • Upgraded to tauri-bundler@2.9.1

2.11.0

Apr 30, 2026

tauri 2.11.0

New Features
  • 074299c08 (#14307) Add Bring All to Front predefined menu item type
  • c00a3dbff (#14473) Add support for the rename attribute in the tauri::command macro to allow renaming the command to something other than the function name.
  • a12142a48 (#14357) Add macos support for setting the icon and icon template state in the same step of the main thread, to prevent flickering.
  • 2dd9b15a2 (#15062) Add data-tauri-drag-region="deep" so clicks on non-clickable children will drag as well. Can still opt out of drag on some regions using data-tauri-drag-region="false"
  • 001c8fe3d (#14722) Add a WebView option to control browser-level general autofill behavior. This option does not disable password or credit card autofill. On Windows (WebView2), setting it to true disables the general autofill "Suggestions" UI, which may appear even when autocomplete="off" is specified on input elements. On Linux, macOS, iOS, and Android, this option is currently unsupported and performs no operation.
  • b27be063f (#14925) Add eval_with_callback to the Tauri webview APIs and runtime dispatch layers.
  • d83d2d92b (#14905) Enable track_caller attribute for async_runtime to provide better location information in logs and panics.
  • cc5c97602 (#14486) Implement file association for Android and iOS.
  • cc5c97602 (#14486) Trigger RunEvent::Opened on Android.
  • eb0312ea9 (#15199) Propagates the Event::Suspended and Event::Resumed events from tao when they are emitted on mobile targets.
  • 093e2b47c (#14484) Support creating multiple windows on Android (activity embedding) and iOS (scenes).
  • 093e2b47c (#14484) Added dbus feature flag (enabled by default) which is required for theme detection on Linux.
  • 1063c48c5 (#14523) Add handler for web content process termination on macOS and iOS.
Enhancements
  • d730770bb (#15117) Simplify async-sync code boundaries, no externally visible changes
  • c69d5ca4b (#15262) Remove a clone, no user-facing changes.
  • 4017a7ed7 (#14908) Implement retrieving inner PathBuf from SafePathBuf to ease using APIs that require an owned PathBuf
Bug Fixes
  • 110336c88 (#15250) Fix initial window position when positioning it to another monitor.
  • 9808236eb (#14655) Fix monitor work area Y position on macOS.
What's Changed
  • d34497ef1 (#14862) The new window handler passed to on_new_window no longer requires Sync, and runs on main thread on Windows, aligning with other platforms
Dependencies
  • Upgraded to tauri-macros@2.6.0
  • Upgraded to tauri-build@2.6.0
  • Upgraded to tauri-runtime@2.11.0
  • Upgraded to tauri-runtime-wry@2.11.0
  • Upgraded to tauri-utils@2.9.0
  • 373b7e677 (#15177) Update Specta in lockfile and upgrade dependencies using the removed doc_auto_cfg attribute to fix errors building documentation
  • a219ede00 (#15203) Updated tray-icon to v0.22

@tauri-apps/api 2.11.0

New Features
  • 074299c08 (#14307) Add Bring All to Front predefined menu item type
  • a12142a48 (#14357) Add macos support for setting the icon and icon template state in the same step of the main thread, to prevent flickering.
  • 001c8fe3d (#14722) Add a WebView option to control browser-level general autofill behavior. This option does not disable password or credit card autofill. On Windows (WebView2), setting it to true disables the general autofill "Suggestions" UI, which may appear even when autocomplete="off" is specified on input elements. On Linux, macOS, iOS, and Android, this option is currently unsupported and performs no operation.
  • eb0312ea9 (#15199) Propagates the Event::Suspended and Event::Resumed events from tao when they are emitted on mobile targets.

cli 2.11.0

New Features
  • 926a57bb0 (#15201) Added uninstaller icon and uninstaller header image support for NSIS installer.

    Notes:

    • For tauri-bundler lib users, the NsisSettings now has 2 new fields uninstaller_icon and uninstaller_header_image which can be a breaking change
    • When bundling with NSIS, users can add uninstallerIcon and uninstallerHeaderImage under bundle > windows > nsis to configure them.
  • cc5c97602 (#14486) Implement file association for Android and iOS.

  • 4ef5797f0 (#15061) Add --no-sign and --archive-only flags to tauri ios build.

  • 764b9139a (#14313) Prompt to restart the Android emulator if it is not connected to adb.

  • 5dc2cee60 (#14793) Added support for minimumWebview2Version option support for the MSI (Wix) installer, the old bundle > windows > nsis > minimumWebview2Version is now deprecated in favor of bundle > windows > minimumWebview2Version

    Notes:

    • For anyone relying on the WVRTINSTALLED Property tag in main.wxs, it is now renamed to INSTALLED_WEBVIEW2_VERSION
    • For tauri-bundler lib users, the WindowsSettings now has a new field minimum_webview2_version which can be a breaking change
Enhancements
  • be0e4bd2d (#15218) Added Vietnamese translations for the NSIS installer
  • 8718d0816 (#15033) Show the context before prompting for updater signing key password
Bug Fixes
  • fcb702ec4 (#14954) Fix build --bundles to allow nsis arg in linux+macOS
  • 80c1425af (#14921) Fix iOS build failure when Metal Toolchain is installed by using explicit $(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain path instead of $(TOOLCHAIN_DIR) for Swift library search paths.
What's Changed
Dependencies
  • Upgraded to tauri-macos-sign@2.3.4
  • Upgraded to tauri-bundler@2.9.0
  • Upgraded to tauri-utils@2.9.0

2.10.x

2.10.3

Mar 4, 2026

tauri 2.10.3

Dependencies
  • Upgraded to tauri-utils@2.8.3
  • Upgraded to tauri-runtime@2.10.1
  • Upgraded to tauri-runtime-wry@2.10.1
  • Upgraded to tauri-macros@2.5.5
  • Upgraded to tauri-build@2.5.6

2.10.2

Feb 4, 2026

tauri 2.10.2

Dependencies
  • Upgraded to tauri-macros@2.5.4
  • Upgraded to tauri-build@2.5.5

2.10.1

Feb 2, 2026

tauri 2.10.1

Dependencies

@tauri-apps/api 2.10.1

Bug Fixes
  • Re-release of 2.10.0 with working assets.

cli 2.10.1

Bug Fixes
  • 35c35f27a (#14931 by @lucasfernog) Support comma-separated list of Cargo features on all commands.
  • 0d1cb83ba (#14932 by @lucasfernog) Fix missing Cargo args when running mobile dev and build commands.
  • 33754ae5e (#15022 by @Legend-Master) Fix updater signing private keys generated using tauri signer generate with empty password can't be used (The keys generated during tauri were broken between v2.9.3 and v2.10.0, you'll need to regenerate them)
What's Changed
Dependencies
  • Upgraded to tauri-utils@2.8.3
  • Upgraded to tauri-bundler@2.8.1

2.10.0

Feb 2, 2026

tauri 2.10.0

New Features
  • e919a760e (#14619 by @NaamuKim) Add set_simple_fullscreen method to WebviewWindow.

    This method was already available on the Window type and is now also available on WebviewWindow for consistency. On macOS, it toggles fullscreen mode without creating a new macOS Space. On other platforms, it falls back to regular fullscreen.

Bug Fixes
  • 853ed4642 (#14442 by @ish1416) Fixed 500 error when accessing local video files in Android external storage directory via convertFileSrc. Added better error handling and logging for Android external storage access to help diagnose permission and accessibility issues.
  • 4d5d78daf (#14812 by @oscartbeaumont) fix(specta): don't use #[specta(rename = ...)] with tauri::ipc::Channel
  • ff5d76ca2 (#14653 by @Legend-Master) WindowConfig::focus is set to false in WindowConfig::default()
What's Changed
  • 0575dd287 (#14521 by @kandrelczyk) Change the way bundle type information is added to binary files. Instead of looking up the value of a variable we simply look for the default value.
Dependencies
  • Upgraded to tauri-utils@2.8.2
  • Upgraded to tauri-build@2.5.4
  • Upgraded to tauri-runtime-wry@2.10.0
  • Upgraded to tauri-runtime@2.10.0
  • Upgraded to tauri-macros@2.5.3
  • 75057c7c0 (#14778 by @FabianLars) Breaking Change for with_webview users: Updated webkit2gtk-rs crates to v2.0.2.
  • 75057c7c0 (#14778 by @FabianLars) Update wry to v0.54.

@tauri-apps/api 2.10.0

Dependencies

cli 2.10.0

Enhancements
  • f82594410 (#13253 by @Armaldio) Allow electron to run the CLI directly

  • 2d28e3143 (#14632 by @sftse) Small code refactors for improved code readability. No user facing changes.

  • a2abe2e6b (#14607 by @sftse) Simplified internal representation of features: Option<Vec<String>> with Vec<String>, no user facing changes

  • 84b04c4a8 (#14759 by @amrbashir) Added new environment variables for tauri signer sign command, to align with existing environment variables used in tauri build, tauri bundle and tauri signer generate

    • TAURI_SIGNING_PRIVATE_KEY
    • TAURI_SIGNING_PRIVATE_KEY_PATH
    • TAURI_SIGNING_PRIVATE_KEY_PASSWORD

    The old environment variables are deprecated and will be removed in a future release.

    • TAURI_PRIVATE_KEY
    • TAURI_PRIVATE_KEY_PATH
    • TAURI_PRIVATE_KEY_PASSWORD
Bug Fixes
What's Changed
  • e3fdcb500 (#14836 by @sftse) Continued refactors of tauri-cli, fix too weak atomics.
  • 0575dd287 (#14521 by @kandrelczyk) Change the way bundle type information is added to binary files. Instead of looking up the value of a variable we simply look for the default value.
  • 7f7d9aac2 (#14668 by @sftse) Refactored internal use of static on config and directory resolvings, no user facing changes, please report any regressions if you encounter any
Dependencies
  • Upgraded to tauri-utils@2.8.2
  • Upgraded to tauri-macos-sign@2.3.3
  • Upgraded to tauri-bundler@2.8.0

2.9.x

2.9.6

Dec 9, 2025

cli 2.9.6

What's Changed
  • 7b1b3514d (#14621 by @Legend-Master) Errors like Error Failed to parse version 2 for for NPM package tauri when there was no package-lock.json file present yet or when using ones like link:./tauri are now only logged in --verbose mode.
Dependencies
  • Upgraded to tauri-macos-sign@2.3.2
  • Upgraded to tauri-bundler@2.7.5

2.9.5

Nov 30, 2025

tauri 2.9.5

Bug Fixes
Dependencies
  • Upgraded to tauri-runtime-wry@2.9.3

cli 2.9.5

Bug Fixes
  • f022b2d1a (#14582 by @hrzlgnm) Fixed an issue that caused the cli to error out with missing private key, in case the option --no-sign was requested and the tauri.config has signing key set and the plugin tauri-plugin-updater is used.
  • f855caf8a (#14481 by @Legend-Master) Fixed the mismatched tauri package versions check didn't work for pnpm
  • 79a7d9ec0 (#14468 by @FabianLars) Fixed an issue that caused the cli to print errors like Error Failed to parse version 2 for crate tauri when there was no Cargo.lock file present yet. This will still be logged in --verbose mode.
Performance Improvements
Dependencies
  • Upgraded to tauri-bundler@2.7.4
  • Upgraded to tauri-macos-sign@2.3.1
  • Upgraded to tauri-utils@2.8.1

2.9.4

Nov 9, 2025

tauri 2.9.4

Performance Improvements
Dependencies
  • Upgraded to tauri-utils@2.8.1
  • Upgraded to tauri-runtime@2.9.2
  • Upgraded to tauri-runtime-wry@2.9.2
  • Upgraded to tauri-macros@2.5.2
  • Upgraded to tauri-build@2.5.3

cli 2.9.4

Bug Fixes

2.9.3

Nov 4, 2025

tauri 2.9.3

Bug Fixes
  • 4b00130b8 (#14385 by @lucasfernog) Fix iOS deadlock when running on the simulator from Xcode by properly piping stdout/stderr messages through the Xcode console and OSLog.
Dependencies
  • Upgraded to tauri-macros@2.5.1
  • Upgraded to tauri-build@2.5.2

cli 2.9.3

Enhancements
  • 22edc65aa (#14408 by @FabianLars) Set user-agent in bundler and cli http requests when fetching build tools.
  • 779612ac8 (#14379 by @moubctez) Properly read the required-features field of binaries in Cargo.toml to prevent bundling issues when the features weren't enabled.
Bug Fixes
Dependencies
  • Upgraded to tauri-bundler@2.7.3

2.9.2

Oct 29, 2025

tauri 2.9.2

Bug Fixes

cli 2.9.2

Dependencies
  • Upgraded to tauri-bundler@2.7.2

2.9.1

Oct 22, 2025

tauri 2.9.1

Bug Fixes
Dependencies
  • Upgraded to tauri-build@2.5.1
  • Upgraded to tauri-runtime@2.9.1
  • Upgraded to tauri-runtime-wry@2.9.1

@tauri-apps/api 2.9.1

Bug Fixes

cli 2.9.1

Dependencies
  • Upgraded to tauri-macos-sign@2.3.0
  • Upgraded to tauri-bundler@2.7.1

2.9.0

Oct 20, 2025

tauri 2.9.0

New Features
  • f5851ee00 (#14089) Adds the scroll_bar_style option to the Webview and WebviewWindow builders. The possible values for this option are gated behind conditional compilation flags, and will need to be applied using conditional compilation if customised.
  • 3397fd9bf (#14133) Added mobile app plugin to support exit and back button press event.
  • 68cb31897 (#14328) Added onStop, onDestroy, onRestart, onConfigurationChanged Android plugin hooks.
  • 2e089f6ac (#14148) Support async Swift plugin methods (completionHandler:) in PluginManager
Bug Fixes
  • 006d59283 (#14260) Properly deserialize Android plugin args with key starting with is (previously treated as a getter instead of a field name).
  • 69476d8e2 (#14170) Fix the stack overflow when having too many commands in a single invoke handler in release build
Dependencies
  • Upgraded to tauri-utils@2.8.0
  • Upgraded to tauri-runtime-wry@2.9.0
  • Upgraded to tauri-runtime@2.9.0
  • Upgraded to tauri-build@2.5.0
  • Upgraded to tauri-macros@2.5.0

@tauri-apps/api 2.9.0

New Features
  • f5851ee00 (#14089) Adds the scrollBarStyle option to the Webview and WebviewBuilder constructors.
  • 3397fd9bf (#14133) Added app > onBackButtonPress for Android back button handling.
Enhancements
  • 59089723f (#14091) Added a config to set a data_directory relative to the app-specific data dir in JavaScript and tauri.conf.json.
Bug Fixes
  • 08bda64c2 (#14132) Fix core > addPluginListener failing on command permission check.

cli 2.9.0

New Features
  • f5851ee00 (#14089) Adds the scrollBarStyle option to the window configuration.
  • 2a06d1006 (#14052) Add a --no-sign flag to the tauri build and tauri bundle commands to skip the code signing step, improving the developer experience for local testing and development without requiring code signing keys.
  • 3b4fac201 (#14194) Add tauri.conf.json > bundle > android > autoIncrementVersionCode config option to automatically increment the Android version code.
  • 673867aa0 (#14094) Try to detect ANDROID_HOME and NDK_HOME environment variables from default system locations and install them if needed using the Android Studio command line tools.
  • 3d6868d09 (#14128) Added support to defining the content type of the declared file association on macOS (maps to LSItemContentTypes property).
  • 3d6868d09 (#14128) Added support to defining the metadata for custom types declared in tauri.conf.json > bundle > fileAssociations > exportedType via the UTExportedTypeDeclarations Info.plist property.
  • ed7c9a410 (#14108) Added bundle > macOS > infoPlist and bundle > iOS > infoPlist configurations to allow defining custom Info.plist extensions.
  • 75082cc5b (#14120) Added ios run and android run commands to run the app in production mode.
  • cc8c0b531 (#14031) Added support to universal app links on macOS with the plugins > deep-link > desktop > domains configuration.
Enhancements
  • 94cbd40fc (#14223) Add support for Android's adaptive and themed icons.
  • b5aa01870 (#14268) Update cargo-mobile2 to 0.21, enhancing error messages and opening Xcode when multiple apps are installed.
  • 55453e845 (#14262) Check mismatched versions in tauri info
  • 1a6627ee7 (#14122) Set a default log level filter when running tauri add log.
  • b06b3bd09 (#14126) Improve error messages with more context.
  • f6622a3e3 (#14129) Prompt to install the iOS platform if it isn't installed yet.
  • 6bbb530fd (#14105) Warn if productName is empty when initializing mobile project.
Bug Fixes
  • 19fb6f7cb (#14146) Strip Windows-only extensions from the binary path so an Android project initialized on Windows can be used on UNIX systems.
  • 19fb6f7cb (#14146) Enhance Android build script usage on Windows by attempting to run cmd, bat and exe formats.
  • 28a2f9bc5 (#14101) Fix iOS CLI usage after modifying the package name.
  • d2938486e (#14261) Replaced the non-standard nerd font character with ⱼₛ in tarui info
  • 25e920e16 (#14298) Wait for dev server to exit before exiting the CLI when the app is closed on tauri dev --no-watch.
  • b0012424c (#14115) Resolve local IP address when tauri.conf.json > build > devUrl host is 0.0.0.0.
  • abf7e8850 (#14118) Fixes mobile project initialization when using pnpx or pnpm dlx.
Dependencies
  • Upgraded to tauri-utils@2.8.0
  • Upgraded to tauri-bundler@2.7.0

2.8.x

2.8.5

Sep 1, 2025

tauri 2.8.5

Enhancements
  • 07e134f70 (#14107 by @lucasfernog) Improve error message for request errors on iOS when local network permission has been denied and the app tries to reach the development server.
Dependencies
  • Upgraded to tauri-build@2.4.1

2.8.4

Aug 25, 2025

tauri 2.8.4

Bug Fixes
  • 03e7c1193 (#14080 by @lucasfernog) Ignore initial navigation to about:blank so on_new_window does not give a warning on first navigation on macOS.
Dependencies
  • Upgraded to tauri-runtime-wry@2.8.1

cli 2.8.4

Enhancements
  • f70b28529 (#14093 by @lucasfernog) Ensure Rust targets for mobile are installed when running the dev and build commands (previously only checked on init).
  • a9b342125 (#14114 by @lucasfernog) Fix iOS dev and build targeting the simulator on Intel machines.
  • 61b9b681e (#14111 by @lucasfernog) Retain RUST_* environment variables when running the mobile commands.
  • c23bec62d (#14083 by @FabianLars) Tauri now ignores macOS.minimumSystemVersion in tauri dev to prevent forced rebuilds of macOS specific dependencies when using something like rust-analyzer at the same time as tauri dev.
Bug Fixes

2.8.3

Aug 24, 2025

tauri 2.8.3

Bug Fixes
  • 534998406 (#14054 by @FabianLars) Fixed an issue that caused the runtime WebView2 detection to fail for FixedRuntime installations.

cli 2.8.3

Bug Fixes
  • 0ac89d3b6 (#14078 by @FabianLars) Updated cargo-mobile2 to allow running on iOS simulators that have a higher version than the XCode SDK. This fixes compatiblity issues with Apple's recent "iOS 18.5 + iOS 18.6 Simulator" platform support component.

2.8.2

Aug 19, 2025

tauri 2.8.2

Bug Fixes

@tauri-apps/cli 2.8.2

Dependencies
  • Upgraded to tauri-cli@2.8.1

2.8.1

Aug 18, 2025

tauri 2.8.1

Bug Fixes
  • 902727 Move WebviewWindowBuilder::with_related_view behind the wry feature flag.

cli 2.8.1

Dependencies
  • Upgraded to tauri-bundler@2.6.1
Bug Fixes

2.8.0

Aug 18, 2025

tauri 2.8.0

New Features
Enhancements
  • 7261a1436 (#14012 by @WSH032) Implemented Webview::on_webview_event for WebviewWindow as well

  • 0e6b5cbe5 (#14009 by @WSH032) re-export PixelUnit, PhysicalUnit, LogicalUnit

  • a3dc42477 (#14013 by @WSH032) export TitleBarStyle for all platforms.

  • f1232671a (#13959 by @petersamokhin) Introduce with_inner_tray_icon for Tauri TrayIcon to access the inner platform-specific tray icon.

    Note that tray-icon crate may be updated in minor releases of Tauri. Therefore, it's recommended to pin Tauri to at least a minor version when you're using with_inner_tray_icon.

  • 72b4226ee (#13809 by @Beanow) Reduced Debug format size for binary buffers.

  • 21ebc6e82 (#14007 by @WSH032) Changed the parameter type of AppHandle::remove_plugin from &'static str to &str.

  • 5ba1c3faa (#13722 by @s00d) Added icon (icon and nativeIcon) support for Submenu:

    • In the Rust API (tauri), you can now set an icon for submenus via the builder and dedicated methods.
    • In the JS/TS API (@tauri-apps/api), SubmenuOptions now has an icon field, and the Submenu class provides setIcon and setNativeIcon methods.
    • Usage examples are added to the documentation and demo app.

    This is a backwards-compatible feature. Submenus can now display icons just like regular menu items.

Dependencies
  • Upgraded to tauri-utils@2.7.0
  • Upgraded to tauri-runtime-wry@2.8.0
  • Upgraded to tauri-runtime@2.8.0
  • Upgraded to tauri-macros@2.3.3
  • Upgraded to tauri-build@2.3.2

@tauri-apps/api 2.8.0

New Features
Enhancements
  • 5ba1c3faa (#13722 by @s00d) Added icon (icon and nativeIcon) support for Submenu:

    • In the Rust API (tauri), you can now set an icon for submenus via the builder and dedicated methods.
    • In the JS/TS API (@tauri-apps/api), SubmenuOptions now has an icon field, and the Submenu class provides setIcon and setNativeIcon methods.
    • Usage examples are added to the documentation and demo app.

    This is a backwards-compatible feature. Submenus can now display icons just like regular menu items.

cli 2.8.0

New Features
Enhancements
  • 8b465a12b (#13913 by @FabianLars) The bundler now pulls the latest AppImage linuxdeploy plugin instead of using the built-in one. This should remove the libfuse requirement.
  • 390cb9c36 (#13953 by @FabianLars) Reduced the log level of the binary patcher crate goblin to only show its debug logs in -vv and above.
  • 4475e93e1 (#13824 by @FabianLars) The bundler and cli will now read TLS Certificates installed on the system when downloading tools and checking versions.
Bug Fixes
Dependencies
  • Upgraded to tauri-utils@2.7.0
  • Upgraded to tauri-bundler@2.6.0
  • Upgraded to tauri-macos-sign@2.2.0

2.7.x

2.7.1

Jul 22, 2025

cli 2.7.1

Dependencies
  • Upgraded to tauri-bundler@2.5.2

2.7.0

Jul 20, 2025

tauri 2.7.0

New Features
  • 7bc77a038 (#13609 by @Legend-Master) Added tauri::plugin::Builder::js_init_script_on_all_frames that allows plugins to add initialization scripts that runs on all frames
Enhancements
  • 7f3c98911 (#13837 by @WSH032) Add AppHandle::plugin_boxed and Builder::plugin_boxed methods to allow adding plugins in the form of boxed trait objects.
  • 7bc77a038 (#13609 by @Legend-Master) tauri::plugin::Builder::js_init_script now takes impl Into<String> instead of String
Bug Fixes
Dependencies
  • Upgraded to tauri-runtime-wry@2.7.2
  • Upgraded to tauri-utils@2.6.0
  • Upgraded to tauri-runtime@2.7.1
  • Upgraded to tauri-macros@2.3.2
  • Upgraded to tauri-build@2.3.1

@tauri-apps/api 2.7.0

New Features
Enhancements
Bug Fixes

cli 2.7.0

New Features
  • 33d079392 (#13811 by @mhbagheri-99) Allow runner configuration to be an object with cmd, cwd, and args properties. The runner can now be configured as { "cmd": "my_runner", "cwd": "/path", "args": ["--quiet"] } while maintaining backwards compatibility with the existing string format.
Enhancements
  • 232265c70 (#13209 by @kandrelczyk) Binaries are patched before bundling to add the type of a bundle they will placed in. This information will be used during update process to select the correct target.
Bug Fixes
What's Changed
Dependencies
  • Upgraded to tauri-bundler@2.5.1
  • Upgraded to tauri-utils@2.6.0

2.6.x

2.6.2

Jun 27, 2025

tauri 2.6.2

Dependencies
  • Upgraded to tauri-runtime-wry@2.7.1

cli 2.6.2

Bug Fixes

2.6.1

Jun 26, 2025

tauri 2.6.1

Bug Fixes
Dependencies
  • Upgraded to tauri-macros@2.3.1

cli 2.6.1

Bug Fixes
  • 4b7370e9e (#13710 by @FabianLars) Fixed an issue in the plugin template (tauri plugin init) that prevented the js build command to fail.

2.6.0

Jun 24, 2025

tauri 2.6.0

New Features
  • 50ebddaa2 (#13319 by @kingsword09) Expose the setAutoResize API for webviews in @tauri-apps/api.
  • 267368fd4 (#13276 by @amrbashir) Add Monitor::work_area getter
  • 267368fd4 (#13276 by @amrbashir) Added tauri::PhysicalRect and tauri::LogicalRect types.
  • 09c19932d (#13304 by @39zde) Adds the option to configure the HTTP Service-Worker-Allowed response header in app > security > headers
  • 9c16eefa3 (#13629 by @sftse) Added x11 Cargo feature (enabled by default). Disabling it is useful for apps that only support Wayland, reducing its size. NOTE: When manually disabling tauri default features, you must enable the x11 feature to support it.
Enhancements
  • 96ecfca42 (#13406 by @amrbashir) Check if the webview runtime is accessible when creating a webview, returning an error if it doesn't.
Bug Fixes
Performance Improvements
  • 6a39f4999 (#13464 by @Legend-Master) Use dynamic dispatch for async commands in dev, this should speed up the compilation time by quite a bit, and significantly reduces the incremental compilation time
What's Changed
  • 168629646 (#13418 by @Legend-Master) Put dynamic ACL into a feature dynamic-acl, this is currently enabled by default to align with the previous behaviors, you can disable it through default-features = false to reduce the final binary size by not including the ACL references
  • b5c549d18 (#13325 by @Legend-Master) transformCallback now registers the callbacks inside window.__TAURI_INTERNALS__.callbacks instead of directly on window['_{id}']
Dependencies
  • Upgraded to tauri-utils@2.5.0
  • Upgraded to tauri-runtime-wry@2.7.0
  • Upgraded to tauri-macros@2.3.0
  • Upgraded to tauri-build@2.3.0
  • Upgraded to tauri-runtime@2.7.0
  • 9c16eefa3 (#13629 by @sftse) Updated tao to 0.34, wry to 0.52 and webview2-com to 0.38.
Breaking Changes

@tauri-apps/api 2.6.0

New Features
Bug Fixes
What's Changed
  • b5c549d18 (#13325 by @Legend-Master) transformCallback now registers the callbacks inside window.__TAURI_INTERNALS__.callbacks instead of directly on window['_{id}']

cli 2.6.0

New Features
  • 414619c36 (#13536 by @Tunglies) Added support for the bundleName property in the macOS bundler configuration. This allows specifying the CFBundleName value for generated macOS bundles.
  • 3242e1c94 (#13659 by @lucasfernog) Allow passing Cargo arguments to mobile dev and build commands.
  • d1ce9af62 (#13660 by @lucasfernog) Allow passing --config arguments to the ios init and android init commands to tweak the configuration used to initialize the mobile projects.
  • 7322f0579 (#13502 by @amrbashir) Allow using CheckIfAppIsRunning macro inside NSIS hooks, for example !insertmacro CheckIfAppIsRunning "another-executable.exe" "Another Executable".
  • 4a880ca69 (#13658 by @lucasfernog) Synchronize Tauri config productName changes with the iOS Xcode project.
  • 8ee14a864 (#13618 by @Sky-walkerX) Warn the user that the app id shouldn't end in .app because it conflicts with the application bundle extension on macOS
Bug Fixes
Dependencies
  • Upgraded to tauri-bundler@2.5.0
  • Upgraded to tauri-utils@2.5.0
  • 9c16eefa3 (#13629 by @sftse) Update html5ever to 0.29 and kuchikiki to version 0.8.8-speedreader.

2.5.x

2.5.1

Apr 21, 2025

tauri 2.5.1

Enhancements
  • 31becbd1d (#13269 by @amrbashir) Respect data-tauri-drag-region="false", it will no longer start dragging. This is useful when binding the attribute to a state using React, or another framework.
Bug Fixes
  • da2a6ae5e (#13268 by @Legend-Master) Fix a regression that made the raw type messages received from Channel.onmessage became number[] instead of ArrayBuffer when that message is small
  • 85b191252 (#13241 by @Legend-Master) Make tauri-runtime-wry optional even with features like macos-private-api

2.5.0

Apr 15, 2025

tauri 2.5.0

New Features
  • dd4f13ce4 (#13185) MacOS: Add set_dock_visibility method to support setting the visibility of the application in the dock.

  • 8cf662e34 (#13076) - add API to run initialization scripts on all frames - WebviewBuilder::initialization_script_on_all_frames - WebviewWindowBuilder::initialization_script_on_all_frames - WebviewAttributes::initialization_script_on_all_frames

  • ea36294cb (#13208) Added WebviewWindowBuilder::with_input_accessory_view_builder and WebviewBuilder::with_input_accessory_view_builder on iOS.

  • c1cd0a2dd (#13090) macOS/iOS: add option to disable or enable link previews when building a webview (the webkit api has it enabled by default)

    • WebViewBuilder.allow_link_preview(allow_link_preview: bool)
    • WebviewWindowBuilder.allow_link_preview(allow_link_preview: bool)
  • b072e2b29 (#9687) Add preventOverflow config option to prevent the window from overflowing the monitor size on creation

  • b072e2b29 (#9687) Add WindowBuilder::prevent_overflow, WebviewWindowBuilder::prevent_overflow, WindowBuilder::prevent_overflow_with_margin and WebviewWindowBuilder::prevent_overflow_with_margin APIs to prevent the window from overflowing the monitor size on creation.

Enhancements
  • 9356fa15d (#13239) Enhance panic message when fetching unmanaged state.
  • ebd3dcb92 (#13135) Webview::eval and WebviewWindow::eval now takes impl Into<String> instead of &str to allow passing the scripts more flexible and efficiently
  • fbd57a1af (#13175) Builder::invoke_system takes AsRef<str> now
Bug Fixes
  • 66e6325f4 (#13136) Fix Channel's callback attached to window never cleaned up
  • 0d39ff6b0 (#13150) Fix missing core: in referenced commands in ACL error message
  • 690146e31 (#13217) Fix large number of commands with large structs as parameters causing stack overflow on debug build on Windows
  • f888502fd (#13227) invoke will now properly throw when options.headers contains non-ascii characters instead of silently replacing them
  • f888502fd (#13227) Fix invoke ignores the headers option if it's an Headers
  • b8c0d7e40 (#13040) Fix run_return not responding to restart and request_restart
Performance Improvements
  • 66e6325f4 (#13136) Improve Channel's performance when sending small amount of data (e.g. sending a number)
Dependencies
  • Upgraded to tauri-utils@2.4.0
  • Upgraded to tauri-runtime@2.6.0
  • Upgraded to tauri-runtime-wry@2.6.0
  • Upgraded to tauri-macros@2.2.0
  • Upgraded to tauri-build@2.2.0
  • bb5faa21f (#13163) Update webview2-com to 0.37.
  • bb5faa21f (#13163) Update windows to 0.61.
Breaking Changes
  • fca5154e7 (#13130) Removed re-exported WebviewAttributes from tauri-runtime which is exposed by accident in tauri and not used by any public facing APIs

@tauri-apps/api 2.5.0

New Features
  • 66e6325f4 (#13136) Allow passing the callback as the parameter of constructor of Channel so you can use it like this new Channel((message) => console.log(message))

  • ea36294cb (#13208) Added disableInputAccessoryView: bool config for iOS.

  • c1cd0a2dd (#13090) macOS/iOS: add option to disable or enable link previews when building a webview (the webkit api has it enabled by default)

    • WindowOptions::allowLinkPreview
    • WebviewOptions::allowLinkPreview
  • b072e2b29 (#9687) Add preventOverflow config option to prevent the window from overflowing the monitor size on creation

  • dd4f13ce4 (#13185) Added app.setDockVisibility for macOS.

Enhancements
  • b8f86669a (#13145) core.isTauri now leverages globalThis instead of window in order to be used in unit tests.
Bug Fixes
  • 66e6325f4 (#13136) Fix Channel's callback attached to window never cleaned up

cli 2.5.0

New Features
  • 0aa48fb9e (#13030) Added bundleVersion to iOS and macOS configuration to support specifying a CFBundleVersion.
Enhancements
  • ad3fd3890 (#13152) Detect package manager from environment variable npm_config_user_agent first
  • 82406c61e (#13231) Improve iOS simulator usage, checking if Xcode iOS SDK is installed and allowing usage of Simulator for older iOS releases (previously only supported when running on Xcode via ios dev --open).
Bug Fixes
  • 2dccfab53 (#13236) Fix fileAssociations missing LSHandlerRank on macOS.
  • 080252903 (#13210) Fixes iOS dev not working on Xcode 16.3 simulators. To apply the fix, either regenerate the Xcode project with rm -r src-tauri/gen/apple && tauri ios init or remove the arm64-sim architecture from the Xcode project.
Dependencies
  • Upgraded to tauri-utils@2.4.0
  • Upgraded to tauri-bundler@2.4.0

2.4.x

2.4.1

Apr 1, 2025

tauri 2.4.1

Enhancements
  • a851b6597 (#13057 by @Legend-Master) Enhanced the description of generated docs and schema for permission sets to include list of permissions within.
Dependencies
  • Upgraded to tauri-utils@2.3.1
  • Upgraded to tauri-runtime@2.5.1
  • Upgraded to tauri-runtime-wry@2.5.1
  • Upgraded to tauri-macros@2.1.1
  • Upgraded to tauri-build@2.1.1

@tauri-apps/api 2.4.1

Enhancements
  • dd1372833 (#13066 by @ahaoboy) Add a generic to emit and emitTo functions for the payload instead of the previously used type (unknown).

cli 2.4.1

Enhancements
Bug Fixes
Dependencies
  • Upgraded to tauri-bundler@2.3.1
  • Upgraded to tauri-utils@2.3.1

2.4.0

Mar 20, 2025

tauri 2.4.0

New Features
  • be2e6b85f (#12944 by @Simon-Laux) add Window.is_always_on_top() and WebviewWindow.is_always_on_top()

  • c10802425 (#12710 by @WSH032) derive Clone for tauri::ExitRequestApi.

  • cedb24d49 (#12665 by @charrondev) Added Webview::cookies(), Webview::cookies_for_url(), WebviewWindow::cookies() and Webview::cookies_for_url().

  • 20c190691 (#12821 by @Simon-Laux) Add WebviewBuilder.disable_javascript and WebviewWindowBuilder.disable_javascript api to disable JavaScript.

  • 060de5bbd (#12837 by @niladrix719) Added getIdentifier() function to get the application identifier configured in tauri.conf.json

  • 658e5f5d1 (#12668 by @thomaseizinger) Add App::run_return function. Contrary to App::run, this will not exit the process but instead return the requested exit-code. This allows the host app to perform further cleanup after Tauri has exited. App::run_return is not available on iOS and fallbacks to the regular App::run functionality.

    The App::run_iteration function is deprecated as part of this because calling it in a loop - as suggested by the name - will cause a busy-loop.

  • 5591a4f0b (#12912 by @Daedaluz) Change webview zoom on mousewheel when the zoom_hotkeys_enabled configuration is set to true.

  • bcdd51025 (#13012 by @lucasfernog) The path basename and extname APIs now accept Android content URIs, such as the paths returned by the dialog plugin.

  • bcdd51025 (#13012 by @lucasfernog) Added PathResolver::file_name to resolve file names from content URIs on Android (leverating std::path::Path::file_name on other platforms).

  • c698a6d6f (#12818 by @Simon-Laux) feat: add Webview.reload and WebviewWindow.reload

  • 013f8f652 (#12890 by @Legend-Master) Added build > removeUnusedCommands to trigger the build scripts and macros to remove unused commands based on the capabilities you defined. Note this won't be accounting for dynamically added ACLs so make sure to check it when using this.

  • 35018eed0 (#12996 by @Legend-Master) Introduce AppHandle::request_restart() as an alternative to AppHandle::restart() to trigger exit event reliably

  • 30f5a1553 (#12366 by @FabianLars) Added WebviewWindowBuilder::traffic_light_position to set the traffic light buttons position on macOS.

  • 30f5a1553 (#12366 by @FabianLars) Added trafficLightPosition window configuration to set the traffic light buttons position on macOS.

Enhancements
Bug Fixes
  • 755533c51 (#12876 by @amrbashir) Removed TSend: Clone requirement for Channel<TSend> by implementing Clone manually instead of driving it.
  • f98598817 (#12870 by @lucasfernog) Update path plugin to use older dataDir API on SDK < 24.
  • f67a4a6bf (#12971 by @WofWca) Fix tauri::AssetResolver::get and tauri::AssetResolver::get_for_scheme skipping the first character of the path even if it's not a slash (/).
  • dc90cd391 (#12911 by @Daedaluz) Listen for Ctrl + or Cmd + to support zoom functionality in swedish keyboard layouts.
  • b05f82d35 (#12313 by @anatawa12) AppHandle::restart() now waits for RunEvent::Exit to be delivered before restarting the application.
Performance Improvements
Dependencies
  • Upgraded to tauri-runtime@2.5.0
  • Upgraded to tauri-runtime-wry@2.5.0
  • Upgraded to tauri-utils@2.3.0
  • Upgraded to tauri-build@2.1.0
  • Upgraded to tauri-macros@2.1.0

@tauri-apps/api 2.4.0

New Features
Bug Fixes

cli 2.4.0

New Features
  • d91bfa5cb (#12970 by @lucasfernog) Allow merging multiple configuration values on tauri dev, tauri build, tauri bundle, tauri android dev, tauri android build, tauri ios dev and tauri ios build.
  • 013f8f652 (#12890 by @Legend-Master) Reads build > removeUnusedCommands from the config file and pass in the environment variables on the build command to trigger the build scripts and macros to remove unused commands based on the capabilities you defined. For this to work on inlined plugins you must add a #![plugin(<insert_plugin_name>)] inside the tauri::generate_handler![] usage and the app manifest must be set.
  • 30f5a1553 (#12366 by @FabianLars) Added trafficLightPosition window configuration to set the traffic light buttons position on macOS.
Enhancements
Bug Fixes
Dependencies
  • Upgraded to tauri-utils@2.3.0
  • Upgraded to tauri-bundler@2.3.0

2.3.x

2.3.1

Feb 28, 2025

tauri 2.3.1

Bug Fixes
Dependencies
  • Upgraded to tauri-runtime-wry@2.4.1

cli 2.3.1

Bug Fixes

2.3.0

Feb 26, 2025

tauri 2.3.0

New Features
Enhancements
Bug Fixes
  • d7b998fe7 (#12723 by @WSH032) Deprecate Manager::unmanage to fix use-after-free unsoundness, see tauri-apps/tauri#12721 for details.
  • 3dbcbe768 (#12461 by @WSH032) Webview::navigate and WebviewWindow::navigate borrows &self instead of unnecessarily borrowing &mut self.
Dependencies
  • Upgraded to tauri-runtime@2.4.0
  • Upgraded to tauri-runtime-wry@2.4.0
  • Upgraded to tauri-utils@2.2.0
  • Upgraded to tauri-macros@2.0.5
  • Upgraded to tauri-build@2.0.6

@tauri-apps/api 2.3.0

Enhancements

cli 2.3.0

Enhancements
Dependencies
  • Upgraded to tauri-utils@2.2.0
  • Upgraded to tauri-bundler@2.2.4
  • Upgraded to tauri-macos-sign@2.1.0

2.2.x

2.2.7

Jan 25, 2025

cli 2.2.7

Bug Fixes

2.2.6

Jan 25, 2025

cli 2.2.6

Enhancements
  • 1a86974aa (#12406 by @bradleat) ios build --open will now let xcode start the rust build process.
  • 9a30bed98 (#12423 by @tr3ysmith) Added conditional logic to MacOS codesigning where only executables get the entitlements file when being signed. This solves an issue where the app may not launch when using 3rd party frameworks if certain entitlements are added. Ex: multicast support (must be applied for through apple developer, and the framework would not have that capability).
  • 0b79af711 (#12438 by @3lpsy) Log the command used to start the rust app in development.
Bug Fixes
  • bc43c738b (#12442 by @FabianLars) Fixed an issue that prevented tauri add to work for the clipboard-manager plugin.
  • 27096cdc0 (#12445 by @FabianLars) Fixed an issue that caused Tauri's CLI to enable tauri's native-tls feature even though it wasn't needed. Moved reqwest to a mobile-only dependency in tauri and enabled its rustls-tls feature flag.
Dependencies
  • Upgraded to tauri-bundler@2.2.3

2.2.5

Jan 18, 2025

tauri 2.2.5

Bug Fixes
  • 477e9c049 (#12514 by @FabianLars) Fixed an issue that caused iOS apps to panic when using an async function for tauri::mobile_entry_point.

cli 2.2.5

Dependencies
  • Upgraded to tauri-bundler@2.2.2

2.2.4

Jan 11, 2025

tauri 2.2.4

Bug Fixes
  • 27096cdc0 (#12445 by @FabianLars) Fixed an issue that caused Tauri's CLI to enable tauri's native-tls feature even though it wasn't needed. Moved reqwest to a mobile-only dependency in tauri and enabled its rustls-tls feature flag.

cli 2.2.4

Bug Fixes

2.2.3

Jan 10, 2025

tauri 2.2.3

Bug Fixes
  • d2c8f0eb5 (#12424 by @mattyg) Ensure that tauri's builtin initialization scripts and plugin initialization scripts are executed before any user-added initialization scripts in a webview.

cli 2.2.3

Enhancements
Bug Fixes
  • 98f62e65a (#12246 by @marcomq) Properly add NPM packages for community plugins when using the tauri add command.
  • b9a99a5c6 (#12297 by @FabianLars) Fixed an issue that caused the built-in dev server to constantly refresh on Linux. This only affected users who do not have devUrl point to a URL.
  • ef21ed9ac (#12290 by @lucasfernog) Fix iOS build failing when the development team contains spaces.
Dependencies
  • Upgraded to tauri-bundler@2.2.1

2.2.2

Jan 4, 2025

tauri 2.2.2

Bug Fixes

cli 2.2.2

Bug Fixes

2.2.1

Jan 3, 2025

tauri 2.2.1

Bug Fixes
Dependencies
  • Upgraded to tauri-build@2.0.5

cli 2.2.1

Bug Fixes

2.2.0

Jan 2, 2025

tauri 2.2.0

New Features
  • f884bae75 (#11742 by @amrbashir) Add tauri::Builder::on_tray_icon_event handler.

  • 5188c0fae (#11767 by @FabianLars) Added Scope::is_forbidden to check if a path was explicitly forbidden.

  • 18bd639f6 (#11798 by @lars-berger) Add WebviewWindowBuilder/WebviewBuilder::data_store_identifier on macOS.

  • dc4d79477 (#11628 by @SpikeHD) Add WebviewWindowBuilder/WebviewBuilder::extensions_path on Linux and Windows.

  • 020ea0556 (#11661 by @ahqsoftwares) Add badging APIs:

    • Window/WebviewWindow::set_badge_count for Linux, macOS and IOS.
    • Window/WebviewWindow::set_overlay_icon for Windows Only.
    • Window/WebviewWindow::set_badge_labelfor macOS Only.
  • fc30b20be (#11726 by @amrbashir) Add TrayIconBuilder::show_menu_on_left_click method and deprecate TrayIconBuilder::menu_on_left_click for consistent naming and clarity.

Enhancements
  • d86aaccb0 (#11729 by @sandercox) Add support for TrayIconBuilder::menu_on_left_click and TrayIcon::set_show_menu_on_left_click on Windows.
  • b0ddee899 (#12101 by @renovate) Breaking change: Updated webview2-com to 0.34. This may be a breaking change if you use the with_webview method.
Bug Fixes
Dependencies
  • Upgraded to tauri-runtime@2.3.0
  • Upgraded to tauri-runtime-wry@2.3.0
  • Upgraded to tauri-utils@2.1.1
  • Upgraded to tauri-macros@2.0.4
  • Upgraded to tauri-build@2.0.4

@tauri-apps/api 2.2.0

New Features
  • 020ea0556 (#11661 by @ahqsoftwares) Add badging APIs:

    • Window/WebviewWindow::set_badge_count for Linux, macOS and IOS.
    • Window/WebviewWindow::set_overlay_icon for Windows Only.
    • Window/WebviewWindow::set_badge_labelfor macOS Only.
  • fc30b20be (#11726 by @amrbashir) Add TrayIcon.setShowMenuOnLeftClick method and deprecate TrayIcon.setMenuOnLeftClick to match the Rust API.

  • fc30b20be (#11726 by @amrbashir) Add TrayIconOptions.showMenuOnLeftClick field and deprecate TrayIconOptions.menuOnLeftClick to match the Rust API.

Enhancements
  • fc30b20be (#11726 by @amrbashir) Add support for TrayIconOptions.menuOnLeftClick option and TrayIcon.setMenuOnLeftClick on Windows.
Bug Fixes

cli 2.2.0

New Features
Enhancements
Bug Fixes
Dependencies
  • Upgraded to tauri-bundler@2.2.0
  • Upgraded to tauri-utils@2.1.1

2.1.x

2.1.1

Nov 11, 2024

tauri 2.1.1

Bug Fixes
  • e8a50f6d7 (#11645) Fix integer values of BasDirectory.Home and BaseDirectory.Font regression which broke path APIs in JS.

@tauri-apps/api 2.1.1

Bug Fixes
  • 7f81f0523 Fix regression in toLogical and toPhysical for position types in dpi module returning incorrect y value.
  • e8a50f6d7 (#11645) Fix integer values of BasDirectory.Home and BaseDirectory.Font regression which broke path APIs in JS.

2.1.0

Nov 9, 2024

tauri 2.1.0

New Features
  • fabc2f283 (#11485 by @39zde) Adds a new configuration option app > security > headers to define headers that will be added to every http response from tauri to the web view. This doesn't include IPC messages and error responses.

  • 8036c78e0 (#11455 by @amrbashir) Add PathResolver::home_dir() method on Android.

  • 5c4b83084 (#11191 by @amrbashir) Improved support for dpi module types to allow these types to be used without manual conversions with invoke:

    • Added SERIALIZE_TO_IPC_FN const in core module which can be used to implement custom IPC serialization for types passed to invoke.
    • Added Size and Position classes in dpi module.
    • Implementd SERIALIZE_TO_IPC_FN method on PhysicalSize, PhysicalPosition, LogicalSize and LogicalPosition to convert it into a valid IPC-compatible value that can be deserialized correctly on the Rust side into its equivalent struct.
  • 4d545ab3c (#11486 by @amrbashir) Added Window::set_background_color and WindowBuilder::background_color.

  • cbc095ec5 (#11451 by @amrbashir) Add app > windows > devtools config option and when creating the webview from JS, to enable or disable devtools for a specific webview.

  • f0da0bde8 (#11439 by @lucasfernog) Added WebviewWindow::resolve_command_scope to check a command scope at runtime.

  • `` Detect if SERIALIZE_TO_IPC_FN, const from the JS core module, is implemented on objects when serializing over IPC and use it.

  • f37e97d41 (#11477 by @amrbashir) Add app > windows > useHttpsScheme config option to choose whether the custom protocols should use https://<scheme>.localhost instead of the default http://<scheme>.localhost on Windows and Android

  • f37e97d41 (#11477 by @amrbashir) Add WebviewWindowBuilder/WebviewBuilder::use_https_scheme to choose whether the custom protocols should use https://<scheme>.localhost instead of the default http://<scheme>.localhost on Windows and Android

  • cbc095ec5 (#11451 by @amrbashir) Add WebviewWindowBuilder::devtools and WebviewBuilder::devtools to enable or disable devtools for a specific webview.

  • 129414faa (#11569 by @amrbashir) Add WebviewBuilder::focused method to choose whether to focus webview or not on creation.

  • 2a75c64b5 (#11469 by @amrbashir) Added app > windows > windowClassname config option to specify the name of the window class on Windows.

  • 2a75c64b5 (#11469 by @amrbashir) Added WindowBuilder/WebviewWindowBuilder::window_classname method to specify the name of the window class on Windows.

Enhancements
Bug Fixes
Dependencies
  • Upgraded to tauri-utils@2.1.0
  • Upgraded to tauri-runtime@2.2.0
  • Upgraded to tauri-runtime-wry@2.2.0
  • Upgraded to tauri-macros@2.0.3
  • Upgraded to tauri-build@2.0.3

@tauri-apps/api 2.1.0

New Features
  • 5c4b83084 (#11191 by @amrbashir) Improved support for dpi module types to allow these types to be used without manual conversions with invoke:

    • Added SERIALIZE_TO_IPC_FN const in core module which can be used to implement custom IPC serialization for types passed to invoke.
    • Added Size and Position classes in dpi module.
    • Implementd SERIALIZE_TO_IPC_FN method on PhysicalSize, PhysicalPosition, LogicalSize and LogicalPosition to convert it into a valid IPC-compatible value that can be deserialized correctly on the Rust side into its equivalent struct.
  • 4d545ab3c (#11486 by @amrbashir) Added Webview::setBackgroundColor, WebviewWindow::setBackgroundColor APIs to set the window background color dynamically and a backgroundColor window option to set the background color on window creation.

  • cbc095ec5 (#11451 by @amrbashir) Add app > windows > devtools config option and when creating the webview from JS, to enable or disable devtools for a specific webview.

  • 2a75c64b5 (#11469 by @amrbashir) Added windowClassname option, when constructing a Webview or WebviewWindow, to specify the name of the window class on Windows.

Bug Fixes
  • 54cbf59b5 (#11441 by @amrbashir) Fix submenu created as a menu item instead of a submenu when created by using an object in the items field in the options object passed to Menu.new or Submenu.new.

cli 2.1.0

New Features
Enhancements
Bug Fixes
Dependencies
  • Upgraded to tauri-utils@2.1.0
  • Upgraded to tauri-bundler@2.1.0

2.0.x

2.0.6

Oct 21, 2024

tauri 2.0.6

Dependencies
  • Upgraded to tauri-utils@2.0.2

2.0.5

Oct 20, 2024

tauri 2.0.5

New Features
  • 6cd917c22 (#11390 by @amrbashir) Add new methods on tauri::menu::MenuBuilder and tauri::menu::SubmenuBuilder to create predefined menu item with specific text.
Enhancements
Bug Fixes
What's Changed
  • 2e88633ba (#11369 by @lucasfernog) Remove references to no longer used __TAURI_INTERNALS__.metadata.windows and __TAURI_INTERNALS__.metadata.webviews.

2.0.4

Oct 15, 2024

tauri 2.0.4

New Features
  • bcf279278 (#11354) On Windows, Add ContextMenu::hpopupmenu method to get the HMENU used for popups and tray icon menu.
Enhancements
  • e3b09be7f (#11362) Added Builder::channel_interceptor to intercept messages to be sent to the frontend, complemeting the Builder::invoke_system interface.
  • 3cb73d08c (#11355) Mark the event commands as async so they do not block the main thread.
Bug Fixes
  • f3f521f03 (#11348) Fix TAURI_ANDROID_PACKAGE_UNESCAPED not set panic during compilation for Android when using an older tauri cli.
Dependencies
  • Upgraded to tauri-runtime-wry@2.1.1

cli 2.0.4

Enhancements
  • e4c9268b1 (#11258 by @regexident) Support custom project directory structure where the Tauri app folder is not a subfolder of the frontend project. The frontend and Tauri app project paths can be set with the TAURI_FRONTEND_PATH and the TAURI_APP_PATH environment variables respectively.
Dependencies
  • Upgraded to tauri-bundler@2.0.4

2.0.3

Oct 12, 2024

tauri 2.0.3

New Features
Bug Fixes
Dependencies
  • Upgraded to tauri-runtime@2.1.0
  • Upgraded to tauri-runtime-wry@2.1.0

@tauri-apps/api 2.0.3

Bug Fixes
What's Changed
  • 2e88633ba (#11369 by @lucasfernog) Remove references to no longer used __TAURI_INTERNALS__.metadata.windows and __TAURI_INTERNALS__.metadata.webviews.

cli 2.0.3

New Features
Bug Fixes
  • d609bef9f (#11314 by @amrbashir) Fix android invalid proguard file when using an identifier that contains a component that is a reserved kotlin keyword, like in, class, etc
  • 069c05e44 (#11315 by @amrbashir) Fix CLI crashing and failing to find a .ico file when bundle > icon option is using globs and doesn't have a string that ends with .ico.
Dependencies
  • Upgraded to tauri-bundler@2.0.3

2.0.2

Oct 7, 2024

tauri 2.0.2

Enhancements
  • 03e759042 (#11235 by @lucasfernog) Added App::invoke_key and AppHandle::invoke_key for custom invoke systems that rely on manual Webview::on_message calls.

@tauri-apps/api 2.0.2

What's Changed

cli 2.0.2

What's Changed
  • 4475fbb50 (#11208 by @lucasfernog) Update cargo-mobile2 to 0.17.3, fixing lib name validation.
  • a49a19ffa (#11218) Fix bundling appimage, deb and rpm bundles failing to open when using mainBinaryName with spaces.
Dependencies
  • Upgraded to tauri-bundler@2.0.2

2.0.1

Oct 2, 2024

tauri 2.0.1

What's Changed
Dependencies
  • Upgraded to tauri-utils@2.0.1
  • Upgraded to tauri-runtime@2.0.1
  • Upgraded to tauri-runtime-wry@2.0.1
  • Upgraded to tauri-macros@2.0.1
  • Upgraded to tauri-build@2.0.1

@tauri-apps/api 2.0.1

What's Changed

cli 2.0.1

What's Changed
Dependencies
  • Upgraded to tauri-utils@2.0.1
  • Upgraded to tauri-macos-sign@2.0.1
  • Upgraded to tauri-bundler@2.0.1

2.0.0

Oct 2, 2024

tauri 2.0.0

What's Changed
Dependencies
  • Upgraded to tauri-utils@2.0.0
  • Upgraded to tauri-runtime@2.0.0
  • Upgraded to tauri-runtime-wry@2.0.0
  • Upgraded to tauri-macros@2.0.0
  • Upgraded to tauri-build@2.0.0

@tauri-apps/api 2.0.0

What's Changed

cli 2.0.0

What's Changed
Dependencies
  • Upgraded to tauri-utils@2.0.0
  • Upgraded to tauri-macos-sign@2.0.0
  • Upgraded to tauri-bundler@2.0.0

© 2026 Tauri Contributors. CC-BY / MIT