Per-origin engine selection for macOS

A browser that can change its engine.

Morphing Browser I benchmarks Nitro, V8, and SpiderMonkey inside one SwiftUI shell, then picks the best engine for the site you are visiting.

Live modelwww.apple.com
Nitrorun 1/3
V8run 2/3
SpiderMonkeyrun 3/3
Selected engine
Nitro
JavaScriptCore97.1 smoke score

Nitro

Native macOS baseline through WKWebView, used immediately while background benchmarking runs.

Chromium / CEFIPC path fixed

V8

Embedded Chromium path with a helper subprocess and renderer-to-browser IPC for benchmark results.

Gecko / Firefox ESR67.8 smoke score

SpiderMonkey

Bundled Firefox ESR runs headlessly through Marionette to measure Gecko's JavaScript path.

Preliminary benchmark snapshot

Results shown, source withheld.

The public site publishes the paper and summary measurements only. The private Swift, CEF bridge, Xcode project, and build scripts stay inside the repository.

Engine
Load / JS / Memory
Composite
Signal
Nitro
JavaScriptCore
361 ms/2 ms/0.0 MB
Score97.1
Winner in the smoke run on www.apple.com.
SpiderMonkey
Gecko
898 ms/0 ms/511.9 MB
Score67.8
Completed through bundled Firefox ESR Marionette.
V8
Chromium
pending/pending/pending
Scoreretest
IPC fix added after timeout finding; ready for a clean re-run.

Architecture

A private engine lab behind a public research surface.

1

User enters a URL and sees Nitro immediately.

2

The benchmark runner spins up isolated sessions for Nitro, V8, and SpiderMonkey.

3

Each engine returns page load, JavaScript time, memory, and failure state.

4

SwiftData stores the winning engine per origin for future visits.

SwiftUI Shell -> Benchmark Runner -> Engine Sessions
Nitro: WKWebView / JavaScriptCore
V8: CEF helper subprocess / renderer IPC
SpiderMonkey: Firefox ESR / Marionette

Industry paper

Read the full system paper.

The PDF covers the abstract, architecture, benchmark algorithm, preliminary results, engineering challenges, and future work for per-origin engine selection.

Published artifact: compiled PDF only. The LaTeX source, app source, and Xcode project are not copied into the Pages build.

Your browser could not embed the PDF preview. Use the Open PDF button to view the paper.