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

  1. Work normally — every change is autosaved to this browser automatically, confirmed to complete within about a second of an edit.
  2. 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.
  3. Select Restore recovered design to load it — this replaces the current canvas.
  4. Select Discard recovery to permanently delete the saved snapshot without loading it.
  5. Select Not now to dismiss the dialog for this session without deciding — nothing is deleted, and the same offer reappears next time you reload.
  6. 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, store workspace-snapshots), not localStorage — confirmed directly by inspecting browser storage; this is why it can hold a full design including embedded image data without hitting localStorage's much smaller size limit.
  • A saved snapshot records the format, the full Fabric.js design JSON (every layer's exact properties), a scope field ("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 store workspace-snapshots containing one record with keys schemaVersion, savedAt, scope, formatId, title, designJson, currentDraftId, cloudRevision, sequence. scope was "guest". designJson contained a full Fabric.js scene graph, including the placed image's embedded data:image/png;base64,... source.
  • Observed — no corresponding localStorage key appeared for the design content itself (only the unrelated bb_landing_seen_v1 key was present).
  • Observed — making a further edit (drawing a shape) updated the record's savedAt timestamp 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 1 remained 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