开发桌面应用时,前端开发者长期面临一个取舍:要生态成熟选 Electron,要轻量高效选 Tauri。现在 Vercel Labs 推出了第三条路线——Native SDK,一个不到 6 MB、无需浏览器运行时的原生桌面应用框架。
Native SDK 用一套类似前端模板的 .native 语法编写界面,搭配 Zig 处理状态和业务逻辑,由自研渲染引擎直接将像素绘制到系统窗口,完全绕开了浏览器、WebView 和 JavaScript 引擎。

官方公布的基准数据:
- 完整应用体积:小于 6 MB
- 启动到首帧渲染:约 100 ms
- 内置浏览器:无
- JavaScript 引擎:无
- 运行时解释器:无
Electron 的架构困境
Electron 的核心优势在于前端开发者可以直接使用 Vue、React、Svelte 等框架,将浏览器中能运行的代码无缝迁移到桌面应用。其架构链路很直接:
前端页面 → Chromium → Node.js → Windows / macOS / Linux
这也是 VS Code、Discord、Slack 选择 Electron 的原因——开发效率高、跨平台差异小、Web 生态完整。
但每个 Electron 应用都需要打包一整套 Chromium 和 Node.js 运行时。即使是简单的 Markdown 编辑器或状态栏工具,也必须承载完整的浏览器环境,导致应用体积膨胀、内存占用偏高、启动速度难以达到原生级别。
Tauri:用系统 WebView 瘦身,但未脱离浏览器渲染
Tauri 的方案是调用操作系统自带的 WebView(Windows 的 WebView2、macOS 的 WKWebView、Linux 的 WebKitGTK),后端用 Rust 提供原生能力:
Vue / React / Svelte → HTML + CSS + JavaScript → 系统 WebView → Rust
这种方式显著缩小了安装包体积,也提升了安全性和性能。但它仍然依赖浏览器渲染层,不同平台的 WebView 版本差异可能导致渲染不一致。
Native SDK:界面直接编译为原生二进制
Native SDK 的项目结构默认包含两个核心文件:
src/app.native # 界面定义
src/main.zig # 状态与业务逻辑
.native 文件采用类似前端模板的声明式语法:
{count}
count: {count}
写法与 HTML 和现代前端框架的模板语法相似,但构建时 .native 界面直接编译进可执行文件,由 Native SDK 的自研引擎完成布局、绘制和事件处理,不生成 DOM,不依赖浏览器。
业务逻辑用 Zig 编写,采用 Elm 风格的单向数据流模型:
pub const Msg = union(enum) {
increment,
decrement,
reset,
};
pub const Model = struct {
count: i64 = 0,
};
pub fn update(model: *Model, msg: Msg) void {
switch (msg) {
.increment => model.count += 1,
.decrement => model.count -= 1,
.reset => model.count = 0,
}
}
界面组件只能读取状态和发送消息,不能直接修改数据,所有状态变更集中在 update 函数中处理。这种设计让调试、测试和 AI 代码生成更加稳定可靠。
体积与启动速度实测数据
Native SDK 官方示例应用在 macOS ARM64 环境下的体积和温启动时间:
- Calculator:3.6 MB,启动 71-131 ms
- Markdown Viewer:3.5 MB
- Notes:3.5 MB
- Soundboard:5.7 MB
- System Monitor:3.7 MB
一个完整的 Markdown 编辑器二进制仅 3.4 MB。发布产物主要由业务逻辑、Native SDK 渲染引擎和系统原生框架组成,不包含 Chromium、Node.js、WebView、JavaScript 引擎或模板解释器。
需要注意的是,这些数据来自官方在指定设备和示例应用上的测试,与 Electron 的对比并非同一量级的直接比较。但可以确定的是,去掉浏览器运行时后,应用体积和启动速度会有显著改善。
三种方案对比

| 方案 | UI 技术 | 运行环境 | 最大优势 | 主要代价 |
|---|---|---|---|---|
| Electron | HTML/CSS/JS | Chromium + Node.js | 生态成熟,兼容性强 | 包体和资源占用较高 |
| Tauri | HTML/CSS/JS | 系统 WebView + Rust | 体积小,可复用前端项目 | 受 WebView 和平台差异影响 |
| Native SDK | .native + Zig | 自研原生渲染引擎 | 无浏览器、体积小、启动快 | 生态早期,需学习 Zig |
Electron 适合复杂 Web 产品迁移和高度依赖浏览器生态的应用;Tauri 适合希望继续使用 Vue/React 同时降低安装包体积的团队;Native SDK 则瞄准需要声明式 UI 开发效率、又想摆脱浏览器运行时的项目。
快速上手
安装 CLI 并创建项目:
npm install -g @native-sdk/cli
native init my_app
cd my_app
native dev
项目结构:
src/app.native # 界面、布局、绑定、事件
src/main.zig # 状态和业务逻辑
src/tests.zig # UI 测试
app.zon # 应用配置、权限、窗口、打包信息
assets/icon.png # 应用图标
开发时修改 .native 文件会自动热更新。构建和打包:
native check # 检查项目
native test # 运行测试
native build # 构建发布版本
native package --target macos
native package --target windows
native package --target linux
五平台支持现状
Native SDK 已覆盖 macOS、Windows、Linux、iOS 和 Android:
- macOS:支持最完整,使用 Metal 渲染,集成系统滚动、菜单、托盘、弹窗和输入法
- Windows / Linux:可运行和打包完整应用,当前使用 CPU 软件渲染,GPU 后端仍在完善中
- iOS / Android:实验性支持,可生成 Xcode 工程和调试 APK,无需额外维护 Swift/Kotlin 宿主代码,工具链和真机工作流仍在完善
面向 AI Agent 的开发链路
Native SDK 内置了 Agent 自动化能力。Agent 可以读取运行中的应用界面、查看无障碍树、查找按钮、输入文本、点击组件、验证状态并录制操作:
native automate wait
native automate snapshot
native automate screenshot
项目还提供官方 Agent Skills:
npx skills add vercel-labs/native
安装后,Claude Code、Codex 等 Agent 能获得与当前 Native SDK 版本匹配的开发说明,实现"生成界面 → 编译运行 → 读取窗口 → 操作验证 → 自动修改"的完整闭环。
总结
Native SDK 仍处于 pre-1.0 阶段,API 会继续变化,生态规模远不及 Electron 和 Tauri。但它提供了一个值得关注的方向:保留声明式 UI、组件化开发和热更新的熟悉体验,同时彻底去掉浏览器运行时。一个不到 6 MB、约 100 ms 启动、支持五平台且让 AI Agent 可直接操作测试的原生应用框架,为桌面开发提供了第三种选择。
Native SDK 官网:native-sdk.dev