# @analytics/storage-utils

> Storage utility with fallbacks

Latest version **0.4.4** (published 2025-08-07) · MIT license · 0 weekly downloads

## Install

```sh
npm install @analytics/storage-utils
pnpm add @analytics/storage-utils
yarn add @analytics/storage-utils
bun add @analytics/storage-utils
```

## Health

**Score 40/100 (D)** — status: stable.

Positive: esm support; no vulnerabilities.

Warnings: low downloads; no types; pre 1.0.

Negative: stale.

## Facts

| | |
|---|---|
| Version | 0.4.4 |
| Published | 2025-08-07 |
| First published | 2019-10-01 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Dependencies | 5 |
| Unpacked size | 152.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 2663 |
| Author | David Wells |
| Maintainers | davidwells |
| Keywords | analytics, analytics-project, analytics-util, storage, cookies, localStorage, sessionStorage, persistence |

## Links

- npm: https://www.npmjs.com/package/@analytics/storage-utils
- Repository: https://github.com/DavidWells/analytics/tree/master/packages/analytics-util-storage
- Homepage: https://github.com/DavidWells/analytics/tree/master/packages/analytics-util-storage#readme
- npm.io page: https://npm.io/package/@analytics/storage-utils

## Dependencies (5)

- [@analytics/type-utils](https://npm.io/package/@analytics/type-utils.md) ^0.6.4
- [@analytics/cookie-utils](https://npm.io/package/@analytics/cookie-utils.md) ^0.2.14
- [@analytics/localstorage-utils](https://npm.io/package/@analytics/localstorage-utils.md) ^0.1.12
- [@analytics/global-storage-utils](https://npm.io/package/@analytics/global-storage-utils.md) ^0.1.9
- [@analytics/session-storage-utils](https://npm.io/package/@analytics/session-storage-utils.md) ^0.0.9

## Alternatives

- [localforage](https://npm.io/package/localforage.md) — 6.2M weekly downloads
- [localforage-observable](https://npm.io/package/localforage-observable.md) — 30.8K weekly downloads
- [@y/y](https://npm.io/package/@y/y.md) — 30.1K weekly downloads
- [@metaobjectsdev/render](https://npm.io/package/@metaobjectsdev/render.md) — 3.5K weekly downloads
- [@ledgerhq/coin-algorand](https://npm.io/package/@ledgerhq/coin-algorand.md) — 1.1K weekly downloads

## Recent versions

- 0.4.4 (latest) — 2025-08-07
- 0.4.3 — 2025-08-06
- 0.4.2 — 2023-05-27
- 0.4.1 — 2023-05-27
- 0.4.0 — 2022-03-18
- 0.3.0 — 2022-02-05
- 0.2.17 — 2022-01-03
- 0.2.16 — 2022-01-02
- 0.2.15 — 2021-12-12
- 0.2.14 — 2021-10-24
- 0.2.13 — 2021-10-17
- 0.2.12 — 2021-08-05
- 0.2.10 — 2021-07-31
- 0.2.9 — 2021-07-28
- 0.2.8 — 2021-07-26
- … 9 more at https://npm.io/package/@analytics/storage-utils/versions

## README

<!--
title: Storage Utils
pageTitle: Storage Utils
description: Utility library for persisting data
-->

# Analytics Storage Utils

A tiny storage utility library with fallback mechanism in <!-- AUTO-GENERATED-CONTENT:START (pkgSize) -->`1017 bytes`<!-- AUTO-GENERATED-CONTENT:END -->.

By default, `@analytics/storage-utils` will persist values in browser in this order:

1. Try `localStorage`
2. If no `localStorage`, use `cookies`
3. If no `cookies`, use `sessionStorage`
4. If no `sessionStorage`, use `global` window

If you want to specify which storage mechanism to use, use the `options` parameter.

[See live demo](https://utils-storage.netlify.app).

## `setItem`

Set a value.

```js
import { setItem } from '@analytics/storage-utils'

/** 
* Basic usage 
*/

/* Save value to `localStorage` or `cookies` or `global` */
setItem('key', 'value')
// { value: "value", oldValue: "old", location: "localStorage" }

/** Setting values to specific location */

/* Set value to specifically localStorage */
setItem('key', 'otherValue', { storage: 'localStorage' })
// { value: "otherValue", oldValue: "value", location: "localStorage" }

/* Set value to specifically cookie */
setItem('keyTwo', 'cookieVal',  { storage: 'cookie' })
// { value: "cookieVal", oldValue: "null", location: "cookie" }

/* Set value from specifically sessionStorage */
setItem('keyThree', 'xyz', { storage: 'sessionStorage' })
// { value: "cookieVal", oldValue: "null", location: "sessionStorage" }

/* Set value from specifically the global window (or global this in node.js) */
setItem('keyThree', 'xyz', { storage: 'global' })
// { value: "cookieVal", oldValue: "null", location: "cookie" }
```


## `getItem`

Get a value.

```js
import { getItem } from '@analytics/storage-utils'

/* Basic usage */

/* Lookup value from `localStorage` or `cookies` or `global` */
const value = getItem('key')

/** 
 * Getting values to specific locations
 */

// Get value to specifically localStorage
const getLocalStorageValue = getItem('key', { storage: 'localStorage' })

/* Get value to specifically cookie */
const getCookieValue = getItem('key', { storage: 'cookie' })

// Get value to specifically sessionStorage
const getSessionStorageValue = getItem('key', { storage: 'sessionStorage' })

/* Get value from specifically the global window (or global this in node.js) */
const getGlobalValue = getItem('key', { storage: 'global' })

/* Get value from all locations */
const valueObj = getItem('otherKey', { storage: '*' })
// { cookie: undefined, localStorage: "hahaha", global: null }
```

## `removeItem`

Remote a value.

```js
import { removeItem } from '@analytics/storage-utils'

/* Basic usage */

// Will try remove value from `localStorage` -> `cookies` -> `global`
removeItem('key')

/** Removing values to specific locations */

/* Remove value to specifically localStorage */
removeItem('key', { storage: 'localStorage' })

/* Remove value to specifically cookie */
removeItem('keyTwo', { storage: 'cookie' })

/* Remove value to specifically sessionStorage */
removeItem('key', { storage: 'sessionStorage' })

/* Remove value to specifically global */
removeItem('keyThree', { storage: 'global' })

/* Remove value from all locations */
removeItem('otherKey', { storage: '*' })
```

---
_Source: https://npm.io/package/@analytics/storage-utils · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
