Search: The macOS Browser That Treats the Web Like a Workspace

A tiny Swift browser built on WebKit, with Chrome extension shims, local-first omnibox logic, and persistent page hiding that turns browsing into something you shape.

8 to 10 min read • View on GitHub • More from driceroland

A small browser cabinet sits on a clean desk, with drawers for tabs, extensions, history, and page rules. Chrome-shaped keys fit into side slots, while a compact native motor sits at the center, suggesting a browser built as a precision instrument rather than a platform.
Search compresses browser behavior into a tool you can operate, not a product that expands to fill the screen.
Key Takeaways

A browser that refuses to behave like a browser

Search opens with a useful contradiction. It behaves like a modern browser, but it strips away the usual browser theater: no crowded toolbar, no start page trying to recommend your next move, no account layer nudging you toward a platform relationship. That restraint is the point.

Search is a browser with nothing in the way. A row of tabs — across the top or down the left, your choice — and the page. There is no toolbar, no start page, no sidebar of suggestions, no account to sign into, nothing that wants your attention.

Drice Roland, Creator / Founder of Office Commun · GitHub - driceroland/Search

The project’s own framing is blunt. Search was built by a design studio that lives in a browser and got tired of browsers that behaved like products. In other words, it is not trying to invent a new category. It is trying to recover a tool.

Why WebKit, not Chromium

Search makes a strategic bet that feels almost old-fashioned: use the web engine macOS already ships. That choice keeps the app tiny, fast to launch, and deeply native, with Keychain support and platform features wired in instead of bolted on.

BrowserEngineLanguageExtensionsFootprintPositioning
SearchWebKitSwiftChrome via shims~3 MBMinimal macOS tool
SafariWebKitC / Objective-CSafari Web ExtensionsSystem appDefault Apple browser
OrionWebKitSwift / C++Chrome and FirefoxMuch largerFeature-rich native browser
MinChromium via ElectronJavaScriptLimitedHeavyMinimalist cross-platform browser
ArcChromiumSwift / web stackChrome extensionsHeavyBrowser as a platform

The important distinction is not philosophical purity. It is trade-off management. Search accepts the limits of WebKit so it can avoid shipping an entire Chromium stack, then spends that saved complexity on the parts users actually feel.

The real trick: Chrome extensions without Chrome

This is where Search gets interesting. The project does not just run on WebKit. It builds a compatibility bridge that lets Chrome extensions believe they are speaking to Chrome when they are actually talking to a native Swift layer wrapped around WebKit.

Search’s extension layer is a translation problem. The browser fills in missing Chrome-shaped expectations with native glue, then hands the rest to WebKit.

That matters because extension support is usually where WebKit browsers lose power users. Search narrows that gap by filling in missing APIs like tabs and storage with custom glue, then letting WebKit do the rendering work. The result is not perfect Chrome compatibility. It is enough compatibility to be useful.

// Conceptual shape of the bridge
func callChromeAPI(_ name: String, payload: Any) async throws -> Any {
    if let native = NativeShim.registry[name] {
        return try await native.handle(payload)
    }
    return try await webKitExtensionRuntime.invoke(name, payload)
}

Tabs that sleep instead of hoard memory

Search treats tabs like durable objects, not permanent residents. A tab can be revived quickly, but if it has been idle long enough it gives up its live WebView and keeps only what is needed to reconstruct the session. That is a practical answer to the memory tax that modern browsers quietly impose.

A close-up shows one browser tab folding into a compact stored state on the right, while its live page remains open on the left. A thin line connects the two states, with a small memory gauge and a quiet clock implying that idle tabs can sleep and later wake back up.
The sleep model keeps tabs available without forcing them to occupy memory forever.

The implementation leans on a shared process pool so new tabs feel cheap to open, then relies on sleep logic to keep the app from hoarding resources. That is the kind of design that only makes sense when the browser is built around daily use, not endless accumulation.

The omnibox that stays local until you commit

Search’s address bar behaves more like a quiet command line than a search portal. It checks local history first and waits for Return before making a network request, which makes typing feel private and deliberate instead of broadcast by default.

That small choice changes the tone of the whole app. The browser is not trying to anticipate your next search so it can own the interaction. It is waiting for you to decide what becomes a request.

Hide anything, permanently

Search’s most charming feature may be the least flashy. With its page-surgery tools, a user can remove annoying DOM elements, save the change, and have it reapply before the page paints again. This is not just blocking. It is editing.

ApproachWhat it removesWhere it runsWhat persistsUser feeling
Traditional ad blockerAds and trackersMostly network or script levelRules, not page editsProtective
Search page surgeryAny annoying page elementBefore first paint in the browserUser-authored hide rulesEditable
Reader modeMost page chromeBrowser-rendered article viewPer page or sessionSimplifying
Search + rulesWhatever you decideLocal and persistentSaved page-specific editsOwned

That difference matters because it gives users a direct relationship to the page. Instead of accepting a generic filter list, they can define what the page should stop being. The browser becomes a workspace for shaping content, not just consuming it.

What Search is really competing with

Search does not compete by trying to out-feature every browser. It competes by making a different promise: native speed, less bloat, extension reach, and a UI that stays out of the way.

BrowserStrengthWhat Search does differentlyWho it speaks to
SafariApple integrationKeeps the native engine but removes more product layerMac users who want less clutter
OrionExtension breadthMatches the WebKit base, but stays smaller and more asceticPower users who want native feel
MinMinimalist UIAvoids Chromium and its heavier footprintPeople who want lighter software
ArcModern workflowKeeps the sidebar energy without the platform baggageUsers curious about a stripped-back Arc

That is why Search feels distinct. It is not a browser that tries to become your operating system. It is a browser that tries to disappear into the work you are already doing.

It was built by a design studio that spends its whole day in a browser and was tired of the ones that had become products. This one is a tool.

Drice Roland, Creator / Founder of Office Commun · Search - Office Commun

The larger lesson is bigger than one app. Search shows how much browser behavior can be reimagined without swapping out the rendering engine. If you are willing to be opinionated about tabs, extensions, memory, and page control, a browser can become a precision instrument again.