Skip to content
On this page
v2.0.0-pre.18

Pinia Stores

Setup Stores, Only

Similar to how VueJS components can be written using the "Options API" or the "Composition API", Pinia, itself, also supports "Options API" and "Composition API" stores, except Pinia calls "Composition API" stores "setup stores". Up until Feathers-Pinia 2.0, only the "Options API" stores were supported. As of Feathers-Pinia 2.0, only setup stores are supported. Setup stores share the same benefits of the Vue Composition API, being more flexible and easier to customize.

Create a "Setup" Store

To create a setup store, import defineStore from pinia then call it with a string for the store name followed by a function that accepts no arguments and returns an object, as shown below. Make sure the store's name is unique to prevent conflicts.

ts
import { defineStore } from 'pinia'

export const useMyStore = defineStore('my-store', () => {
  // implement store logic
  return {}
})

Learn more about Pinia Setup Stores.

HMR Support

If you're building your app with Vite, you can utilize Pinia's acceptHMRUpdate to make sure your stores are properly reloaded after a hot module swap. To implement, import acceptHMRUpdate from pinia and conditionally call it below your store declaration block:

ts
import { defineStore, acceptHMRUpdate } from 'pinia'

export const useMyStore = defineStore('my-store', () => {
  // implement store logic
  return {}
})

// Adds HMR support
if (import.meta.hot) {
  import.meta.hot.accept(acceptHMRUpdate(useMyStore, import.meta.hot))
}

Store Types

Feathers-Pinia comes with two utilities for creating different types of stores:

  • useService is used to create a store that connects to a FeathersJS service.
  • useAuth is used to create an auth store.

Many thanks go to the Vue, Vuex, Pinia, and FeathersJS communities for keeping software development FUN!