~/hackweb.dev
JavaScript Local Storage & JSON
Quiz
...

JavaScript Local Storage & JSON

beginner · updated Tue Sep 08 2026Contribute

Master localStorage, sessionStorage, and JSON serialization.

JavaScript Local Storage & JSON

Persist data in the browser using storage APIs.

LocalStorage

localStorage.setItem("key", "value");
let value = localStorage.getItem("key");
localStorage.removeItem("key");
localStorage.clear();

Remember: localStorage stores strings only. Use JSON.stringify() and JSON.parse() for objects.

SessionStorage

Same API as localStorage, but cleared when the tab closes.

sessionStorage.setItem("key", "value");
let value = sessionStorage.getItem("key");

Tip: Use sessionStorage for temporary data like form drafts or single-session tokens.

JSON Storage

let user = { name: "John", age: 25 };
localStorage.setItem("user", JSON.stringify(user));
let stored = JSON.parse(localStorage.getItem("user"));

Always re-stringify after modifying — JSON.parse() returns a copy, not a reference.

Shopping Cart Example

class CartManager {
  #key = "cart";
  #get() { let d = localStorage.getItem(this.#key); return d ? JSON.parse(d) : []; }
  #save(cart) { localStorage.setItem(this.#key, JSON.stringify(cart)); }

  addItem(item) { let c = this.#get(); c.push(item); this.#save(c); }
  removeItem(id) { this.#save(this.#get().filter(i => i.id !== id)); }
  getTotal() { return this.#get().reduce((s, i) => s + i.price * i.quantity, 0); }
}

User Preferences Example

class PreferencesManager {
  #key = "preferences";
  #get() { let d = localStorage.getItem(this.#key); return d ? JSON.parse(d) : {}; }
  #save(p) { localStorage.setItem(this.#key, JSON.stringify(p)); }

  get(key) { return this.#get()[key]; }
  set(key, value) { let p = this.#get(); p[key] = value; this.#save(p); }

  load() {
    if (Object.keys(this.#get()).length === 0) {
      this.set("theme", "light");
      this.set("language", "en");
    }
  }
}

Session Manager Example

class SessionManager {
  #key = "session";

  create(userData) {
    let session = { user: userData, expiresAt: new Date(Date.now() + 86400000) };
    localStorage.setItem(this.#key, JSON.stringify(session));
  }

  get() {
    let d = localStorage.getItem(this.#key);
    if (!d) return null;
    let s = JSON.parse(d);
    if (s.expiresAt < new Date()) { this.destroy(); return null; }
    return s;
  }

  destroy() { localStorage.removeItem(this.#key); }
}

Best Practices

  • Use JSON.stringify/parse — For storing objects
  • Use localStorage for persistent data — sessionStorage for temporary
  • Handle errors — Storage might be full or disabled
  • Keep data small — Storage is limited (~5MB)

Common Mistakes

  • Forgetting JSON.stringify — Storing [object Object]
  • Storing sensitive data — Never store passwords in localStorage
  • Not handling errors — Storage may fail silently
  • Using localStorage for auth — Validate sessions server-side