Skip to main content

Browser Storage

IndexDB​

IndexDB is ideal for handling large datasets and offline web applications, offering advanced querying and long-term persistence.

const request = window.indexedDB.open("dbName", version);

const transaction = db.transaction(["objStoreName"], "readwrite");
const objextStore = transaction.objectStore("objStoreName");
const request = objextStore.add({ key: "value" });

request.onsuccess = (event) => {
// data saved succesfully
};

request.onerror = (event) => {
// error occured while saving data
};

Key Features​

  • Asynchronous API Doesn't block main thread
  • Key-Value Storage Fast retrieval and indexing
  • Indexed Queries Improving search performance
  • Transactions Blocking and uninterrupted (?)
  • Object Stores Data can be separated into different object stores
  • Persistence Long-term, surviving browser restarts and system crashes

Use Cases​

  • Offline Web Applications
  • Caching
  • Data-Intensive Applications

Advantages Over Others​

  • High storage capacity Megabytes to gigabytes
  • Complex data queries Advanced queries using indexes, enhancing performance
  • Durability Data persists on browser close, or system crash
  • Scalability Scales well with large datasets

Local Storage​

Local Storage is a simple key-value storage option for smaller-scale data with cross-browser compatibility.

let person = {
name: "John",
age: 22,
};

localStorage.setItem("profile", person);
console.log(localStorage.getItem("profile"));

Key Features​

  • Easy-to-use API setItem() and getItem()
  • Synchronous Operations Operates synchronously, blocking the main thread during read and write
  • String-Based Storage Requiring serialisation and deserialization of objects
  • Limited Storage Capacity Typically 5-10MB of data storage

Use Cases​

  • User Preferences and Settings Such as theme or language
  • Form Data Persistence Prevents data loss in page refresh or browser close
  • Simple Data Caching Small and frequently accessed data

Advantages​

  • Simplicity Straightforward API for storing and retrieving data
  • Cross-Browser Compatibility Wide support across modern browsers
  • Persistence Data persists after browser or system restarts
  • Lightweight Ideal for small data with no complex querying or indexing

Session Storage​

Session Storage is suitable for temporary data storage during browsing and clearing data when the tab or browser is closed.

const person = { name: "John Snow", knows: "nothing" };

sessionStorage.setItem("scores", JSON.stringify(person));

/** Gone as soon as tab is closed */

Key Features​

  • Same API as Local Storage
  • Tab-Specific Storage (cleared when the tab is closed)
  • Size Limitations Typically around 5-10MB

Use Cases​

  • Shopping Carts
  • Multi-Step Forms
  • Transient Application State Active tabs or selected options

Advantages​

  • Isolation Tab-specific storage, enhancing privacy and security
  • Transience Clears when the user closes the tab or browser, enhancing privacy and security
  • Lightweight Ideal for small data that does not require long-term persistence