pinia-plugin-capacitor-persist
A Vue 3 Pinia plugin which persists store content using the CapacitorJS Preferences store.
21,737
9
| Install | |
|---|---|
npm install pinia-plugin-capacitor-persist |
|
| Latest Version: | 1.8.1 |
| Vue: | 3 |
| License: | MIT |
| Last Updated: | Aug 24, 2026 |
| Links: | GitHub · npm |
Maintainer: craigrileyuk
Pinia Persist Plugin for Capacitor
Pinia plugin that syncs with Capacitor's Preferences plugin's storage.
Installation
npm i pinia-plugin-capacitor-persist
Usage
First, install the plugin as part of your Pinia initialisation
import { createApp } from 'vue';
import { createPinia } from 'pinia';
import { piniaCapacitorPersist } from 'pinia-plugin-capacitor-persist';
import App from './App.vue';
const pinia = createPinia();
pinia.use(piniaCapacitorPersist);
createApp(App).use(pinia).mount('#app');
Then you can enable persist as part of your store declarations:
import { defineStore } from 'pinia';
export const useUserStore = defineStore('user', {
state() {
return {
name: '',
address: '',
address_2: '',
city: '',
country: '',
};
},
persist: {
enabled: true,
// See below for additional options that go here
},
});
Persist options
| Option | Type | Example | Description |
|---|---|---|---|
enabled |
Boolean | true |
Should the store be persisted? |
include |
Array | ['address'] |
Only persist these properties |
exclude |
Array | ['name'] |
Don't persist these properties |
onRestored |
Function | (store) => { // do stuff } |
Callback function for after restoration |
Async Restoration
Because CapacitorJS uses async functions to read/write its storage, there may be times when you need to await your store being hydrated from local storage before doing an action.
Fortunately, there's a property, restored, that's added to each of your persist enabled stores that can be awaited.
import { createRouter, createWebHashHistory } from 'vue-router';
import routes from '@/router/routes';
import { useUserStore } from '@/stores/user';
import { axiosInstance } from '@/plugins/axios';
const router = createRouter({
history: createWebHashHistory(),
routes,
});
router.beforeEach(async () => {
const userStore = useUserStore();
await userStore.restored;
axiosInstance.defaults.headers.common['Authorization'] = `Bearer ${userStore.token}`;
});
export default router;
Related Packages
pinia-plugin-persistedstate-2
Persist and rehydrate your Pinia state between page reloads
257,084
115
pinia-plugin-extending-store
A Pinia plugin to create reusable stores that can extend other Pinia stores.
3,030
0
Version History
| Version | Released | Vue | License |
|---|---|---|---|
| 1.8.1 | ^3.0.0 | MIT | |
| 1.8.0 | ^3.0.0 | MIT | |
| 1.7.1 | ^3.0.0 | MIT | |
| 1.7.0 | ^3.0.0 | MIT | |
| 1.6.0 | ^3.0.0 | MIT | |
| 1.5.0 | ^3.0.0 | MIT | |
| 1.4.0 | ^3.0.0 | MIT | |
| 1.3.0 | ^3.0.0 | MIT | |
| 1.2.0 | ^3.0.0 | MIT | |
| 1.1.0 | >=3.0.0 | MIT | |
| 1.0.0 | >=3.0.0 |
