deleteIndexedDBDatabase
Deletes an entire IndexedDB database by name.
1/**
2 * Deletes an entire IndexedDB database by name.
3 *
4 * @param dbName - The name of the IndexedDB database to delete.
5 * @returns A Promise that resolves when the database is deleted.
6 */
7export function deleteIndexedDBDatabase(dbName: string): Promise<void> {
8 return new Promise((resolve, reject) => {
9 const request = indexedDB.deleteDatabase(dbName);
10
11 request.onsuccess = () => resolve();
12 request.onerror = () => reject(request.error);
13 request.onblocked = () =>
14 console.warn(`Delete operation for "${dbName}" is blocked`);
15 });
16}
Complete Database Removal
Efficiently deletes the entire database, including all object stores and data, without needing to clear them individually.
Promise-Based Handling
Clean
async/await
-compatible interface for integrating into asynchronous workflows.Minimal API Surface
Offers a direct and focused abstraction over
indexedDB.deleteDatabase
, reducing boilerplate.Blocked State Awareness
Handles the
onblocked
event with a warning, which is often overlooked in lower-level implementations.
Tests | Examples
1import { openIndexedDB } from './openIndexedDB';
2
3test('deleteIndexedDBDatabase - deletes the database by name', async () => {
4 const dbName = 'TestDB_Delete';
5
6 // Create and immediately close DB
7 const db = await openIndexedDB(dbName, 1, {
8 upgrade(db) {
9 db.createObjectStore('items', { keyPath: 'id' });
10 }
11 });
12 db.close();
13
14 // Delete it
15 await deleteIndexedDBDatabase(dbName);
16
17 // Try to open the DB again — should recreate it cleanly
18 const db2 = await openIndexedDB(dbName, 1, {
19 upgrade(db) {
20 db.createObjectStore('items', { keyPath: 'id' });
21 }
22 });
23
24 const storeNames = Array.from(db2.objectStoreNames);
25 expect(storeNames).toContain('items');
26
27 db2.close();
28});
Common Use Cases
Reset Application Storage
Fully remove application data during logout, user profile deletion, or a hard reset feature.
Testing and QA
Clear IndexedDB completely between automated test runs or development sessions.
Version Conflicts or Corruption Recovery
Resolve issues from schema mismatches or corrupted stores by deleting and recreating the database.
Feature Rollback
Remove a previously introduced data layer when disabling or reverting an experimental feature.