Storage in JavaScript
Persist data in the browser with Web Storage (localStorage/sessionStorage), cookies, and IndexedDB.
localStorage / sessionStorage
Key/value string stores; synchronous and simple.
localStorage.setItem('token', 'abc')
const t = localStorage.getItem('token')
localStorage.removeItem('token')
localStorage.clear()
sessionStorage behaves the same but scoped to the tab/session.
JSON helpers
Wrap to store objects safely.
function setJSON(key, value) { localStorage.setItem(key, JSON.stringify(value)) }
function getJSON(key, def = null) {
const raw = localStorage.getItem(key)
return raw ? JSON.parse(raw) : def
}
Cookies
Include on HTTP requests; limited capacity; use Secure/HttpOnly (server‑set) and SameSite attributes.
document.cookie = 'theme=dark; Max-Age=86400; SameSite=Lax; Path=/'
Avoid storing sensitive tokens in JS‑accessible cookies; prefer HttpOnly server‑set session cookies.
IndexedDB (overview)
Asynchronous, transactional object store for larger structured data. Use wrappers like idb for ergonomics.
Quotas and privacy
Storage may be cleared by the browser; handle quota exceeded errors; consider user privacy laws.
Node.js
Use files/databases or libraries (e.g., node-localstorage) for local persistence; there’s no localStorage in Node.
Summary
- Use localStorage/sessionStorage for small key/value data (strings)
- Cookies travel with requests; set security attributes server‑side
- IndexedDB for larger structured data; handle quotas and privacy