Loading...
正在加载...
请稍候

Valdi:Snapchat开源的跨平台UI框架

✨步子哥 (steper) 2025年12月05日 16:21

Valdi是Snapchat开发的跨平台UI框架,已在内部使用8年,现已开源。它允许开发者使用TypeScript编写声明式UI代码,然后编译直接生成iOS、Android和macOS的原生视图,从而实现原生级性能,同时保持高开发效率。

关键要点

  • 研究表明,Valdi解决了跨平台开发的经典权衡:它结合了React Native的开发速度和Flutter的性能,但通过直接编译到原生控件,避免了JS桥接的开销,似乎更适合对性能敏感的应用。
  • 证据倾向于Valdi在动画和列表渲染上表现出色,但作为新开源项目,其生态仍需时间成熟;与Flutter相比,它更注重原生集成,而非自绘引擎,这可能减少体验不一致,但也限制自定义。
  • 存在争议:一些开发者认为Valdi可能颠覆React Native,但其他人指出其beta状态和有限文档可能增加采用风险;总体上,它为大型应用提供了一个平衡选项,但小团队可能更青睐成熟框架。

什么是Valdi?

Valdi是一个开源跨平台UI框架,由Snapchat开发,用于编写声明式界面。它使用TypeScript编写UI组件,编译后直接生成原生控件(如iOS的Swift/Objective-C和Android的Java/Kotlin),性能达到原生级,却能享受热重载和完整调试。一句话:把TypeScript的研发效率直接编译成原生的运行性能,让跨平台第一次真正无妥协。

为什么Snapchat要自己造轮子?

从2016年开始,Snapchat用户增长迅猛,但React Native性能瓶颈(如动画掉帧、列表卡顿)明显;Flutter当时尚未发布,其自绘引擎可能导致与原生组件体验割裂;纯原生开发则需维护iOS/Android两套代码,功能迭代痛苦。于是Snapchat组建团队,使用TypeScript编写UI,编译器直接输出原生控件,绕过JS桥接。内部代号“Valdi”(源自北欧神话的“力量之神”),目标只有一个:实现开发者速度与原生性能的完美平衡。经过8年、200+版本、5000+合并请求,以及日活约4.5亿用户的实战检验(注:2025年数据约为444-460百万DAU,文本中8.5亿可能为MAU约900百万的笔误),Valdi已成为Snapchat的核心工具,现已开源。

快速上手

Valdi的入门门槛低,支持5分钟内运行 demo,支持iOS和Android。


Valdi是Snapchat于2025年11月开源的跨平台UI框架,已在生产环境中使用8年,支撑了Snapchat的大部分功能。该框架旨在解决跨平台开发的根本问题:开发速度与运行性能的权衡。开发者使用TypeScript编写声明式UI,框架会编译生成iOS(Swift/Objective-C)、Android(Java/Kotlin)和macOS的原生视图,无需WebView或JS桥接,从而实现原生级性能,同时保留热重载、调试等现代开发体验。

Valdi的GitHub仓库目前有15.7k星标,528 forks,证明了其初步受欢迎度。它支持嵌入现有原生应用,或在Valdi中嵌入原生组件,还允许使用C++、Swift等语言编写性能关键模块,实现类型安全的多语言集成。

历史与开发背景

Valdi从2016年开始内部开发,当时React Native性能不足,Flutter尚未成熟。Snapchat需要一个能处理复杂动画、实时渲染和手势系统的框架,同时简化跨平台代码维护。经过8年迭代、200+版本更新和5000+合并请求,Valdi经受了Snapchat日活用户(2025年约444-460百万)的考验。开源后,它进入beta阶段,重点改善工具和文档。

核心优势

Valdi的核心优势包括:

  • 真原生性能:自动视图回收、独立渲染、C++布局引擎、视口感知渲染,支持无限滚动而无卡顿。
  • 开发者体验:毫秒级热重载、VSCode完整调试(断点、性能分析)、熟悉的TSX语法。
  • 灵活集成:嵌入原生视图、聚语言模块、自动生成绑定、原生API访问。
  • 高级功能:Flexbox布局、工作者线程、本地动画、手势识别、内置测试框架、Bazel构建集成。
  • 规模验证:支撑Snapchat关键功能,如动画和实时渲染。

5分钟跑起来:iOS & Android实战

① 前置依赖(一次性)
  • macOS需Xcode。
  • 安装Valdi CLI:npm install -g @snap/valdi
  • 一键设置:valdi dev_setup(安装所有依赖)。
  • 推荐安装VSCode/Cursor扩展,支持语法高亮、调试和日志。
② 创建工程
  • 创建目录:mkdir my_project && cd my_project
  • 初始化:valdi bootstrap
  • 安装平台:valdi install iosvaldi install android
③ 写个组件(src/ui/Home.tsx)
import { Component } from 'valdi_core/src/Component';

class HelloWorld extends Component {
  onRender() {
    const message = 'Hello World! 👻';
    <view backgroundColor="#FFFC00" padding={30}>
      <label color="black" value={message} />
    </view>
  }
}
④ 跑起来

使用Valdi CLI运行:valdi run iosvaldi run android(推测基于标准CLI用法,官方文档中隐含)。支持热重载,修改即见效。

Valdi vs React Native vs Flutter

以下表格总结了三者的关键比较(基于开源数据和社区讨论)。Valdi作为新人,强调编译到原生;React Native依赖桥接;Flutter使用自绘引擎。

方面 Valdi React Native Flutter
语言 TypeScript JavaScript/TypeScript Dart
渲染方式 编译到原生视图(无桥接) 通过JS桥接调用原生组件 自绘引擎(Skia)
性能 原生级,高动画/列表效率 桥接开销可能导致卡顿 接近原生,但自定义渲染
平台支持 iOS, Android, macOS iOS, Android, Web, Windows iOS, Android, Web, Desktop
生态 新兴(beta),Snapchat背书 成熟,大社区,丰富库 成熟,Google支持,插件丰富
优势 无妥协性能,热重载,聚语言集成 热更新,Web技能复用 一致UI,美观动画
劣势 文档有限,需macOS for iOS 性能瓶颈,桥接复杂 学习曲线,自绘不总匹配原生
适用场景 性能敏感大型App 快速原型,Web开发者 美观一致跨平台App

Valdi在性能上优于React Native的桥接模型,与Flutter类似但更注重原生集成。

当前局限 & 风险

Valdi目前为beta状态,工具和文档需更多开源测试;iOS开发需Xcode和macOS;作为新框架,社区小,第三方库少。先在独立模块或小业务试水,避免全盘采用。

写在最后:Valdi能不能成为下一个主流?

有优势,有挑战,但要走出Snapchat的影子,需要社区贡献和生态成长。把TypeScript的研发效率直接编译成原生的运行性能,让跨平台第一次真正兼顾两者。8年实战、约4.5亿DAU、15.7k star,已经把坑踩完。现在,轮到开发者社区来推动它了。


关键引用:

讨论回复

加载中...
正在加载回复...

正在加载回复...

推荐
智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

领取 2000万 Tokens 通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力
登录