出来事の日付:2025年11月8日
SnapはValdiをオープンソースのクロスプラットフォーム・ユーザーインターフェース・フレームワークとして公開し、プラットフォームネイティブのビューを維持しながら、共通のTypeScriptコードベースからiOS、Android、macOSのインターフェースを構築する手段を開発者に提供した。このプロジェクトはMITライセンスの下、Snapchatの公開GitHubリポジトリで利用できる。
Valdiは宣言型TypeScriptとTSXコンポーネントを使用し、コンパイラーがそれらをネイティブのインターフェース要素へ直接変換する。Snapによると、この設計は、オペレーティングシステム間でインターフェースコードを共有する際によく使われるWebビューやJavaScriptブリッジには依存しない。代わりに、このフレームワークはネイティブ出力を生成し、TypeScriptをKotlin、Objective-C、Swiftと接続するバインディングを提供する。開発者は、C++、Swift、Kotlin、Objective-Cなどの言語で記述されたモジュールを通じて、プラットフォームAPIやサードパーティー製ネイティブライブラリにもアクセスできる。
一般公開版は、長年にわたる社内での使用実績があるにもかかわらず、ベータ版と位置付けられている。Snapによると、Valdiは重要な機能を含む同社の本番アプリケーションの大部分を8年間にわたり支えてきた。ベータという位置付けは、ランタイムが新しいという意味ではなく、公開されているツールや文書の成熟度が相対的に低いことを反映している。メンテナーがSnap社外の開発者による利用体験に満足した段階で、プロジェクトはベータ版を終了する。
このフレームワークの性能関連機能には、ネイティブビューを再利用するグローバルプール、独立したコンポーネントレンダリング、C++製レイアウトエンジン、表示中のビューだけを生成するビューポート対応レンダリングが含まれる。Snapはこのほか、ネイティブアニメーション、ジェスチャー認識、ワーカースレッド、右から左への表示に対応したFlexboxレイアウトシステムも挙げている。これらはメンテナーが提示したプロジェクト側の主張であり、リポジトリには、開発者が自らの環境で性能を検証するためのベンチマーク例が含まれている。
Valdiの開発ワークフローは、短い反復時間を重視している。モバイルとデスクトップでのホットリロード、TypeScriptの型チェックに対応するほか、ブレークポイント、変数の検査、パフォーマンスプロファイリング、ヒープダンプを含むVisual Studio Code経由のデバッグもサポートする。組み込みのテストフレームワークはコンポーネント単位のユニットテストを網羅し、Bazelとの統合は、ビルドを増分可能かつ再現可能にすることを目的としている。
導入時にアプリケーション全体を一度に書き直す必要はない。既存のUIKitおよびAndroidのビューヒエラルキー内でValdiコンポーネントを利用でき、Valdiのレイアウト内にネイティブビューを埋め込むこともできる。これにより、チームは機能ごとにフレームワークを導入することも、インターフェース全体に使用することもできる。
リポジトリには、基本画面、ナビゲーション、共有状態、ベンチマーク、AI駆動型の動的インターフェースについて、実行可能なサンプルが用意されている。プロジェクトは文書、コードラボ、APIリファレンス、コンポーネントライブラリも公開している。クイックスタート手順では、npmを通じてValdiのコマンドラインツールをインストールし、自動化された開発環境のセットアップを実行した後、プロジェクトを初期構築してからiOSまたはAndroidのサポートを追加する。Xcodeが前提条件として挙げられているのは、macOS向け開発の場合だけである。



