Hybrid Native WebView Architecture
混合原生 WebView 架构(Hybrid Native WebView Architecture)是一种桌面应用架构:平台原生 host app 负责窗口、系统 API 和进程管理,主要 UI 运行在系统 WebView 中,业务逻辑和性能关键模块再拆到共享运行时里。
Raycast 2.0 的四层结构
Raycast 2.0 是这类架构的清晰案例:
- Native host app:macOS 使用 Swift/AppKit,Windows 使用 C#/.NET 8/WPF。
- Web frontend:React + TypeScript,共享 UI 代码,按窗口拆分入口。
- Node backend:长期运行,负责数据库、扩展 runtime 和业务服务。
- Rust core:用于文件索引、数据层、同步 schema 等性能或可移植性关键模块。
适用条件
这种架构适合同时满足三类条件的产品:
- UI 规模大,跨平台复用价值高。
- 产品深度依赖 OS 能力,例如全局快捷键、窗口层级、剪贴板、可访问性、文件系统扫描和原生浮层。
- 团队愿意长期维护 WebView、native shell、Node/Rust backend 和 IPC 基础设施。
与 Electron 路线的差异
Electron 把 Chromium、Node、窗口管理和大量跨平台基础设施打包成一个成熟运行时。Hybrid native WebView architecture 把这层运行时拆开,由团队直接使用系统 WebView 和平台项目。
这会提高工程负担:IPC、窗口初始化、进程生命周期、渲染节流和平台差异都需要团队自己处理。它换来的是系统 WebView、native project、平台 API 和细节表现上的控制权。
关键风险
- 多运行时调试复杂度高,问题可能跨 React、IPC、Node、native shell 和 Rust。
- 平台 WebView 行为不同,WKWebView 和 WebView2 的节流、渲染、进程模型需要分别处理。
- 内存基线高于纯 native UI,需要主动做 lazy loading、window teardown、heap 和资源缓存优化。