Tech stack
SmartTab Organizer is a cross-browser extension (Chromium MV3 and Firefox MV2), written entirely in TypeScript. No part of the application relies on a server or a third-party service: the whole codebase runs in the browser.
Application stack
Section titled “Application stack”| Layer | Technology |
|---|---|
| Build and packaging | WXT (multi-target extension framework) |
| UI | React 19, Radix Themes and Radix Primitives |
| Types and validation | Strict TypeScript, Zod for runtime schemas |
| Unit tests | Vitest + Testing Library |
| E2E tests | Playwright (Chrome MV3) |
| Storybook | Storybook 8 + addon-a11y and test-runner with axe-core |
| Documentation | Astro Starlight (this site) |
| Lint and format | ESLint, Prettier |
Browser targets
Section titled “Browser targets”| Browser | Manifest | Status |
|---|---|---|
| Chrome | MV3 | Primary target |
| Edge, Brave, Arc, Opera (Chromium-based) | MV3 | Compatible (same artifact as Chrome) |
| Vivaldi | MV3 | Partial: native grouping is not supported. Deduplication and sessions work. |
| Firefox | MV2 | Compatible (targets pnpm build:firefox, pnpm zip:firefox) |
Browser APIs are accessed through wxt/browser, which normalizes the differences between chrome.* and browser.*. The extension uses a subset that exists on both: browser.tabs, browser.tabGroups, browser.storage, browser.action / browser.browserAction, browser.notifications, browser.scripting.
Storage
Section titled “Storage”| Backend | Contents |
|---|---|
browser.storage.local | Domain rules, settings, sessions (pinned, active, archived), workspaces, categories, UI preferences (expanded state, etc.) |
browser.storage.session | Profile-window map, session drafts, editing reentrancy guard |
No cookies. No network requests beyond what the browser does on its own.
Architecture at a glance
Section titled “Architecture at a glance”See Architecture for pointers to entry points, background modules, and the core hooks.
Contributing
Section titled “Contributing”The repository welcomes contributions. Project conventions (logger, accessibility, i18n, Storybook, writing style) are described in CLAUDE.md. Guidelines for adding a pack or a preset live in src/data/packs/README.md and public/data/presets.json.