🟨 JavaScript Q26 / 121

What is localStorage and sessionStorage?

AI-Powered Answer ✓ Answered

In JavaScript, `localStorage` and `sessionStorage` are mechanisms provided by the Web Storage API, allowing web applications to store data persistently or for the duration of a session on the client-side, offering a more robust alternative to cookies for larger data storage.

The Web Storage API

The Web Storage API provides two objects, localStorage and sessionStorage, for storing key-value pairs in a web browser. Unlike cookies, these APIs allow for larger amounts of data (typically 5MB to 10MB) to be stored and are not sent with every HTTP request, reducing network overhead. Data stored is specific to the origin (domain, protocol, and port).

localStorage

localStorage allows data to be stored with no expiration time. The data will persist even when the browser is closed and reopened. It is available across all windows and tabs from the same origin. This makes it ideal for long-term user preferences, cached data, or maintaining a user's logged-in state across sessions.

  • localStorage.setItem(key, value): Stores a key-value pair.
  • localStorage.getItem(key): Retrieves the value associated with a key.
  • localStorage.removeItem(key): Deletes a key-value pair.
  • localStorage.clear(): Deletes all key-value pairs for the current origin.
  • localStorage.key(index): Returns the name of the key at a specified index.
javascript
localStorage.setItem('username', 'Alice');
let user = localStorage.getItem('username'); // 'Alice'
console.log(localStorage.length); // 1 (assuming only 'username' is stored)
localStorage.removeItem('username');

sessionStorage

sessionStorage stores data only for the duration of a single browser session. This means that data stored in sessionStorage is available only until the browser tab or window is closed. Unlike localStorage, it is not shared between multiple tabs or windows, even if they are from the same origin. It's suitable for temporary data that needs to persist across page reloads within the same tab.

  • sessionStorage.setItem(key, value): Stores a key-value pair.
  • sessionStorage.getItem(key): Retrieves the value associated with a key.
  • sessionStorage.removeItem(key): Deletes a key-value pair.
  • sessionStorage.clear(): Deletes all key-value pairs for the current origin.
  • sessionStorage.key(index): Returns the name of the key at a specified index.
javascript
sessionStorage.setItem('tempCartId', '12345');
let cartId = sessionStorage.getItem('tempCartId'); // '12345'
// This data will be gone once the tab is closed.

Key Differences and Use Cases

FeaturelocalStoragesessionStorage
PersistenceData persists until explicitly deleted by code or user. No expiration.Data is cleared when the browser tab/window is closed.
ScopeAccessible across all tabs/windows of the same origin.Accessible only within the specific tab/window where it was set.
ExpirationNoneEnds when the session (tab/window) ends.
Data SharingShared across multiple browser instances for the same origin.Not shared across multiple browser instances for the same origin.

Choosing between localStorage and sessionStorage depends entirely on the persistence requirements of your data. If data needs to remain across user sessions, use localStorage. If data is only relevant for the current browsing session within a single tab, sessionStorage is the appropriate choice.

Important Considerations

  • Security: Both storage mechanisms are vulnerable to Cross-Site Scripting (XSS) attacks, as client-side JavaScript can access the data. Never store sensitive information like user passwords or authentication tokens directly.
  • Storage Limits: Typically 5-10 MB per origin, which is significantly more than cookies but still has limits.
  • Synchronous Nature: All operations (setItem, getItem, etc.) are synchronous, meaning they can block the main thread and impact performance if large amounts of data are processed or stored frequently.
  • Data Type: Only strings can be stored. Objects must be serialized to JSON strings using JSON.stringify() before storing and parsed back using JSON.parse() when retrieving.