# Pinia Colada > Smart data fetching for Vue.js - Automatic caching - Request deduplication - Optimistic updates - Async state management - Sensible defaults - Extensible Pinia Colada is a smart data fetching layer for Vue.js. It consist of two main concepts: - Queries: they are designed to read data from a server. They are automatically cached and deduplicated. They are mainly defined with the "useQuery" function. - Mutations: they are designed to write data to a server. They can be used to update the cache and create optimistic updates. They are mainly defined with the "useMutation" function. On top of that Pinia Colada is highly extensible. You can create your own plugins to extend the functionality of Pinia Colada. You can also use Pinia Colada with Nuxt.js and Vue Router. ## Table of Contents ### Introduction - [Quick Start](/quick-start.md) - [Why?](/why.md) ### Guide - [Installation](/guide/installation.md) - [Queries](/guide/queries.md) - [Query Keys](/guide/query-keys.md) - [Query Meta](/guide/query-meta.md) - [Paginated Queries](/guide/paginated-queries.md) - [Infinite Queries](/guide/infinite-queries.md) - [Mutations](/guide/mutations.md) - [Error Handling](/guide/error-handling.md) - [Query Invalidation](/guide/query-invalidation.md) - [Optimistic updates](/guide/optimistic-updates.md) - [Nuxt](/nuxt.md) - [Server Side Rendering](/guide/ssr.md) ### Plugins - [Plugins](/plugins.md) - [Community plugins](/plugins/community.md) - [Writing Plugins](/plugins/writing-plugins.md) #### Official plugins - [Query Hooks](/plugins/official/query-hooks.md) - [Auto refetch](/plugins/official/auto-refetch.md) - [Retry](/plugins/official/retry.md) - [Delay](/plugins/official/delay.md) - [Cache persister](/plugins/official/cache-persister.md) ### Advanced - [Query Cache](/advanced/query-cache.md) - [Reusable Queries](/advanced/reusable-queries.md) ### Errors Reference - [PINIA\_COLADA\_C0001: root pinia plugin not detected](/errors/pinia_colada_c0001.md) - [PINIA\_COLADA\_R0001: cache composable called outside of an injection context](/errors/pinia_colada_r0001.md) - [PINIA\_COLADA\_R0002: the cache cannot be directly set](/errors/pinia_colada_r0002.md) - [PINIA\_COLADA\_R0003: useQuery() was called with an empty key](/errors/pinia_colada_r0003.md) - [PINIA\_COLADA\_R0004: entry has no options](/errors/pinia_colada_r0004.md) - [PINIA\_COLADA\_R0005: mutation entry mutated before being ensured](/errors/pinia_colada_r0005.md) - [PINIA\_COLADA\_R0006: mutation entry reused](/errors/pinia_colada_r0006.md) - [PINIA\_COLADA\_R0007: defineMutation() called outside of a component or effect scope](/errors/pinia_colada_r0007.md) - [PINIA\_COLADA\_R0008: missing getPreviousPageParam](/errors/pinia_colada_r0008.md) - [PINIA\_COLADA\_R0009: query entry not found in cache](/errors/pinia_colada_r0009.md) ### Cookbook - [Prefetching queries](/cookbook/prefetching.md) - [Cache Persistence](/cookbook/cache-persistence.md) - [Testing](/cookbook/testing.md) - [TanStack Query Compatibility Plugin](/cookbook/tanstack-compat.md) - [Migrating from `@tanstack/vue-query` to `@pinia/colada`](/cookbook/migration-tvq.md) - [Migration Codemods](/cookbook/migrations.md) - [Migrating Devtools from v1 to v2](/cookbook/migration-devtools-v2.md) ### Other - [Canceling Queries](/guide/cancelling-queries.md) - [Official plugins](/plugins/official.md) - [Placeholder Data](/guide/placeholder-data.md) - [Query Hooks](/cookbook/query-hooks.md) - [Setup](/guide/setup.md) - [TypeScript](/guide/typescript.md)