vike-vue-pinia-colada
| Install | |
|---|---|
npm install vike-vue-pinia-colada |
|
| Latest Version: | 0.1.0 |
| Vue: | 3 |
| License: | MIT |
| Last Updated: | Oct 17, 2026 |
| Links: | GitHub · npm |
Built on top of the same patterns as vike-vue-pinia, with added Pinia Colada query cache serialization/hydration.
[!NOTE] Pinia is included — you don't need
vike-vue-piniaalongside this extension.
Installation
-
npm install vike-vue-pinia-colada pinia @pinia/colada -
Extend
+config.js:// pages/+config.js import vikeVuePiniaColada from 'vike-vue-pinia-colada/config' import vikeVue from 'vike-vue/config' export default { // ... extends: [vikeVue, vikeVuePiniaColada] }
Pinia Colada Options
You can pass options to the Pinia Colada plugin via the piniaColadaOptions config:
// pages/+config.js
export default {
piniaColadaOptions: {
queryOptions: {
staleTime: 5000,
},
}
}
All options from PiniaColadaOptions are supported.
Why a separate extension?
Pinia Colada stores its query cache inside Pinia, but serializing it through Pinia's standard state hydration doesn't work reliably — cache keys can be functions, which aren't serializable out of the box. This causes issues when relying solely on vike-vue-pinia for SSR.
The recommended approach is to use the dedicated helpers provided by Pinia Colada (serializeQueryCache / reviveQueryCache) to correctly serialize the query cache on the server and hydrate it on the client. This is exactly what this extension does under the hood.
Architecture differences with vike-vue-pinia
This extension differs from vike-vue-pinia in how Pinia is initialized:
vike-vue-piniauses+onCreatePageContext.ssr.tsfor server-side Pinia creation, then creates the client-side instance separately in+onCreateApp.tsvia a sharedcreatePiniaPlushelper.vike-vue-pinia-coladauses a single+onCreatePageContext.ts(no.ssrsuffix) that handles both environments. On the client, it early-returns if a Pinia instance already exists onglobalContext.
Both approaches avoid unnecessary pageContext.json requests during client-side navigation:
.ssr.jshooks only run during SSR (initial server render), not during client-side navigation.- No-suffix hooks run on both server and client — during client-side navigation, they execute client-side, so no server round-trip is needed.
- Only
.server.jshooks would triggerpageContext.jsonrequests during client-side navigation.
The result is a simpler implementation: one hook handles Pinia creation in both environments, while +onCreateApp focuses solely on app plugin installation and hydration. The trade-off is a negligible extra onCreatePageContext call on each client-side navigation (which immediately early-returns).
See also
- Pinia Colada
vike-vue-pinia— Reference implementation for Pinia integration
Related Packages
Version History
| Version | Released | License |
|---|---|---|
| 0.1.0 | MIT | |
| 0.0.11 | MIT | |
| 0.0.10 | MIT | |
| 0.0.9 | MIT | |
| 0.0.8 | MIT | |
| 0.0.7 | MIT | |
| 0.0.6 | MIT | |
| 0.0.5 | MIT | |
| 0.0.4 | MIT | |
| 0.0.3 | MIT | |
| 0.0.2 | MIT | |
| 0.0.1 | MIT |