🗄️
Browser & Storage

localStorage & sessionStorage

Browser Mein Data Save Karna
💡 localStorage ek permanent locker hai (browser band karo, phir se kholo, data wahi hai). sessionStorage ek temporary locker hai (sirf current tab/session ke liye, tab band karte hi khaali).

localStorage/sessionStorage browser mein KEY-VALUE data save karte hain, bina server ke — .setItem(key, value), .getItem(key), .removeItem(key), .clear(). Dono sirf STRINGS store karte hain — objects/arrays ko JSON.stringify() karna padta hai save karne se pehle.

Farq: localStorage PERMANENT hai (manually clear na karo, ya user browser data clear na kare, tab tak rehta hai). sessionStorage sirf current TAB/SESSION tak — tab band karte hi gayab.

// Saving:
localStorage.setItem("username", "Aarav");
localStorage.setItem("preferences", JSON.stringify({ theme: "dark" }));

// Reading:
const username = localStorage.getItem("username");
const prefs = JSON.parse(localStorage.getItem("preferences"));

console.log(username);   // "Aarav"
console.log(prefs.theme);  // "dark"

// Removing:
localStorage.removeItem("username");
localStorage.clear();   // sab kuch clear karo

// sessionStorage — SAME API, alag lifetime:
sessionStorage.setItem("tempData", "sirf is tab ke liye");
🗄️
localStorage ek permanent locker hai (browser band karo, phir se kholo, data wahi hai). sessionStorage ek temporary locker hai (sirf current tab/session ke liye, tab band karte hi khaali).
1 / 6
⚡ झट से Recap
  • localStorage = permanent, sessionStorage = sirf current tab tak
  • Sirf strings store hoti hain — objects ke liye JSON.stringify()/parse()
  • Login state, theme preference, form drafts jaise use-cases ke liye common
इस page में (2 subtopics)

Jab ek TAB mein localStorage change hoti hai, doosre OPEN TABS (same origin) ko "storage" event milta hai — cross-tab communication ke liye useful, jaise ek tab mein logout karne par doosre tabs ko bhi bataना.

window.addEventListener("storage", (event) => {
  console.log("Key changed: " + event.key);
  console.log("Old value: " + event.oldValue);
  console.log("New value: " + event.newValue);
});

// Note: event current tab mein NAHI fire hota jisne change kiya,
// sirf DOOSRE open tabs mein fire hota hai
💡Tip: Ye pattern multi-tab apps mein useful hai — jaise ek shopping cart jo saare tabs mein sync rahe, ya login/logout state jo har tab mein reflect ho.

localStorage/sessionStorage ki ek size limit hoti hai (usually ~5-10MB per origin, browser-dependent) — limit exceed karne par QuotaExceededError throw hota hai. Bade data ke liye IndexedDB (browser database) better fit hai.

try {
  localStorage.setItem("bigData", hugeJsonString);
} catch (error) {
  if (error.name === "QuotaExceededError") {
    console.log("Storage full hai! Purana data clear karo.");
  }
}
💡Tip: localStorage chhote, simple data (settings, tokens, preferences) ke liye perfect hai — bade datasets (jaise offline app data, files) ke liye IndexedDB ya server-side storage better choice hai.