Skip to content
beginnerPhase 29 · Web Foundations

Session Storage

Compare sessionStorage with localStorage and understand their different lifecycles.

30m
0 problems
Topic Progress0%

sessionStorage API

sessionStorage provides temporary key-value storage that persists for the browser tab session.

Basic Operations

// Set item
sessionStorage.setItem('tempSearch', 'javascript');
sessionStorage.setItem('formDraft', JSON.stringify(formData));

// Get item
const search = sessionStorage.getItem('tempSearch');
const draft = JSON.parse(sessionStorage.getItem('formDraft'));

// Remove item
sessionStorage.removeItem('tempSearch');

// Clear all
sessionStorage.clear();

// Get length
const count = sessionStorage.length;

// Get key by index
const key = sessionStorage.key(0);

Key Differences from localStorage

Feature sessionStorage localStorage
Lifetime Tab/window session Until manually cleared
Scope Same tab only All tabs (same origin)
Storage Per-tab Per-origin
Clear on close Yes No

Tab Isolation

// Tab 1
sessionStorage.setItem('user', 'Alice');

// Tab 2 (different tab, same origin)
sessionStorage.getItem('user');  // null (isolated!)

// Tab 1 only sees its own data
// Tab 2 has its own separate storage

Common Use Cases

// Multi-step form wizard
const step1Data = { name: 'Alice', email: 'alice@example.com' };
sessionStorage.setItem('wizard-step1', JSON.stringify(step1Data));

// Temporary search/filter state
sessionStorage.setItem('searchQuery', 'javascript tutorials');
sessionStorage.setItem('filterCategory', 'beginner');

// Modal/form state (don't persist after close)
sessionStorage.setItem('modalOpen', 'true');
sessionStorage.setItem('formDirty', 'true');

// Checkout flow
sessionStorage.setItem('cart', JSON.stringify(items));
sessionStorage.setItem('shippingMethod', 'express');

Navigation State

// Remember scroll position
defaults: {
  window.addEventListener('beforeunload', () => {
    sessionStorage.setItem('scrollPos', window.scrollY);
  });

  window.addEventListener('load', () => {
    const scrollPos = sessionStorage.getItem('scrollPos');
    if (scrollPos) window.scrollTo(0, parseInt(scrollPos));
  });
}

sessionStorage vs localStorage

Choosing between sessionStorage and localStorage depends on your data's lifetime needs.

Comparison

Aspect sessionStorage localStorage
Lifetime Tab session Until cleared
Scope Current tab only All tabs
Clear method Close tab Manual clear
Use case Temporary data Persistent preferences
Security Slightly better Same (client-side)

Decision Guide

Need data to persist after tab close?
├── Yes → Use localStorage
└── No → Use sessionStorage

Need data shared across tabs?
├── Yes → Use localStorage
└── No → Use sessionStorage

Is data sensitive?
├── Yes → Neither (use server sessions)
└── No → Choose based on lifetime

Is data temporary for current task?
├── Yes → Use sessionStorage
└── No → Use localStorage

Implementation Patterns

// Pattern 1: Form wizard (temporary)
class FormWizard {
  constructor() {
    this.currentStep = parseInt(sessionStorage.getItem('wizard-step') || '0');
  }

  saveStep(data) {
    sessionStorage.setItem(`wizard-data-${this.currentStep}`, JSON.stringify(data));
  }

  getStepData(step) {
    return JSON.parse(sessionStorage.getItem(`wizard-data-${step}`) || '{}');
  }

  complete() {
    sessionStorage.clear();
  }
}

// Pattern 2: User preferences (persistent)
const preferences = {
  get(key, defaultVal = null) {
    return JSON.parse(localStorage.getItem(key)) || defaultVal;
  },
  set(key, value) {
    localStorage.setItem(key, JSON.stringify(value));
  }
};

// Pattern 3: Hybrid approach
const store = {
  // Persistent settings
  getSetting(key) {
    return localStorage.getItem(key);
  },
  setSetting(key, value) {
    localStorage.setItem(key, value);
  },

  // Temporary state
  getState(key) {
    return sessionStorage.getItem(key);
  },
  setState(key, value) {
    sessionStorage.setItem(key, value);
  }
};

Storage Event Limitation

// sessionStorage does NOT fire storage event across tabs
// (unlike localStorage)

// Must use custom events for same-tab communication
const event = new CustomEvent('sessionStorageChange', {
  detail: { key: 'user', value: 'Alice' }
});
window.dispatchEvent(event);

window.addEventListener('sessionStorageChange', (e) => {
  console.log('Changed:', e.detail);
});

Practice Problems

0/3solved
Build Session Storage Component

Create a reusable React component implementing Session Storage. Include proper state management and accessibility.

Solution
// Production-ready component with:
// - Proper TypeScript types
// - Accessibility (ARIA)
// - Error boundaries
// - Loading states
// - Memoization where needed
Session Storage Testing

Write unit and integration tests for Session Storage using React Testing Library.

Solution
// Test coverage:
// 1. Rendering tests
// 2. Interaction tests
// 3. Edge case tests
// 4. Accessibility tests
Session Storage Performance

Optimize Session Storage for performance. Consider memoization, code splitting, and bundle size.

Solution
// Optimization techniques:
// 1. React.memo / useMemo / useCallback
// 2. Code splitting with lazy()
// 3. Virtual scrolling for lists
// 4. Image lazy loading
// 5. Bundle analysis

Quiz

1. When is sessionStorage cleared?

Question 1 options

2. Can different tabs share sessionStorage?

Question 2 options

3. When should you use sessionStorage over localStorage?

Question 3 options

4. Does sessionStorage fire the storage event across tabs?

Question 4 options

Flashcards

Question

What is sessionStorage?

Answer

Browser storage that persists for the duration of a tab session. Cleared when the tab closes. Isolated per tab.

Question

How does sessionStorage differ from localStorage?

Answer

sessionStorage is per-tab and cleared on close. localStorage is per-origin and persists until manually cleared.

Question

Can different tabs share sessionStorage?

Answer

No, each tab has its own isolated sessionStorage. Data is not shared between tabs.

Question

What is Session Storage?

Answer

Session Storage is a key concept in frontend development.

Question

When to use Session Storage?

Answer

Use Session Storage when building production systems that require reliability, scalability, and maintainability.

Revision Notes

Key Takeaways

  • 1.sessionStorage persists for the tab session only
  • 2.Each tab has its own isolated sessionStorage
  • 3.Cleared when the tab/window is closed
  • 4.Ideal for temporary form data and wizard state
  • 5.Does not fire storage events across tabs

Interview Tips

  • Know the difference between sessionStorage and localStorage
  • Understand tab isolation and session lifetime
  • Know when to use each storage type
  • Understand the storage event limitation

Cheat Sheet

sessionStorage Cheat Sheet

API (same as localStorage):

  • setItem(key, value)
  • getItem(key)
  • removeItem(key)
  • clear()

Key Characteristics:

  • Tab session lifetime
  • Cleared when tab closes
  • Isolated per tab
  • No storage event across tabs

When to Use:

  • Temporary form drafts
  • Multi-step wizards
  • Temporary search/filter state
  • Checkout flow data
  • Don't persist after close

vs localStorage:

  • sessionStorage: Temporary, per-tab
  • localStorage: Persistent, all tabs