zero-native — Vercel's Zig-Powered Framework for Native Desktop and Mobile Apps

By Prahlad Menon 4 min read

Vercel Labs just dropped zero-native, a new framework for building native desktop and mobile apps using web UI and Zig. If you’ve been watching the Electron-to-Tauri migration and wondering what comes next — this might be it.

What Is zero-native?

zero-native is a Zig-based app shell that wraps your web frontend in a native window using the platform’s own WebView. You write your UI with the web framework you already know — Next.js, React, Vue, Svelte, or plain Vite — and zero-native handles the native layer: windows, event loops, JS-to-native bridging, security policies, and packaging.

Getting started is straightforward:

npm install -g zero-native
zero-native init my_app --frontend next
cd my_app
zig build run

That’s it. You get a native desktop window rendering your web app, with a tiny binary and minimal memory overhead.

Why Zig?

This is where zero-native makes its most interesting bet. While Tauri chose Rust for its native layer, zero-native goes with Zig — and for good reasons.

Zig compiles to small binaries. It has no hidden control flow, no garbage collector, and no runtime overhead. It calls C directly without FFI wrappers, which means accessing platform SDKs like Cocoa on macOS or Win32 on Windows is clean and direct. Rebuilds are fast because Zig’s compiler is fast.

For a desktop app shell, these properties matter. The native layer of your app should be thin, fast, and stay out of the way. Zig delivers that without the learning curve of Rust’s borrow checker — a meaningful consideration when you’re a web developer who just wants to ship a desktop app.

Selectable Web Engines

Here’s where zero-native differentiates from both Electron and Tauri. You choose your web engine:

  • System WebView (default): WKWebView on macOS/iOS, WebKitGTK on Linux, WebView2 on Windows. No bundled browser, so your app stays small — often just a few megabytes.
  • Chromium/CEF (optional): When you need pixel-perfect rendering consistency across platforms, you can bundle Chromium via CEF. Bigger binary, but predictable behavior.

This is configured in a single line in your app.zon manifest:

.web_engine = "system",   // or "chromium"

Tauri only offers system WebView. Electron only offers Chromium. zero-native lets you pick per project — or even switch later without rewriting your app.

Cross-Platform Coverage

zero-native targets the full spread:

  • Desktop: macOS, Linux, Windows
  • Mobile: iOS and Android (via C ABI embedding with libzero-native.a)

The mobile story is particularly notable. The repo includes examples/ios and examples/android showing how a native host app links the zero-native library. It’s not a “write once, run everywhere” abstraction — it’s a shared native core that each platform embeds naturally.

How It Compares

ElectronTaurizero-native
Native languageC++ (Chromium)RustZig
Web engineChromium (bundled)System WebViewSystem WebView or Chromium
Binary size100MB+~5-10MB~2-5MB (system)
Mobile supportNoLimited (v2)iOS + Android
FrontendAny webAny webAny web

Electron’s 100MB+ bundles have been a pain point for years. Tauri solved that with system WebViews and Rust, but introduced Rust as a required skill for anything beyond basic bridging. zero-native takes the small-binary approach further with Zig’s even leaner output, and adds the escape hatch of bundling Chromium when you actually need it.

Security Model

The WebView is treated as untrusted by default. Native commands, permissions, navigation, and window APIs are all opt-in via the app.zon manifest. This is similar to Tauri’s allowlist approach, but configured declaratively in Zig’s build system rather than JSON/TOML.

Who Should Care?

  • Web developers who want to ship desktop/mobile apps without learning Rust or C++
  • Teams already on Next.js/React/Vue/Svelte who want native distribution
  • Anyone frustrated with Electron’s resource usage or Tauri’s Rust requirement
  • Zig enthusiasts looking for a real-world application framework

The Vercel Signal

This coming from Vercel Labs is significant. Vercel has shaped modern web development through Next.js, Turbopack, and their deployment platform. Investing in a native app framework signals that they see the web frontend extending beyond the browser — and that Zig is production-ready enough to bet on.

zero-native is pre-release, so expect rough edges. But the architecture is sound, the developer experience is clean, and the positioning is sharp. If you’re building anything that needs to leave the browser, it’s worth a look.

GitHub: github.com/vercel-labs/zero-native Docs: zero-native.dev