Skip to content

updater

Update your app from a remote server.

Oct 28, 2026
Oct 14, 2026
  • b6f39cc5 (#3688 by @followdarko) On Linux, installing an AppImage update no longer fails with Invalid cross-device link (os error 18) when the temp or cache directory is a separate mount of the AppImage's file system, such as a bind-mounted or private /tmp. The backup now moves on to the next location, ending with the AppImage's own directory.

  • f2af373b (#3696 by @lucasfernog) On Linux, reject an AppImage update that is neither an AppImage nor a compressed AppImage (or a compressed AppImage when the zip feature is disabled) before touching the installed app. Such payloads were written over the AppImage as-is, corrupting the app.

  • 24e6451b (#3693 by @lucasfernog) On Linux, try the next temporary directory location (the user cache directory, then the directory holding the AppImage) when a temporary directory cannot be created in the previous one, instead of failing the AppImage update right away. Also avoids a panic when the app path has no parent directory.

  • a819187e (#3690 by @lucasfernog) check(), Update.download() and Update.downloadAndInstall() no longer replace the headers of the options object they are given with an array.

  • 7b7c7c62 (#3691 by @lucasfernog) Calling Update.download() again now releases the bytes of the previous download instead of keeping them in memory until the webview is destroyed.

  • 4b1ba079 (#3695 by @lucasfernog) On Android and iOS, Update::install now returns Error::UnsupportedOs instead of reporting success without installing anything.

  • fce235c3 (#3640 by @t8y2) Add Updater::restore_update to restore an update from cached release metadata, and Update::verify to verify package bytes using the configured signing key and signed-version policy. Restored updates always require the signature to bind the announced version.

    Update::install now verifies the package bytes before installing them, and Updater::check resolves to None instead of a target error when the release is not an update and has no entry for the current target.

  • d057ec47 (#3694 by @lucasfernog) Log a warning when the download URL of an update does not use https and dangerousInsecureTransportProtocol is not enabled.

  • 21ebe1f5 (#3692 by @lucasfernog) On Windows, report why launching the installer failed from the ShellExecuteW return value (for example "Access is denied" when the user declines the UAC prompt) instead of an unrelated GetLastError message.

Oct 10, 2026
  • 81631888 (#3658) Update minisign-verify to 0.3, which rejects signatures with a non-canonical Ed25519 S value. The Error::Minisign variant now wraps minisign_verify 0.3's Error, and its message reads like "The signature verification failed" instead of the variant name (InvalidSignature).
Oct 7, 2026
  • 2a9c29e0 (#3578 by @alii13) On macOS, a failed install no longer deletes the installed app. The bundles are swapped atomically where the file system supports it; otherwise the previous app is restored, or kept as <name> (previous version).app and reported through the new Error::PreviousAppNotRestored. Also fixes installing apps on a volume other than the temp directory's, and the bundle root's permissions (0755).
Sep 29, 2026
  • ecd3273e (#3480 by @renovate) Updated windows-rs dependencies:

    • deep-link: updated windows-registry to 0.6 and windows-result to 0.4. The public Error::Windows variant wraps windows_result::Error; applications using this type directly should update their windows-result dependency.
    • opener: updated windows to 0.62. The public Error::Win32Error variant wraps windows::core::Error; applications using this type directly should update their windows dependency.
    • single-instance: updated windows-sys to 0.61
    • updater: updated windows-sys to 0.61
  • 90b9869e (#3573 by @renovate) Updated dirs to v7

  • 22e286f3 (#3501 by @renovate) Updated dependency infer to 0.22

Sep 26, 2026
  • ae3c808e (#3602) The plugin's global API script (used with app.withGlobalTauri) now resolves the core API from window.__TAURI__ instead of bundling its own copy of @tauri-apps/api. Values created with the core API are now accepted by plugin APIs in global mode (e.g. an Image from window.__TAURI__.image passed to clipboardManager.writeImage, which previously failed the instanceof check against the plugin's private copy), and the script is considerably smaller.
  • 9b29b601 Update MSRV to 1.90 to match tauri.
  • a87a3c7d Update documentation.
  • 101e1b06 (#3615) On Linux, check() no longer sets SSL_CERT_FILE and SSL_CERT_DIR to Debian paths. The override pointed rustls to files that do not exist on distros with a different layout, such as ALT Linux, and left every TLS client in the app without root certificates.
Sep 20, 2026
  • 1308bfa3 Breaking change: the allowDowngrades option was removed from the check command and is now read from the plugin configuration instead.

    Previously any code running in the webview could pass allowDowngrades: true to plugin:updater|check and relax the version check from "the update must be newer" to "the update must be different", overriding the comparator the application had configured on the Rust side. The flag is now an application-level setting:

    {
    "plugins": {
    "updater": {
    "allowDowngrades": true
    }
    }
    }

    It defaults to false, and is ignored when the application provides its own Builder::default_version_comparator, which continues to take precedence.

Aug 31, 2026
  • f8053e65 (#3527 by @Legend-Master) Documented Cargo feature flags in each plugin's crate-level documentation.
  • 622f02bf (#3516 by @Legend-Master) On Windows, returns an error if failed to spawn the installer in install through ShellExecuteW
  • ab7489c9 (#3299 by @Legend-Master) On Windows, add a new option restartAfterInstall/restart_after_install to install an update without the installer re-launching the app
  • 2371be83 (#3526 by @Legend-Master) Added system-proxy (enabled by default) feature flag to control reqwest/system-proxy feature (Use Windows and macOS system proxy settings automatically)
Apr 4, 2026
  • 31ab6f8d (#3285 by @hrzlgnm) fix: preserve file extension of updater package, otherwise users may get confused when presented with a sudo dialog suggesting to install a file with the extension .rpm using dpkg -i
Feb 3, 2026
  • 4375c98b (#3073) Add no_proxy config to disable system proxy for updater plugin.
  • f122ee98 Allow configuring the updater client to accept invalid TLS certificates and hostnames for internal/self-signed update servers. These options are available via the plugin config (dangerousAcceptInvalidCerts, dangerousAcceptInvalidHostnames) and via the UpdaterBuilder (dangerous_accept_invalid_certs, dangerous_accept_invalid_hostnames).
  • f122ee98 Updater plugin now supports all bundle types: Deb, Rpm and AppImage for Linux; NSiS, MSI for Windows. This was added in https://github.com/tauri-apps/plugins-workspace/pull/2624
  • 05c5da07 (#3213) Updated reqwest to 0.13, make sure to update your reqwest dependency if you're using UpdaterBuilder::configure_client
Jun 25, 2025

updater full changelog


© 2026 Tauri Contributors. CC-BY / MIT