Dev.to WebDev πŸ›  Dev πŸ‘ 0 πŸ“– 1 min read

I lost two days of research tabs to a Chrome update, so I built Tabcove: automatic, local-only tab backups

Last month Chrome restarted for an update while I had two days of research open across three windows. "Restore" brought back one window. Session Buddy had eaten my saved sessions the week before. So I built the thing I w

Last month Chrome restarted for an update while I had two days of research open across three windows. "Restore" brought back one window. Session Buddy had eaten my saved sessions the week before. So I built the thing I wanted and published it this week.

What Tabcove does

  • Backs up every window on a timer (only when something changed) and keeps a window you close so you can bring it back.
  • Save all windows as a named session with Ctrl+Shift+S, or "save and close all" to free memory.
  • Restore a whole session, one window, or just the tabs you tick. Tabs open lazily, so 200 tabs come back in seconds without eating RAM.
  • Search across every saved session and backup.
  • Keeps pinned tabs and tab groups.
  • No account, no sync server, no analytics. Everything stays in the browser. Export to a file any time; imports OneTab and Session Buddy exports.

Free version keeps 24 hours of backups and 5 saved sessions. Pro is a one-time payment, no subscription.

The hard part: Manifest V3 service workers

MV3 kills the background service worker after about 30 seconds of inactivity, so "back up every 30 minutes" cannot be a setInterval. Tabcove uses chrome.alarms for the timer and chrome.storage.session for in-memory state, and every backup is written as a complete snapshot rather than a diff, so a worker dying mid-write never leaves a half-saved session. Restores are done in batches of windows with tabs created as discarded, which is what keeps 200-tab restores fast.

Stack: Preact + Vite + TypeScript, zero runtime dependencies, about 30 KB zipped.

Links

What is missing for you? I am shipping fixes weekly and would rather build what people actually ask for.

πŸ“° Read the original article on Dev.to WebDev

Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes β€” full credit and traffic to the original publisher.