Work / JP Browser

Case study 01

JP Browser

A macOS browser built on the real Chromium engine, with an AppKit shell and a translucent interface.

The problem

Building a custom browser leaves two options: embed an existing engine or write one. Embedding a system webview is less code, but it ties the product to Safari's release cycle and hands over process control and the DevTools protocol.

Type
Native macOS application
Year
2026
Primary language
Objective-C++
Domain
Systems
401,049bytes of Objective-C++
53,290bytes of Objective-C
6languages in the repo

The system

Chromium goes in through the Chromium Embedded Framework, which exposes the whole stack behind a stable C++ API: Blink, V8, the network layer, the multi-process architecture and real DevTools. Everything the user touches, the window, tab strip, toolbar, omnibox, panels and menus, is AppKit written in Objective-C++. It is a Mac application, not a web page wearing a native costume.

Engine
Chromium 151.0.7922.174 through CEF 151.3.24
Interface
AppKit, Objective-C++, NSVisualEffectView translucency
Architecture
arm64, Apple Silicon, five helper processes
Minimum
macOS 12.0
Bundle
com.jakobpapaj.JPBrowser

The result

The bootstrap script downloads the pinned CEF distribution and verifies its SHA-256 before unpacking. The build verifies that the finished bundle contains the framework, all five helper apps and a valid signature before it will package. Output is a signed .app, a .dmg and a SHA256SUMS file.

Objective-C++Objective-CC++CMakeNinjaCEFAppKit

Read the code

Let's build something useful.

Send the problem, not a spec. I reply with an approach and a scope I can hold to.

Start a project