Summary
Blotter Builder autosaves your in-progress design to this browser automatically — no manual save action exists or is needed. On your next visit, a Recover unsaved design? dialog offers to restore it. Recovery is stored locally per device/browser (in IndexedDB), expires after 14 days, and is separate from signed-in cloud drafts.
Use it when
- You closed the tab or lost your session without exporting or saving to an account, and want your work back.
- You want to intentionally clear local recovery data — for privacy, or to start clean.
Before you begin
Nothing to prepare — autosave runs automatically from the moment you make any change, whether or not you're signed in.
Steps
- Work normally — every change is autosaved to this browser automatically, confirmed to complete within about a second of an edit.
- If you return to the app (reload, reopen the tab) while a newer
autosave exists than what's currently loaded, a Recover unsaved
design? dialog appears, showing when it was saved, the format, and
that it's
Stored: Only on this device. - Select Restore recovered design to load it — this replaces the current canvas.
- Select Discard recovery to permanently delete the saved snapshot without loading it.
- Select Not now to dismiss the dialog for this session without deciding — nothing is deleted, and the same offer reappears next time you reload.
- To proactively clear local recovery at any time without waiting for the dialog, use Clear local recovery in the Saved drafts panel.
What changes
- Autosave uses IndexedDB (database
blotter-builder-workspace-recovery, storeworkspace-snapshots), notlocalStorage— confirmed directly by inspecting browser storage; this is why it can hold a full design including embedded image data without hittinglocalStorage's much smaller size limit. - A saved snapshot records the format, the full Fabric.js design JSON
(every layer's exact properties), a
scopefield ("guest"when not signed in), and a timestamp — confirmed by reading a record directly. - Not now and Discard recovery behave differently, confirmed by testing each explicitly: after Not now, reloading again shows the same recovery dialog for the same saved snapshot. After Discard recovery, the underlying record is deleted — reloading again shows no dialog.
- Clear local recovery has the same deleting effect as Discard recovery, confirmed by checking storage directly (record count went from 1 to 0), but is available proactively from within the editor — it does not touch your current, active canvas, only the saved snapshot. Autosave resumes automatically the next time you make a change afterward.
Print note
Not applicable — device recovery only affects what's loaded into the editor, never anything about export or print output.
Warnings and limits
- Restoring replaces your current canvas. The dialog's own text says
so:
Nothing will replace the current canvas until you choose restore.If you have unsaved work you want to keep instead of the recovered version, don't select Restore recovered design. - Discard recovery and Clear local recovery are not reversible — once the snapshot is deleted, it's gone; there's no separate undo for this outside of Undo, redo, fit, and recenter's in-session history, which doesn't survive a reload anyway.
- Device recovery is stored only on this device/browser — clearing your browser's site data removes it, and it does not appear on another device or browser, even signed into the same account. It expires after 14 days regardless.
- This is separate from Saved drafts to an account (see Cloud drafts and accounts) — device recovery exists whether or not you're signed in, and doesn't require an account.
Desktop and mobile
The Recover unsaved design? dialog and Clear local recovery button are reachable and behave identically on desktop and mobile — confirmed present at 390 × 844.
Troubleshooting
| Symptom | Likely cause | Recovery |
|---|---|---|
| The recovery dialog keeps appearing every time you reload | You selected Not now rather than Discard recovery, or you're intentionally not restoring yet | Select Restore recovered design or Discard recovery to stop being asked about that specific snapshot |
| Recovery didn't offer your work from a while ago | Recovery expires after 14 days, or site data was cleared | There's no way to recover past that point — export or save to an account regularly if this matters to you |
| Recovery isn't available on a different device | Device recovery is local to one browser/device only | Sign in and use Saved drafts if you need access across devices |
| Clear local recovery doesn't seem to do anything visible | It only affects the saved snapshot, not your current canvas | Check that this was the intended effect — your active design is untouched |
Related topics
- Cloud drafts and accounts
- Version conflicts
- Undo, redo, fit & recenter
- Classic, Wide & Hexagon formats
Verification note
Verified against Blotter Builder on 2026-07-22.
Source notes
Primary observations — all from the live application at
https://blotterbuilder.tdl.fyi, 2026-07-22, using direct IndexedDB
inspection (indexedDB.open / getAll on the relevant object store)
rather than relying on the dialog's text alone.
- Observed — after placing artwork, a new IndexedDB database
blotter-builder-workspace-recovery(version 2) appeared, with a single object storeworkspace-snapshotscontaining one record with keysschemaVersion, savedAt, scope, formatId, title, designJson, currentDraftId, cloudRevision, sequence.scopewas"guest".designJsoncontained a full Fabric.js scene graph, including the placed image's embeddeddata:image/png;base64,...source. - Observed — no corresponding
localStoragekey appeared for the design content itself (only the unrelatedbb_landing_seen_v1key was present). - Observed — making a further edit (drawing a shape) updated the
record's
savedAttimestamp within roughly 750 ms. - Observed — reloading after selecting Not now on a prior visit showed the same Recover unsaved design? dialog again, for the same underlying snapshot.
- Observed — selecting Discard recovery reduced the IndexedDB record count from 1 to 0.
- Observed — selecting Clear local recovery from the Saved
drafts panel (with a live design still on the canvas) also reduced
the record count to 0, without changing the current canvas's visible
content (
Image 1remained in Layers) and without any confirmation prompt. - Observed — making a new edit after Clear local recovery created a fresh record (count returned to 1), confirming autosave resumes automatically rather than being permanently disabled by clearing.
- Observed — at 390 × 844, the Recover unsaved design? dialog appeared with identical content to desktop.
Verification log
| Viewport | Steps tested | Observed result | Date |
|---|---|---|---|
| 1280 × 800 | Place artwork, inspect storage | IndexedDB record created; no localStorage key for design data | 2026-07-22 |
| 1280 × 800 | Make a further edit, re-check record | savedAt updated within ~750ms |
2026-07-22 |
| 1280 × 800 | Reload after Not now | Same recovery dialog reappeared | 2026-07-22 |
| 1280 × 800 | Select Discard recovery | IndexedDB record count → 0 | 2026-07-22 |
| 1280 × 800 | Place new artwork, select Clear local recovery | Record count → 0; current canvas unaffected; no confirmation dialog | 2026-07-22 |
| 1280 × 800 | Make an edit after clearing | New record created automatically | 2026-07-22 |
| 390 × 844 | Reload with a pending snapshot | Recovery dialog present, matching desktop content | 2026-07-22 |