DEV Community

Chris
Chris

Posted on

I got tired of tab chaos, so I built my own browser

I'm a consultant. On any given day I have Gmail open for three different accounts, GitHub, Jira, Notion, Slack, a staging environment, a production dashboard, and probably Claude or ChatGPT somewhere in there. In Chrome. In one window. With 40+ tabs.

I tried Arc. I tried Vivaldi. I tried Firefox with Tree Style Tabs. They all solve some of the problem, but they all want me to create accounts, sync to their cloud, and trust them with my data.

So I built suprow — a desktop browser that keeps everything local and organizes the web into spaces instead of tabs.

The core idea: Spaces

Instead of tabs that pile up, suprow has spaces — think of them as workspaces. I have Work, Personal, and Chill. Each space has its own apps (bookmarks with structure), its own color, its own identity.

This alone eliminated 80% of my tab chaos.

## Everything stays local

This was non-negotiable for me. Every setting, every password, every piece of history lives in a single JSON file on my disk. I can `cat` it, `grep` it, back it up, version-control it.

Passwords? Encrypted using the OS keychain  macOS Keychain or Windows DPAPI via Electron's `safeStorage`. No master password, no cloud vault, no monthly subscription to a password manager.

Passwords? Encrypted using the OS keychain  macOS Keychain or Windows DPAPI via Electron's `safeStorage`. No master password, no cloud vault, no monthly subscription to a password manager.

Enter fullscreen mode Exit fullscreen mode


json
// ~/Library/Application Support/suprow/spaces.json
// That's it. That's the entire data store.
{
"settings": { ... },
"spaces": [ ... ]
}




No telemetry. No analytics. No "anonymous usage data". Nothing phones home. I have zero interest in knowing how you use the browser. It's your tool, not my data source.


## The tech stack (yes, it's Electron)

I know, I know. Electron. But hear me out:

- **CastLabs Electron** — a fork with Widevine DRM built in. Netflix, Disney+, Spotify work out of the box.
- **Ghostery ad blocker** — integrated at the network layer, no extension needed. Works on YouTube.
- **Single window architecture** — suprow is not Chrome with a different skin. It's one window, multiple `WebContentsView`s, managed by hand. Memory footprint is lower than you'd expect.

The upside: I ship on macOS, Windows, and Linux from one codebase. The downside: it's Electron. I made my peace with that.

## What I learned building this

**1. WebContentsView is powerful but underdocumented.**
Electron's `WebContentsView` (replacing the old `BrowserView`) lets you compose multiple web pages in a single window with pixel-perfect bounds. The docs are sparse, but the API is clean.

**2. Ad blocking at the network level is a game changer.**
Using `@ghostery/adblocker-electron`, I intercept requests before they hit the renderer. It's faster than a content-script-based blocker and doesn't need to inject anything into the page.

**3. Local-first is simpler than you think.**
No server, no auth, no sync conflicts, no GDPR headaches. `fs.writeFileSync` and `JSON.stringify` is my entire backend.

**4. Small UI details matter more than features.**
The nerd quotes, the space colors, the hover-expand Quick Access — these are the things people notice first. Not the ad blocker, not the password encryption.

## What's next

- **Passkey / Touch ID support** for website logins (partially working, Apple entitlements are the blocker)
- **Split-view** for side-by-side browsing
- **Auto-updates** (currently manual downloads)
- Exploring: AI page summarization, userscript support, optional E2E encrypted backup

## Try it

suprow is free, no account required

🌐 [suprow.app](https://suprow.app)
💬 [Discord](https://discord.gg/FEr4qsKN)

Available for macOS (Intel + Apple Silicon), Windows, and Linux.
Enter fullscreen mode Exit fullscreen mode

Top comments (0)