Skip to content

Offline mode

If the Toado API is unreachable when you capture, the extension queues the capture locally and submits it as soon as it can. This is a safety net, not a supported workflow.

What triggers the offline queue

The extension considers itself offline when:

  • A capture upload fails with a network error (no response), or
  • A capture upload fails with a 5xx response and three sequential retries also fail, or
  • Chrome reports the browser is offline (navigator.onLine === false).

Successful submissions reset the offline state.

Where captures go

When offline, a capture is written to the extension’s local storage (using unlimitedStorage so the queue can grow). Each queued capture includes:

  • The full payload (screenshot, console, network, errors, performance, URL, metadata).
  • The chosen project id.
  • A timestamp.
  • A retry counter.

Visual signals

  • The toolbar icon shows a small badge with the queued count: 1, 5, 12+.
  • The extension popup shows a banner: “1 capture queued offline. Will submit when online.”
  • The options page has a “Queue” tab listing each queued capture with timestamp, target project, and a per-capture Discard button.

How submission resumes

The service worker registers an alarms callback that fires every 60 seconds while the queue is non-empty. On each fire, it:

  1. Checks navigator.onLine. If offline, skip.
  2. Pops the oldest queued capture.
  3. Attempts to submit. On success, the capture is removed from the queue and the badge count decreases. On failure, the retry counter increments.
  4. After 5 consecutive failures on the same capture, it is moved to a “stuck” state and the user is notified via a desktop notification.

Manual flush

In the popup or options page, Submit now triggers an immediate flush attempt, regardless of the alarm schedule. Useful when you have just regained connectivity and do not want to wait up to 60 seconds.

Discarding queued captures

In the options page, Queue tab, each capture has a Discard button. Useful when:

  • You captured something you do not want sent (sensitive page, wrong project).
  • The queue accumulated stale captures from a previous session.

A bulk Discard all is also available.

Limits

LimitDefault
Max queued captures100
Max storage used200 MB

When either is hit, the oldest queued capture is silently dropped to make room. The popup banner notes this happened: “Queue full. Oldest 1 capture dropped.”

Edge cases

Tab closed before submit

The service worker keeps the queue across tab closures. The queue lives in extension storage, not tab memory.

Browser closed before submit

The queue persists across browser sessions. Next time you open Chrome, the alarm picks back up.

Sign-out

Signing out of the extension does not flush the queue. Captures wait until you sign back in (with the same account that owns the target project).

If you sign in as a different user, queued captures from the previous session may fail with forbidden (the new account does not have access to the target project). Discard them or sign back in as the original account.

Quota exceeded

Chrome enforces extension storage quotas. The Toado extension requests unlimitedStorage, but on some restricted profiles that grant fails. If storage is full, the next capture attempt shows a desktop notification and the capture is rejected before it enters the queue.

Where to next