Full Stack Development

Storage



by Tomas Trescak t.trescak@westernsydney.edu.au

Web

/

Storage

  • Beyond cookies: New tools
  • Blog app challenge
  • Let's bust some myths!

Storage

/

Local Storage

    // 
'use client';
import { useEffect } from 'react';

export default function SavePrefs(): JSX.Element {
  useEffect(() => {
    localStorage.setItem('prefs', 'tag:tech');
  }, []);
  const prefs = localStorage.getItem("prefs")
  return <p>Your prefs: {prefs}</p>;
}
  
/app/components/Prefs.tsx
  • Persistent key-value storage
  • 5-10MB size limit
  • ✅ PROS : Big, simple
  • ❌ CONS : Insecure, Browser Bound

Storage

/

Session Storage

    // app/components/Draft.tsx
'use client';
import { useEffect } from 'react';

export default function Draft() {
  useEffect(() => {
    sessionStorage.setItem('draft', 'My awesome post...');
  }, []);
  const draft = sessionStorage.getItem("draft")
  return <p>Draft saved this tab!: { draft }</p>;
}
  
/app/components/Prefs.tsx
  • Tab-only key-value storage
  • 5-10MB size limit
  • ✅ PROS : Isolated, Big, simple
  • ❌ CONS : Insecure, Short-lived

Storage

/

Indexed DB

    export function saveDraft(): void {
  const dbPromise = indexedDB.open('BlogDrafts', 1);
  dbPromise.onupgradeneeded = (event) => {
    const db = (event.target as IDBOpenDBRequest).result;
    db.createObjectStore('drafts', { keyPath: 'id' });
  };
  dbPromise.onsuccess = (event) => {
    const db = (event.target as IDBOpenDBRequest).result;
    const tx = db.transaction('drafts', 'readwrite');
    tx.objectStore('drafts').add({ id: 1, text: 'Draft 1...' });
  };
}
  
/app/lib/draftsDB.ts
  • Browser database
  • GBs size limit
  • ✅ PROS : Huge, powerful
  • ❌ CONS : Complex

Storage

/

Comparison

Feature Cookies Local Storage Session Storage IndexedDB
Size 4KB 5-10MB 5-10MB Tens of MBs
Lifespan Custom/Set Forever Tab closes Forever
Server Access Yes (HTTP) No No No
Security HttpOnly, etc. None None None
Ease of Use Medium Easy Easy Hard
Blog App Use Login, prefs Long-term prefs Drafts per tab Offline drafts

Storage

/

Conclusion

  • Key points
    • Size Matter
    • Lifespan Varies
    • Security Differs
  • Best Practices
    • Cookies for Auth
    • Local for Prefs
  • Pitfalls
    • Don't cram cookies
    • Avoid Sensitive data