{"id":49435,"library":"storage-deck","title":"Storage Deck","description":"A TypeScript library that provides a robust abstraction over browser localStorage and sessionStorage, with automatic in-memory fallback when storage is unavailable or quota is exceeded. Version 2.1.4 (last released) is stable and maintained on GitHub. Key differentiators: seamless overflow handling, custom global storage objects that can hold non-string data (e.g., File objects), and searchable keys with StartWith/EndsWith/Includes support via the Searchable type. Lightweight (~5KB minified), no dependencies, and includes full TypeScript definitions.","status":"active","version":"2.1.4","language":"javascript","source_language":"en","source_url":"git://github.com/pseudosma/storage-deck","tags":["javascript","deck","localStorage","overflow","sessionStorage","storage","web","storage-deck","typescript"],"install":[{"cmd":"npm install storage-deck","lang":"bash","label":"npm"},{"cmd":"yarn add storage-deck","lang":"bash","label":"yarn"},{"cmd":"pnpm add storage-deck","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"Named imports only; no default export.","wrong":"import addToLocalStorage from 'storage-deck'","symbol":"addToLocalStorage","correct":"import { addToLocalStorage } from 'storage-deck'"},{"note":"ESM-only; CommonJS require is not supported.","wrong":"const { retrieveFromLocalStorage } = require('storage-deck')","symbol":"retrieveFromLocalStorage","correct":"import { retrieveFromLocalStorage } from 'storage-deck'"},{"note":"TypeScript type export available; import for type usage.","symbol":"SearchType","correct":"import { SearchType } from 'storage-deck'"},{"note":"TypeScript type export; prefer 'import type' for type-only imports.","symbol":"StorageKeyValuePair","correct":"import type { StorageKeyValuePair } from 'storage-deck'"}],"quickstart":{"code":"import { addToLocalStorage, retrieveFromLocalStorage, clearLocalStorage, removeFromLocalStorage, SearchType } from 'storage-deck';\n\naddToLocalStorage({ key: 'username', value: 'alice' });\n\naddToLocalStorage([\n  { key: 'theme', value: 'dark' },\n  { key: 'language', value: 'en' }\n]);\n\nconsole.log(retrieveFromLocalStorage('username')); // 'alice'\n\n// Find keys starting with 'us'\nconst results = retrieveFromLocalStorage({ searchTerm: 'us', searchType: SearchType.StartsWith });\nconsole.log(results); // [ { key: 'username', value: 'alice' } ]\n\n// Remove by regex\nremoveFromLocalStorage(/^user/);\n\nclearLocalStorage();","lang":"typescript","description":"Shows adding, retrieving, searching (with SearchType), removing, and clearing items using localStorage."},"warnings":[{"fix":"Import SearchType from 'storage-deck' and use SearchType.EndsWith, SearchType.Includes, or SearchType.StartsWith.","message":"When using Searchable keys, searchType must be a valid SearchType enum value; using an invalid string will throw at runtime.","severity":"gotcha","affected_versions":">=2.1.0"},{"fix":"Check for null before using the result as a string.","message":"retrieveFromLocalStorage with a string key returns null if the key does not exist; do not expect an empty array.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Update calls from addToLocalStorage('key', 'value') to addToLocalStorage({ key: 'key', value: 'value' }).","message":"In version 2.0.0, the function signatures changed: addToLocalStorage now accepts an object or array of StorageKeyValuePair objects, not (key, value) pairs.","severity":"breaking","affected_versions":">=2.0.0 <3.0.0"},{"fix":"Design your app to handle data loss if fallback is used (e.g., re-fetch from server).","message":"In-memory fallback storage is not persistent across page reloads; only use it for transient data.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Use the appropriate function group for your storage need.","message":"Session storage functions (addToSessionStorage, etc.) only affect sessionStorage; do not mix with localStorage functions.","severity":"gotcha","affected_versions":">=0.0.0"}],"env_vars":null,"search_vec":"'2.1.4':31 '5kb':70 'abstract':10 'automat':17 'browser':12 'custom':45 'data':55 'deck':2,80,88 'definit':78 'depend':73 'differenti':41 'e.g':56 'exceed':29 'fallback':21 'file':57 'full':76 'github':39 'global':46 'handl':44 'hold':51 'in-memori':18 'includ':75 'javascript':79 'key':40,61 'last':32 'librari':5 'lightweight':69 'localstorag':13,81 'maintain':37 'memori':20 'minifi':71 'non':53 'non-str':52 'object':48,58 'overflow':43,82 'provid':7 'quota':27 'releas':33 'robust':9 'seamless':42 'searchabl':60,67 'sessionstorag':15,83 'stabl':35 'startwith/endswith/includes':63 'storag':1,23,47,84,87 'storage-deck':86 'string':54 'support':64 'type':68 'typescript':4,77,89 'unavail':25 'version':30 'via':65 'web':85","created_at":"2026-06-07T17:01:45.712799+00:00","updated_at":"2026-06-07T17:01:45.712799+00:00","problems":[{"fix":"import { addToLocalStorage } from 'storage-deck';","cause":"Using default import instead of named import.","error":"TypeError: addToLocalStorage is not a function"},{"fix":"npm install storage-deck","cause":"Package not installed or not in node_modules.","error":"Cannot find module 'storage-deck'"},{"fix":"Use { searchTerm: 'value', searchType: SearchType.Includes }.","cause":"Using an object without searchTerm property as a Searchable.","error":"TypeError: Cannot read properties of undefined (reading 'searchTerm')"},{"fix":"import { SearchType } from 'storage-deck';","cause":"Forgot to import SearchType enum.","error":"Uncaught ReferenceError: SearchType is not defined"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/pseudosma/storage-deck","github":"git://github.com/pseudosma/storage-deck","docs":null,"changelog":null,"pypi":null,"npm":"storage-deck","openapi_spec":null,"status_page":null,"smithery":null,"categories":["storage"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}