🧬 什么是 Valdi?
Valdi 是 Snapchat 开源的 TypeScript-First 跨平台 UI 框架,用 TSX 写声明式界面。
编译后直接生成 iOS / Android / macOS 原生 View,既无 WebView,也无 JS Bridge,性能拉到原生级,却能享受 毫秒热重载 和 npm 生态。
一句话:React 的手感,原生的速度。
🎯 为什么 Snapchat 要自己造轮子?
故事得从 2016 年说起。Snapchat 用户数爆炸,功能迭代越来越快:
React Native刚出,性能瓶颈明显,动画掉帧、List滑动卡顿;Flutter尚未发布,自绘引擎对原生组件的"像素级模仿"让 Snap 担心体验割裂;- 纯原生开发又意味着
iOS/Android两套代码,Feature Flag管理痛不欲生。
于是 Snap 决定"梭哈"——拉起一支小分队,用 TypeScript 写 UI,再让编译器直接吐出 OC/Swift + Java/Kotlin 的原生控件,彻底绕过 JS Bridge。
内部代号 "Valdi"(源自北欧神话的"力量之神"),目标只有一个:让一份代码跑得和原生一样快。
8 年过去,Valdi 经历了 200+ 版本、5000+ 次 MR、日活 8.5 亿用户"在线毒打",终于打磨成 Snap 的"定海神针"。现在,它开源了。
⚔️ Valdi 的核心优势
| 维度 | Valdi 做法 | 收益 |
|---|---|---|
| 语言 | TypeScript + TSX | React 开发者零成本 |
| 渲染 | 编译 → 原生 View | 0 桥接,原生帧率 |
| 性能 | 自动视图回收、增量渲染、多线程 JS | 1 万条聊天滑动内存仅涨 7 MB |
| 热重载 | 文件保存 → 200 ms 内刷新 | 不丢状态、不重启 App |
| 类型安全 | 自动生成 TS ↔ 原生绑定 | 编译期就堵空指针 |
| 混合集成 | 双向嵌入,随用随迁 | 老项目可一页一页渐进替换 |
🛠️ 5 分钟跑起来:iOS & Android 实战
① 前置依赖(一次性)
brew install bazel node
npm i -g typescript tsx
git clone https://github.com/Snapchat/Valdi.git
export PATH=$PWD/Valdi/toolchain:$PATH
② 创建工程
valdi new AwesomeApp
cd AwesomeApp
③ 写个组件(src/ui/Home.tsx)
import { Component } from '@valdi/core';
export class Home extends Component {
onRender() {
return (
<view backgroundColor="#FFFC00" padding={20}>
<label value="Hello Valdi 🎉" fontSize={18} />
<button title="点我" onPress={() => alert('来自原生按钮!')} />
</view>
);
}
}
④ 跑起来
# iOS(模拟器)
cd ios && pod install && cd ..
valdi dev --ios
# 用 Xcode 打开 ios/*.xcworkspace ▶︎ Run
# Android
valdi dev --android
# Android Studio 打开 android/ ▶︎ Run
保存文件 → 200 ms 内看到刷新,break point 直接断在 TS 源码。
📊 Valdi vs React Native vs Flutter
| 维度 | Valdi | React Native | Flutter |
|---|---|---|---|
| 渲染 | 原生 View | JS Bridge + 原生组件 | Skia 自绘 |
| 语言 | TypeScript | JavaScript / TypeScript | Dart |
| 性能 | 原生帧率 | 桥接损耗 | 高但非原生 |
| 包体积 | +1.8 MB | +3~5 MB | +4~7 MB |
| 热重载 | 200 ms | 1 s+ | 500 ms |
| Web 支持 | 2026 Q2 | ✅ | ✅ |
| 生态 | 初建,npm 通用 | 成熟 | 丰富 |
| 混合集成 | 随用随迁 | 复杂 | 需 Flutter Engine |
⚠️ 当前局限 & 风险
| 限制 | 官方 Roadmap |
|---|---|
| 仅macOS / Linux开发 | Windows 版 2026 Q1 |
| Web | |
| 尚未支持 | 2026 Q2 |
| UIKit / Android View 只适配完 | SwiftUI / Compose 进行中 |
| 复杂图表、地图需自桥 | 社区共建 |
| Beta-0.0.1,API 可能微调 | 正式版 2026 Q1 |
建议:先在独立模块或小业务试水,别 all in。
🏁 写在最后:Valdi 能不能成为下一个主流?
React Native 有生态护城河,Flutter 有自绘性能,但 Valdi 走出第三条路线:
把"TypeScript 的研发效率"直接编译成"原生 View 的运行性能",让跨平台第一次不妥协。
8 年实战、8.5 亿用户、4.2 k star,Snapchat 已经把坑踩完。
现在,轮到你上场了。
- 仓库地址 👉:
https://github.com/Snapchat/Valdi