Fast. Private. Zero bloat.
A Rust-native, ad-free macOS browser built for people who want speed without compromise.
Most browsers are Chromium wrappers β they carry Google's rendering engine, telemetry hooks, and memory overhead whether you want them or not. Blaze takes a different path:
- No Chromium. The core is pure Rust. The macOS shell uses Apple's WebKit as the rendering backend today, isolated behind a clean abstraction layer so a fully independent Servo-based engine can be swapped in without touching a single line of UI code.
- No ads, ever. A Brave-style Rust adblock engine runs natively in-process. Lists compile to a binary trie at startup β filter matching is sub-microsecond (p99 < 1 Β΅s in benchmarks) with zero network round-trips.
- No telemetry, period. Zero data collection, zero crash reporting, zero analytics. What you browse stays on your device.
- Memory efficient. Tabs you haven't visited in a while are automatically suspended, freeing their memory. Background tabs cost almost nothing.
- π₯ Sub-microsecond ad blocking - Rust-native filter engine, no extension overhead
- πͺΆ Lightweight - Tab suspension frees memory automatically
- π« Zero telemetry - No data ever leaves your device
- π Dark & light mode - Follows macOS system appearance instantly
- π Full tab management - Create, close, pin, mute, reorder, move between windows
- π Bookmarks - Toolbar, bookmarks bar, and full manager
- β¬οΈ Downloads - Native download engine with pause/resume/progress
- π¬ Video & audio - YouTube, streaming sites, and any HTML5 media
- π Per-site ad-block exceptions - Allowlist individual domains with one click
- π Session restore - All windows and tabs come back exactly where you left them
- βΎοΈ Multiple windows - Drag tabs out to new windows, merge them back
- π Smart address bar - URLs, searches, and bookmarks in one field
Blaze is not tied to any single rendering engine. The Rust core defines a single WebEngine trait:
pub trait WebEngine: Send + Sync {
fn navigate(&self, url: &str);
fn reload(&self);
fn go_back(&self);
fn go_forward(&self);
fn evaluate_script(&self, js: &str);
fn state(&self) -> EngineState;
}Today, WebKitBackend implements this trait using Apple's WKWebView β giving full compatibility with every website while the native engine matures. Tomorrow, ServoEngine implements the same trait using Mozilla's Servo renderer in pure Rust. Switching engines is a single line of configuration. The Swift UI, the tab manager, the ad blocker, and the download engine have no knowledge of which backend is running.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β macOS SwiftUI Shell β
β TabStrip Β· Toolbar Β· Bookmarks Β· Settings β
ββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββ
β FFI (uniffi / Swift)
ββββββββββββββββββββββββΌββββββββββββββββββββββββββββββ
β blaze-core (Rust) β
β Tab manager Β· Session Β· Downloads Β· Events β
ββββββββββββ¬ββββββββββββββββββββββββ¬ββββββββββββββββββ
β β
ββββββββββββΌβββββββββββ βββββββββ-βΌβββββββββββββββββββ
β WebKitBackend β β ServoEngine (in progress) β
β WKWebView via FFI β β Rust-native renderer β
βββββββββββββββββββββββ ββββββββββββββββββββββββββββ-β
β
ββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββ
β blaze-adblock (Rust) β
β Brave-compatible filter engine Β· < 1 Β΅s p99 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
blaze-browser/
βββ crates/
β βββ blaze-core # Tab, window, session, downloads, bookmarks
β βββ blaze-engine # WebEngine trait + shared types
β βββ blaze-engine-servo# Servo renderer stub (engine-parity tests pass)
β βββ blaze-adblock # Brave-style filter engine
β βββ blaze-net # HTTP, range requests, download worker
β βββ blaze-storage # SQLite profile: history, bookmarks, settings
β βββ blaze-media # Audio/video state tracking
β βββ blaze-ffi # uniffi bindings for Swift
βββ platforms/
β βββ macos/ # SwiftUI shell + XcodeGen project
βββ fuzz/ # cargo-fuzz harnesses
βββ scripts/
βββ build-dmg.sh # Universal (arm64 + x86_64) DMG builder
| Metric | Result | Gate |
|---|---|---|
| Ad filter match (p99) | 917 ns | < 100 Β΅s |
| Filter engine cache load | 3.5 ms | β |
| Cold browser start | < 500 ms | β |
| 10-page RSS growth | < 64 MiB | β |
Benchmarks run with BLAZE_PERF_GATE=1 cargo bench -p blaze-adblock.
- Download the latest
Blaze-x.x.x.dmgfrom Releases. - Open the DMG, drag Blaze.app to Applications.
- Right-click β Open on first launch (unsigned build β Gatekeeper will ask once).
- If the Dock icon looks stale after update, run
killall Dock.
Blaze is currently macOS 13+ only (Apple Silicon and Intel, universal binary). Linux, Windows, Android, and iOS platform stubs are in the architecture but not yet wired up.
Pull requests are welcome. Please run cargo clippy --workspace --all-targets -- -D warnings and cargo test --workspace before opening a PR. The CI pipeline also runs AddressSanitizer, ThreadSanitizer, and fuzz smoke tests on every push.
MIT β see LICENSE.

