tauri-apps/tauri
Lore
A timeline of how the Tauri codebase got to where it is today. Dates are derived from git history and tag dates on the dev branch.
Eras
Proton → Tauri (Jul 2019)
The repository was opened on 2019-07-13 with the message "Initial commit" by Daniel Thompson-Yvetot under the quasarframework/proton namespace. Within a week it had a README, a SECURITY.md, GitHub templates, and a public CONTRIBUTING guide. Early commits already mention the goal — a small, secure desktop app toolkit that uses the system WebView — and the project was renamed to "Tauri" before the first published version.
The earliest tags (v0.2.0, v0.2.1-tauri-js, v0.3.0) ship a JavaScript-first developer experience: tauri.js was the original CLI before a Rust CLI existed.
v0.4.x — the multi-crate split (late 2019 – early 2020)
By the time the v0.4 line landed (tags tauri-core-v0.4.0, tauri-bundler-v0.4.0, tauri-utils-v0.4.0, tauri-updater-v0.4.0, tauri-api-v0.4.0), the codebase had been carved into the now-familiar crate layout: a core library, a bundler, utilities, an updater, and a JS wrapper. The bundler in particular was forked from cargo-bundle (the SPDX header in crates/tauri-bundler/src/lib.rs still credits "Cargo-Bundle developers").
v1 stable (Jun 2022)
After two years of pre-1.0 iteration, Tauri 1.0 stabilised the public Rust API and the tauri.conf.json schema. The macros (#[command], generate_handler!), the Manager trait, and the Builder pattern that survives in v2 were largely settled here.
v2 — mobile and ACL rewrite (Apr 2023 – Oct 2024)
The biggest single rewrite in the project's history. Two themes drove it:
- Mobile. Android (Kotlin) and iOS (Swift) became first-class targets. The
tauri-cligrewandroidandiossubcommands (crates/tauri-cli/src/mobile/), and the runtime learned to route plugin calls into JNI/Swift via the bridge incrates/tauri/src/plugin/mobile.rs. - The ACL system. The v1 "allowlist" — a flat list of feature flags in
tauri.conf.json— was replaced with a richer permission/capability/scope model implemented incrates/tauri-utils/src/acl/and resolved at build time bycrates/tauri-build. Plugins now ship their own permission.tomlfiles underpermissions/.
Other v2 deliverables: the new isolation pattern, the Channel IPC primitive (crates/tauri/src/ipc/channel.rs), and a hard split between tauri-runtime (the trait) and tauri-runtime-wry (the implementation).
v2.10.x maintenance (late 2025 – 2026)
The most recent tags (tauri-v2.10.3, @tauri-apps/cli-v2.10.1) reflect ongoing 2.x work: NSIS installer polish (Vietnamese, Italian translations, custom icons), Windows-version metadata fixes in tauri-build, file association support for mobile, deeper drag-region handling, and eval_with_callback in Webview/WebviewWindow. Renovate has merged hundreds of dependency bumps in the same window.
Longest-standing features
- The bundler, in continuous development since v0.4 (mid-2019). It still carries the SPDX attribution to the
cargo-bundleancestors. - The build script (
crates/tauri-build) has been the entry point for compile-time integration since the multi-crate split; thetauri-codegenparsing oftauri.conf.jsonpredates v1. - The macros (
#[tauri::command],generate_handler!) have kept the same surface across v1 → v2; only the dispatch internals were rewritten. tauri-utilsis the oldest crate that is still imported by everything: it has held the config schema definitions since v0.4.
Deprecated features
tauri-updatercrate — the standalone updater crate from the v0.4 era was folded into the coretauricrate and subsequently into a separate plugin (tauri-plugin-updater, hosted in the plugins repo). The bundler still produces "updater bundles" viacrates/tauri-bundler/src/bundle/updater_bundle.rs.- The v1 allowlist — replaced wholesale by ACL/capabilities in v2. Migration guidance and the v1 schema live in
crates/tauri-utils/src/config_v1/. @tauri-apps/clias a pure JS wrapper — the npm CLI is now anapi-rsnative addon overtauri-cli, not a JS reimplementation.objc-exceptionCargo feature — kept as a no-op since 2.3.0 for back-compat; documented incrates/tauri/src/lib.rs.
Major rewrites
| Period | What changed |
|---|---|
| late 2019 | Single crate split into tauri-core, tauri-bundler, tauri-utils, tauri-api, tauri-updater. |
| 2021–2022 | Stable Runtime trait extracted; tauri-runtime-wry becomes the default backend. |
| 2023–2024 (v2) | Mobile targets added; allowlist replaced by ACL; plugin runtime extended with mobile bridge; isolation pattern revamped. |
| 2024–2025 | @tauri-apps/cli becomes a napi-rs native addon over tauri-cli. |
| 2025–2026 | Continuous schema evolution (config.schema.json), NSIS installer overhaul, mobile file associations. |
Growth trajectory
- 2019: repository + Proton-era prototypes, JS CLI only.
- 2020: Rust CLI lands; bundler matures; multi-crate workspace settled.
- 2022: v1 stable.
- 2024: v2 stable with mobile, ACL, capabilities.
- 2026 (current dev): v2.10 maintenance, ongoing schema and platform polish.
For per-crate detail see crates/. For the conventions that survived the rewrites, see patterns and conventions.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.