跨平台框架Valdi来了

192 阅读6分钟

在移动开发领域,Snapchat放出了一个王炸, 于近日正式开源其内部研发多年的跨平台 UI 框架 —— Valdi,为开发者社区带来了一股新鲜活力。作为 Snapchat 应用核心渲染引擎背后的驱动力,Valdi 的开源标志着这家以“阅后即焚”闻名的社交平台正积极拥抱开放生态,并为跨平台开发提供一种新的技术路径。

什么是 Valdi?

Valdi(发音为 /ˈvældi/)是 Snapchat 内部历时五年打造的高性能跨平台 UI 框架,最初用于支撑其主应用中的动态 Stories、AR 滤镜界面和即时聊天等复杂交互场景。该框架的核心设计理念是 “轻量、低延迟、高保真”,特别针对社交类应用中常见的动画密集型与实时交互需求进行了深度优化。

与传统跨平台方案不同,Valdi 并非试图“一套代码跑所有平台”,而是采用一种 “平台原生优先 + 共享逻辑层” 的混合架构。它允许开发者用统一的声明式语法描述 UI,但在渲染时尽可能利用平台原生组件(如 iOS 的 UIView、Android 的 View),从而在性能与体验之间取得更优平衡。

开发语言:

使用Typescript声明式的UI开发,非常适合前端同学入手,对前端同学来讲,学习成本大幅降低。

主要特性包括:

  • 声明式 UI 语法:类似 SwiftUI 或 Jetpack Compose 的语法风格,简洁直观。
  • 平台感知渲染:在 iOS 和 Android 上分别调用原生渲染管线,避免“桥接”性能损耗。
  • 高效状态管理:内置响应式状态系统,支持细粒度更新,减少不必要的重绘。
  • AR 与多媒体原生支持:深度集成 Snapchat 的 Camera Kit 和 Lens Studio,便于构建沉浸式社交体验。
  • 极小运行时体积:核心库仅约 2MB,远小于主流竞品,有助于降低应用包体。

Snapchat 表示,已在主应用中使用 Valdi 重构了超过 70% 的 UI,启动速度提升 30%,滑动帧率稳定性显著增强。

Valdi vs. Flutter vs. React Native:三大跨平台框架横向对比

随着 Valdi 的加入,跨平台开发领域形成了三足鼎立之势。下面我们从多个维度对 Valdi、Flutter 和 React Native 进行对比分析。

维度ValdiFlutterReact Native
渲染方式平台原生组件(Platform-native)自绘引擎(Skia)原生组件 + JavaScript 桥
性能⭐⭐⭐⭐☆(接近原生,低延迟)⭐⭐⭐⭐(高帧率,但内存占用较高)⭐⭐⭐(受 JS 桥限制,复杂动画易卡顿)
包体大小⭐⭐⭐⭐⭐(< 2MB 核心库)⭐⭐(+5–10MB,含引擎)⭐⭐⭐(+3–6MB,依赖较多)
开发体验声明式,平台感知,需学习新 DSLDart + Widget 树,热重载优秀JSX + React 语法,前端友好
社区生态初期阶段,Snapchat 主导成熟,Google 支持,插件丰富非常成熟,Meta 背书,社区庞大
适用场景社交、AR、实时交互类应用高性能 UI、独立 App、游戏快速迭代、已有 React 团队、电商等
平台一致性高保真还原各平台设计语言高一致性(但也易“非原生感”)接近原生,但需手动适配差异

关键差异解读:

  1. 渲染哲学不同

    • Flutter 采用“自绘一切”的策略,通过 Skia 引擎在 Canvas 上绘制 UI,确保 iOS 和 Android 表现完全一致,但牺牲了部分平台原生感和内存效率。
    • React Native 依赖 JavaScript 与原生模块通信,虽使用原生控件,但频繁的跨桥调用在复杂场景下成为性能瓶颈。
    • Valdi 则走中间路线:用统一语言描述 UI,但编译/运行时生成平台原生视图树,既保留一致性开发体验,又最大限度利用系统优化。
  2. 对 AR 与相机的支持: Valdi 在这方面具有天然优势。作为 Snapchat 内部框架,它原生集成了 Lens 和 Camera 能力,开发者可轻松调用高级 AR 功能,而 Flutter 和 React Native 需依赖第三方插件(如 flutter_arreact-native-ar),稳定性与功能完整性往往受限。

尽管 Valdi 在性能、轻量化和社交场景优化方面展现出显著优势,但作为一个新兴框架,它目前仍存在一些明显的局限性和潜在缺陷:

1. 生态体系尚不成熟

  • 插件/库稀缺:Valdi 刚开源不久,缺乏成熟的第三方组件库、UI 工具包或功能插件(如支付、地图、数据库等),开发者往往需要自行实现或桥接原生代码。
  • 工具链不完善:调试工具、性能分析器、热重载(Hot Reload)等开发体验工具远不如 Flutter 或 React Native 成熟,可能影响开发效率。

2. 学习曲线较陡,文档有限

  • 官方文档覆盖不足:尽管基础文档已上线,但在高级用法、错误处理、性能调优等方面的指导仍显薄弱,社区问答和教程几乎为零。

3. 平台支持范围有限

  • 仅支持移动端:目前 Valdi 仅支持 iOS 和 Android,不支持 Web、桌面(macOS/Windows/Linux)或嵌入式平台,当然 鸿蒙 肯定不支持啦,无法满足“全平台”开发需求。
  • 对旧系统兼容性弱:要求 iOS 14+ 和 Android 8.0+,可能排除部分新兴市场或低端设备用户。

4. 社区与人才储备匮乏

  • 社区规模极小:几乎没有 Stack Overflow 讨论、GitHub Issues 积累或第三方教程,遇到问题难以快速解决。

5. 不适合通用型或复杂企业应用

  • 强社交/AR 导向:Valdi 的设计初衷是优化 Snapchat 这类高互动、强视觉的社交应用,对于传统表单类、后台管理系统或复杂业务逻辑的应用,可能“大材小用”甚至“不适用”。
  • 状态管理与架构支持弱:相比 Flutter 的 Riverpod/Bloc 或 React 的 Redux/Zustand,Valdi 目前缺乏成熟的架构指导和状态管理方案。

未来展望

Valdi 的开源不仅是 Snapchat 技术实力的展示,更可能推动跨平台开发向“性能优先、体验导向”的新范式演进。虽然目前其生态尚处早期,但凭借 Snapchat 庞大的用户基数和 AR 技术积累,Valdi 有望在社交、直播、短视频等垂直领域快速获得开发者青睐。

对于企业而言,选择框架需结合业务特性:

  • 若追求极致性能与原生体验,且聚焦社交/AR 场景,Valdi 值得密切关注
  • 若需快速跨端交付、团队熟悉 Web 技术,React Native 仍是稳妥之选
  • 若重视 UI 一致性与高帧率动画,且可接受稍大包体,Flutter 优势明显

随着 Valdi 持续迭代与社区共建,跨平台开发的“三体问题”或将迎来新的平衡点。开发者不妨保持开放心态,拥抱这场由 Snapchat 掀起的技术新浪潮。

项目地址github.com/snapchat/va…
文档官网valdi.dev