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.
- Search proves a browser can feel powerful without becoming bloated when the engine, UI, and product surface are all kept deliberately small.
- Its most unusual feat is not speed alone, but the way it bridges Chrome extension expectations onto a native WebKit core.
- The app treats memory and attention as scarce resources, from sleeping tabs to a local-first omnibox and persistent page surgery.
- Search competes by being a tool you command, not a platform that asks you to adapt to it.
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.
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.
| Browser | Engine | Language | Extensions | Footprint | Positioning |
|---|---|---|---|---|---|
| Search | WebKit | Swift | Chrome via shims | ~3 MB | Minimal macOS tool |
| Safari | WebKit | C / Objective-C | Safari Web Extensions | System app | Default Apple browser |
| Orion | WebKit | Swift / C++ | Chrome and Firefox | Much larger | Feature-rich native browser |
| Min | Chromium via Electron | JavaScript | Limited | Heavy | Minimalist cross-platform browser |
| Arc | Chromium | Swift / web stack | Chrome extensions | Heavy | Browser 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.
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.
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.
| Approach | What it removes | Where it runs | What persists | User feeling |
|---|---|---|---|---|
| Traditional ad blocker | Ads and trackers | Mostly network or script level | Rules, not page edits | Protective |
| Search page surgery | Any annoying page element | Before first paint in the browser | User-authored hide rules | Editable |
| Reader mode | Most page chrome | Browser-rendered article view | Per page or session | Simplifying |
| Search + rules | Whatever you decide | Local and persistent | Saved page-specific edits | Owned |
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.
| Browser | Strength | What Search does differently | Who it speaks to |
|---|---|---|---|
| Safari | Apple integration | Keeps the native engine but removes more product layer | Mac users who want less clutter |
| Orion | Extension breadth | Matches the WebKit base, but stays smaller and more ascetic | Power users who want native feel |
| Min | Minimalist UI | Avoids Chromium and its heavier footprint | People who want lighter software |
| Arc | Modern workflow | Keeps the sidebar energy without the platform baggage | Users 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.
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.