Stash and restore your browser tabs. A fast, private, Manifest V3 tab manager for Chrome, Edge, and Firefox.
TabVault is a from-scratch rewrite inspired by (and forked from) the archived better-onetab project. It drops the old self-hosted sync server, Google Drive integration, and third-party analytics in favour of a lean, local-first extension built on Manifest V3.
- Store selected / all / all-windows tabs into named lists
- Restore lists in the current window or a new one
- Keyboard shortcuts and toolbar context menu
- Import / export (JSON and OneTab-compatible text) — imports old better-onetab backups
- Optional light sync via
chrome.storage.sync - No tracking, no remote code, no backend
- Manifest V3 (service worker background)
- Svelte 5 + TypeScript
- Vite +
@crxjs/vite-plugin webextension-polyfillfor cross-browser APIs
src/
├── background/ # MV3 service worker (commands, context menus, messaging)
├── lib/ # framework-agnostic core logic (storage, lists, tabs, exchange)
├── stores/ # reactive Svelte stores over chrome.storage
├── popup/ # toolbar popup app
├── options/ # full-page list manager + settings
├── app.css # shared styles
└── manifest.config.ts # MV3 manifest (Chrome/Edge + Firefox variants)
public/
├── icons/ # extension icons
└── _locales/ # i18n messages (en, zh_CN)
- Build the extension:
npm run build- Open Chrome and go to:
chrome://extensions
-
Enable Developer mode in the top-right corner.
-
Click Load unpacked.
-
Select the generated
dist-chromefolder.
TabVault should now appear in your Chrome toolbar. You can pin it from the extensions menu for easier access.
npm install
npm run dev # Chrome/Edge, HMR
npm run dev:firefox # FirefoxThen load the generated dist-chrome (or dist-firefox) directory as an unpacked extension:
- Chrome/Edge:
chrome://extensions→ enable Developer mode → Load unpacked → selectdist-chrome - Firefox:
about:debugging→ This Firefox → Load Temporary Add-on → pickdist-firefox/manifest.json
npm run build # dist-chrome
npm run build:firefox # dist-firefox
npm run build:all # bothnpm run lint
npm run typecheck
npm testMIT. Original better-onetab code © 2018–2019 Wang Jie; TabVault modifications © 2026 TabVault contributors.
