Skip to content

Getting Started

Supported Tauri Version

This plugin requires Tauri 2.0.0-rc. If you are using Tauri 2.0.0-beta, try the 0.3 version.

Install

Install the Rust crate by adding the following to your Cargo.toml file:

toml
[dependencies]
tauri-plugin-pinia = 0.5

Install the JavaScript package with your preferred package manager:

sh
npm install tauri-plugin-pinia
sh
pnpm add tauri-plugin-pinia
sh
yarn add tauri-plugin-pinia
sh
bun add tauri-plugin-pinia

Usage

TIP

For a working example, see the playground.

  1. Enable the required permissions in your capabilities file:
json
{
  "identifier": "pinia",
  "windows": ["*"],
  "permissions": ["pinia:default", "core:event:default"]
}
  1. Register the plugin with Tauri:
rust
tauri::Builder::default()
  .plugin(tauri_plugin_pinia::init())
  .run(tauri::generate_context!())
  .expect("error while running tauri application");
  1. Enable the plugin for Pinia:
ts
import { createApp } from 'vue';
import { createPinia } from 'pinia';
import { createPlugin } from 'tauri-plugin-pinia';

const app = createApp(App);

const pinia = createPinia();
pinia.use(createPlugin());

app.use(pinia).mount('#app');

TIP

createPlugin is also exported as TauriPluginPinia.

  1. Define your Pinia store:
ts
import { ref } from 'vue';
import { defineStore } from 'pinia';

export const useCounterStore = defineStore('counter', () => {
  const counter = ref(0);

  function increment() {
    counter.value++;
  }

  return {
    counter,
    increment,
  };
});
  1. Start the plugin:
ts
import { useCounterStore } from './stores/counter';

const counterStore = useCounterStore();
counterStore.$tauri.start();

TIP

The stores won't be synchronized until you call the start method.