Solution:
Root Cause: Web Browser IndexedDB Cache Desynchronization When writing offline in the browser, Notion writes blocks locally to IndexedDB (
notion-sqlite-db or
localforage). If network connectivity resumes but WebSocket state synchronization fails, reloading the browser tab fetches the authoritative server state, overwriting the local DOM without pushing queued mutations.
Diagnostic Verification: Verify if raw un-synced block mutations are retained in browser local storage before closing the tab:
1 Press F12 or Ctrl + Shift + I (Windows) / Cmd + Option + I (macOS) to open Chrome Developer Tools.
2 Navigate to Application > Storage > IndexedDB .
3 Expand notion-sqlite-db (or notion-db) and select recordValues or operations.
Step-by-Step Fix: 1 In DevTools, open the Console tab.
2 Run the following script to dump locally stored block records from IndexedDB:
Copy
javascript
indexedDB.databases().then(dbs => {
dbs.forEach(dbInfo => {
let req = indexedDB.open(dbInfo.name);
req.onsuccess = (e) => {
let db = e.target.result;
Array.from(db.objectStoreNames).forEach(store => {
let tx = db.transaction(store, 'readonly');
tx.objectStore(store).getAll().onsuccess = (ev) => {
console.log(`[${dbInfo.name}:${store}]`, ev.target.result);
};
});
};
});
});
3 Filter the console output for string fragments matching your missing offline text.
4 Copy the raw string payload or JSON block content and paste it into an external text editor.
5 Re-insert the recovered text manually into your Notion page.
Prevention & Long-Term Monitoring: Avoid refreshing browser tabs while the offline warning indicator is visible in the lower-left corner of the Notion UI.