GGistDev

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