Valdi 解读:Snapchat 开源的跨平台 UI 框架
Snap 内部使用 8 年的跨平台框架 Valdi 开源:TypeScript 写 UI 编译为原生视图,无 JS 桥接。本文解析技术架构与和 React Native 的对比。
Valdi 是 Snap 开源的跨平台 UI 框架:TypeScript 声明式 UI 直接编译为 iOS/Android/macOS 原生视图——没有 React Native 的 JS 桥,性能路径更短。Snapchat 生产环境 8 年验证,但生态从零起步,采用需谨慎评估。
Valdi 是什么
Snap 内部跑了八年的框架——Snapchat 的大量 UI 由它驱动,近期开源。核心主张:声明式 TS UI → 直接编译为平台原生视图(非 WebView、非 JS 桥通信),热重载即时、VS Code 调试开箱。
技术架构
- 无桥设计:RN 的 JS↔原生异步桥是性能瓶颈的历史来源;Valdi 的编译产物直接操作原生视图树;
- C++ 内核 + TS 表层:布局与渲染核心在共享 C++ 层,平台差异原生适配;
- 声明式组件:TSX 风格的组件模型,React 开发者心智可迁移。
与 React Native 的对比
| 维度 | Valdi | React Native |
|---|---|---|
| 架构 | 编译为原生,无桥 | 新架构(JSI)已大幅改善桥开销 |
| 生态 | 从零起步 | 成熟庞大 |
| 生产验证 | Snapchat 8 年 | 无数应用 |
| 团队支持 | Snap 开源(长期性待观察) | Meta + 社区 |
RN 新架构(Fabric/JSI)已大幅回应性能批评——Valdi 的优势需要实测验证而非架构推演。
开发者体验
文档与工具链是开源初期的短板:环境搭建、示例丰富度、社区解答密度都无法与 RN/Flutter 相比——早期采用者的探索成本真实存在。
评估建议
- 关注:跨平台性能敏感的团队技术预研;
- 观望:生态与长期维护承诺(开源项目的 KPI 是社区而不只是代码);
- 不迁移:存量 RN/Flutter 项目没有迁移理由。
常见问题(FAQ)
Q:Valdi 支持 Web 吗?
当前聚焦 iOS/Android/macOS——Web 不在首发范围。跨端含 Web 的项目仍看 RN(+RN Web)或 Flutter。
Q:热重载体验如何?
官方宣称即时热重载——编译为原生的框架做到这点是工程亮点(Flutter 的 Hot Reload 证明了可行性)。
Q:Snap 为什么会开源内部框架?
内部框架开源的常见动机:人才招聘(降低入职学习成本)、生态杠杆(社区共建)。观察其后续投入是判断长期性的信号。
参考文档
本文依据公开文档整理,示例需按项目依赖版本验证;不将文档中的性能描述视为本项目实测结果。