Raw WebAssembly bindings to the Tauri API for Rust projects using wasm-bindgen.
tauri-sys is a Rust crate that provides raw WebAssembly bindings to the Tauri API, allowing Rust code compiled to WebAssembly to call Tauri's desktop functionality. It solves the problem of building Tauri application frontends in Rust instead of JavaScript, giving Rust developers access to Tauri's native desktop APIs through wasm-bindgen.
Rust developers building Tauri desktop applications who want to write their frontend logic in Rust and compile it to WebAssembly, rather than using JavaScript.
Developers choose tauri-sys because it provides the most direct, low-level access to Tauri's API from Rust/WASM, maintains close compatibility with the official JavaScript API, and offers fine-grained control through feature-gated modules that match Tauri's allowlist configuration.
Bindings to the Tauri API for projects using wasm-bindgen
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Stays close to Tauri's original JavaScript API, ensuring predictability and easy migration for developers familiar with Tauri's JS ecosystem, as stated in the README's philosophy.
Modules like app, clipboard, and dialog are enabled via Cargo features, allowing fine-grained configuration that can sync with Tauri's allowlist for security and customization.
Designed specifically for the wasm-bindgen toolchain, making it straightforward to integrate Rust/WASM code with Tauri's desktop capabilities without manual bindings.
Includes a dedicated mocks module, enabling unit testing of Tauri API calls without requiring the full Tauri runtime, as highlighted in the README features.
The README openly lists missing modules such as cli, http, shell, and updater, limiting functionality for projects that rely on these Tauri APIs.
Not published to crates.io, requiring git references and a global esbuild installation, which adds setup complexity and potential stability issues compared to standard Rust tooling.
Admits in the README that it closely mirrors the JavaScript API, which may not leverage Rust's type system fully, leading to less idiomatic and more error-prone code for Rust developers.