Skip to content

Best Practices

Follow these best practices to use Web Storage safely and efficiently.

// Always use JSON.stringify/parse for non-string values
localStorage.setItem('user', JSON.stringify({ name: 'Alice', id: 1 }));
const user = JSON.parse(localStorage.getItem('user'));
// Handle missing keys (returns null)
const data = JSON.parse(localStorage.getItem('missing') || 'null');
// Don't store sensitive data (passwords, tokens, credit cards)
// Web Storage is accessible via JavaScript (XSS vulnerable)
// Limit frequent writes (debounce saves)
const saveSettings = debounce(() => {
localStorage.setItem('settings', JSON.stringify(settings));
}, 500);
// Catch quota exceeded errors
try {
localStorage.setItem('key', 'large data...');
} catch (e) {
if (e.name === 'QuotaExceededError') {
console.error('Storage full — clear old data');
}
}
DoDon’t
Use JSON for objectsStore sensitive data
Handle null returnsStore large blobs/files
Debounce frequent writesAssume it’s available (private browsing may block)
Catch quota errorsStore JWTs (use httpOnly cookies)