IndexedDB — встроенная в браузер NoSQL-база для хранения structured data (записи, blobs, files) на клиенте. Async API, transactional, поддерживает indexes, 100+ MB storage. Используется в PWA для offline-first + кеш большого объёма. Замена устаревшим WebSQL. Альтернативы: localForage (wrapper), Dexie.js (ORM-like).
Ниже: подробности, пример, смежные термины, FAQ.
const request = indexedDB.open('myDB', 1);
request.onupgradeneeded = e => {
e.target.result.createObjectStore('users', { keyPath: 'id' });
};
request.onsuccess = e => {
const tx = e.target.result.transaction('users', 'readwrite');
tx.objectStore('users').put({ id: 1, name: 'Alice' });
};localStorage — 5-10 MB, sync, string-only. IndexedDB — гигабайты, async, structured objects + indexes.
Да, все modern browsers (Safari iOS, Chrome Android). Safari частично ограничен в PWA context.
При нехватке disk space — да. Для critical data используйте <code>navigator.storage.persist()</code>.