Open-Source Wikis

/

Tauri

/

Lore

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:

  1. Mobile. Android (Kotlin) and iOS (Swift) became first-class targets. The tauri-cli grew android and ios subcommands (crates/tauri-cli/src/mobile/), and the runtime learned to route plugin calls into JNI/Swift via the bridge in crates/tauri/src/plugin/mobile.rs.
  2. 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 in crates/tauri-utils/src/acl/ and resolved at build time by crates/tauri-build. Plugins now ship their own permission .toml files under permissions/.

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-bundle ancestors.
  • The build script (crates/tauri-build) has been the entry point for compile-time integration since the multi-crate split; the tauri-codegen parsing of tauri.conf.json predates v1.
  • The macros (#[tauri::command], generate_handler!) have kept the same surface across v1 → v2; only the dispatch internals were rewritten.
  • tauri-utils is the oldest crate that is still imported by everything: it has held the config schema definitions since v0.4.

Deprecated features

  • tauri-updater crate — the standalone updater crate from the v0.4 era was folded into the core tauri crate and subsequently into a separate plugin (tauri-plugin-updater, hosted in the plugins repo). The bundler still produces "updater bundles" via crates/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/cli as a pure JS wrapper — the npm CLI is now a napi-rs native addon over tauri-cli, not a JS reimplementation.
  • objc-exception Cargo feature — kept as a no-op since 2.3.0 for back-compat; documented in crates/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.

Lore – Tauri wiki | Factory