--- category: '@Integrations' --- # useIDBKeyval Wrapper for [`idb-keyval`](https://www.npmjs.com/package/idb-keyval). ## Install idb-keyval as a peer dependency ```bash npm install idb-keyval@^6 ``` ## Usage ```ts import { useIDBKeyval } from '@vueuse/integrations/useIDBKeyval'; // bind object const { data: storedObject, isFinished } = useIDBKeyval('my-idb-keyval-store', { hello: 'hi', greeting: 'Hello', }); // update object storedObject.value.hello = 'hola'; // bind boolean const flag = useIDBKeyval('my-flag', true); // returns Ref // bind number const count = useIDBKeyval('my-count', 0); // returns Ref // awaiting IDB transaction await count.set(10); console.log('IDB transaction finished!'); // delete data from idb storage storedObject.value = null; ``` ## Type Declarations ```ts interface Serializer { read: (raw: unknown) => T; write: (value: T) => unknown; } export interface UseIDBOptions extends ConfigurableFlush { /** * Watch for deep changes * * @default true */ deep?: boolean; /** * On error callback * * Default log error to `console.error` */ onError?: (error: unknown) => void; /** * Use shallow ref as reference * * @default false */ shallow?: boolean; /** * Write the default value to the storage when it does not exist * * @default true */ writeDefaults?: boolean; /** * Custom data serialization */ serializer?: Serializer; } export interface UseIDBKeyvalReturn { data: RemovableRef; isFinished: ShallowRef; set: (value: T) => Promise; } /** * * @param key * @param initialValue * @param options */ export declare function useIDBKeyval( key: IDBValidKey, initialValue: MaybeRefOrGetter, options?: UseIDBOptions, ): UseIDBKeyvalReturn; ```