Working with the Storage API
- Both mechanisms allow you to store key-value pairs, but they differ in their scope and lifespan.
| Feature | localStorage | sessionStorage |
|---|---|---|
| Lifetime | Indefinite (until explicitly cleared) | Only until the tab or window closes |
| Scope | Available across all tabs/windows with same origin | Limited to the tab/window where it was created |
| Storage limit | ~5–10 MB per origin | Same as localStorage |
| Use cases | Theme settings, auth tokens, caches | Shopping cart in a single tab, transient data |
| Data Transfer | Not sent to server | Not sent to server |
Use setItem(key, value) to store a key-value pair. Values are automatically converted to strings.
// Store datalocalStorage.setItem('username', 'frostybee');sessionStorage.setItem('formData', 'incomplete');javascript
Use getItem(key) to retrieve a value. Returns null if the key doesn’t exist.
// Retrieve dataconst username = localStorage.getItem('username'); // 'frostybee'const formData = sessionStorage.getItem('formData'); // 'incomplete'javascript
Use removeItem(key) to delete a specific key-value pair.
// Remove specific itemlocalStorage.removeItem('username');sessionStorage.removeItem('formData');javascript
Use clear() to remove all key-value pairs for the storage object.
// Clear all datalocalStorage.clear();sessionStorage.clear();javascript
Use the length property to get the number of stored key-value pairs.
// Get number of itemsconsole.log(localStorage.length); // e.g., 2console.log(sessionStorage.length); // e.g., 1javascript
Use key(index) to get the key at a specific index.
// Get key by indexconst firstKey = localStorage.key(0); // e.g., 'username'javascript
// Store an objectconst user = { name: 'Frostybee', age: 25 };localStorage.setItem('user', JSON.stringify(user));
// Retrieve and parse the objectconst storedUser = JSON.parse(localStorage.getItem('user'));console.log(storedUser.name); // 'Frostybee'javascript
Note: Always handle potential parsing errors with try-catch:
try { const data = JSON.parse(localStorage.getItem('user'));} catch (error) { console.error('Error parsing JSON:', error);}javascript
function saveUserPreferences() { const preferences = { theme: document.getElementById('theme-selector').value, fontSize: document.getElementById('font-size').value, notifications: document.getElementById('notifications').checked };
localStorage.setItem('userPreferences', JSON.stringify(preferences));}
function loadUserPreferences() { const storedPrefs = localStorage.getItem('userPreferences');
if (storedPrefs) { const preferences = JSON.parse(storedPrefs); document.getElementById('theme-selector').value = preferences.theme; document.getElementById('font-size').value = preferences.fontSize; document.getElementById('notifications').checked = preferences.notifications; }}
// Load preferences when page initializesdocument.addEventListener('DOMContentLoaded', loadUserPreferences);javascript