Skip to content

feat(http, upload): update reqwest to 0.13 - #3593

Merged
lucasfernog merged 5 commits into
tauri-apps:v3from
decebal:feat/http-reqwest-0.13
Oct 9, 2026
Merged

lucasfernog merged 5 commits into
tauri-apps:v3from
decebal:feat/http-reqwest-0.13

Conversation

@decebal

@decebal decebal commented Sep 17, 2026

Copy link
Copy Markdown

Moves tauri-plugin-http and tauri-plugin-upload to reqwest 0.13, against v3.

tauri-plugin-http re-exports reqwest, so this is breaking and cannot land on v2 — that is the conclusion in #3462, and why Renovate's #3579 targets the wrong branch. tauri-plugin-updater already moved in #3213, and this follows its shape.

rustls

rustls-tls maps to reqwest/rustls-no-provider plus rustls with ring, and the provider is installed as the process default only when none is set, exactly as the updater does:

#[cfg(feature = "rustls-tls")]
if rustls::crypto::CryptoProvider::get_default().is_none() {
    let _ = rustls::crypto::ring::default_provider().install_default();
}

In upload that lives in one http_client() helper, since both commands build their own client and reqwest::Client::new() panics when the builder has no provider.

Features reqwest 0.13 removed

Removed here rather than silently remapped, so a user gets a "no such feature" error instead of different TLS behaviour:

Removed Replacement
native-tls-alpn ALPN is part of native-tls
rustls-tls-manual-roots, rustls-tls-webpki-roots, rustls-tls-native-roots the platform verifier, via rustls-tls
trust-dns hickory-dns
macos-system-configuration system-proxy, already in the default set

The macos-system-configuration removal follows the deprecation note added in #3528.

Verification

Per-package CI commands, on macOS:

  • cargo clippy --package tauri-plugin-http --all-targets -- -D warnings: clean
  • cargo clippy --package tauri-plugin-http --all-targets --all-features -- -D warnings: clean
  • cargo clippy --package tauri-plugin-upload --all-targets --all-features -- -D warnings: clean
  • cargo test --package tauri-plugin-http --all-targets: 8 passed
  • cargo test --package tauri-plugin-upload --all-targets --all-features: 7 passed
  • cargo fmt --all -- --check: clean

Change files are included for both packages.

`tauri-plugin-http` re-exports `reqwest`, so moving it is a breaking change and
belongs on v3 rather than v2 (tauri-apps#3462). `tauri-plugin-updater` already took 0.13
in tauri-apps#3213; these two follow the same shape.

`rustls-tls` maps to `reqwest/rustls-no-provider` plus `rustls` with `ring`,
and the provider is installed as the process default only when none is set yet,
exactly as the updater does. Without it `reqwest::Client::new()` has no crypto
provider to build with.

Features reqwest 0.13 removed are removed here rather than remapped silently:

- `native-tls-alpn`: ALPN is part of `native-tls` now.
- `rustls-tls-manual-roots`, `rustls-tls-webpki-roots`, `rustls-tls-native-roots`:
  certificate verification goes through the platform verifier.
- `trust-dns`: renamed `hickory-dns`.
- `macos-system-configuration`: superseded by `system-proxy`, which the default
  feature set already carries and which the deprecation note pointed at.

Verified with the CI commands for both packages: clippy --all-targets and
clippy --all-targets --all-features under -D warnings, cargo test (http 8,
upload 7 with --all-features), and cargo fmt --all --check.
@decebal
decebal requested a review from a team as a code owner September 17, 2026 13:38
@FabianLars

Copy link
Copy Markdown
Member

imo we should completely remove the re-export until reqwest hits v1. I think we'll be on v3 a bit longer than on v2. wdyt @Legend-Master

@Legend-Master

Copy link
Copy Markdown
Contributor

Why did we export it at the first place? 😂

@FabianLars

Copy link
Copy Markdown
Member

as a replacement for the actual rust apis we had in v1 / added on mobile. For the record, i was against it :P

@Legend-Master

Copy link
Copy Markdown
Contributor

Remove the re-export then, just add it directly in your rust code if you want to use it in rust side

@lucasfernog
lucasfernog merged commit 41b96be into tauri-apps:v3 Oct 9, 2026
1 check passed
@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

Package Changes Through 9286494

There are 4 changes which include http with prerelease, http-js with prerelease, upload with prerelease, upload-js with prerelease

Planned Package Versions

The following package releases are the planned based on the context of changes in this pull request.

package current next
api-example 3.0.0-alpha.3 3.0.0-alpha.4
api-example-js 2.0.44-alpha.3 2.0.44-alpha.4
http 3.0.0-alpha.2 3.0.0-alpha.3
http-js 3.0.0-alpha.2 3.0.0-alpha.3
upload 3.0.0-alpha.2 3.0.0-alpha.3
upload-js 3.0.0-alpha.2 3.0.0-alpha.3

Add another change file through the GitHub UI by following this link.


Read about change files or the docs at github.com/jbolda/covector

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants