Skip to content

Guide ​

tauri-plugin-widgets renders home-screen and desktop widgets from one declarative JSON config across Android, iOS, macOS, Windows, and Linux.

From one JSON config to native widget surfaces

App code calls setWidgetConfig → plugin host writes shared storage → native renderers (Glance, WidgetKit, embedded desktop widget.html, Adaptive Cards) read and draw. On desktop you do not install widget.html yourself for the default path — see Desktop webview.

mermaid
flowchart LR
  App["App<br/>setWidgetConfig"] --> Host["Rust plugin host"]
  Host --> Store["Shared store<br/>config:{widgetId}"]
  Store --> G["Glance"]
  Store --> WK["WidgetKit"]
  Store --> HTML["widget.html"]
  Host --> AC["Adaptive Cards"] --> WB["Widgets Board"]

Full diagram + action sequence: Concepts → Architecture flowchart.

What it is ​

  • Shared widget IR (WidgetConfig / WidgetElement) defined in Rust, generated for TypeScript
  • Platform backends that map that IR to Glance, SwiftUI, HTML, or Adaptive Cards
  • Host APIs for config, key/value data, actions, diagnostics, desktop windows

What it is not ​

  • A visual designer
  • A guarantee that every extended element looks identical everywhere — see Core vs extended

Path ​

  1. Install
  2. First widget (desktop)
  3. Concepts · Transport & signing · Doctor
  4. Platform setup when you need a native surface
  5. Elements · Showcase

Contributor docs: Contributing.

Released under the MIT License. · Contributing