Snapchatの秘密のReact Nativeキラー

スナップチャットは8年間、React Nativeを置き換えるためのフレームワークを秘密裏に開発してきました。今やそのフレームワークが公開されましたが、最大の疑問は、それがすでに時代遅れなのかどうかということです。

Stork.AI
Hero image for: Snapchatの秘密のReact Nativeキラー
💡

TL;DR / Key Takeaways

スナップチャットは8年間、React Nativeを置き換えるためのフレームワークを秘密裏に開発してきました。今やそのフレームワークが公開されましたが、最大の疑問は、それがすでに時代遅れなのかどうかということです。

重大なニュース、8年の歳月を経て発表される

数百万のユーザーに静かにコードを出荷してから8年、Valdiはついに光の下に現れました。Snapchatが独自に開発したクロスプラットフォームフレームワークは、かつては古いAndroid電話でストーリーをスムーズに保つための内部実験に過ぎませんでしたが、今や「ネイティブ」アプリの構築方法を根本から変えることを約束するオープンソースプロジェクトとなっています。

Valdiの核には、シンプルでありながら攻撃的な提案があります:TypeScriptでアプリを記述し、iOS、Android、macOSにおいて真のネイティブコードとして配信します。WebViewは不要、ランタイムJavaScriptエンジンも不要、JSONのスレッド間の移動もありません。あなたのJSXフレーバーのUIはプラットフォームネイティブビューにコンパイルされ、レイアウトはYogaによって駆動され、ピクセルはSkiaによって描画されます。

従来のクロスプラットフォームスタック、例えば初期のReact Nativeは、JSスレッドとネイティブ層間でメッセージを送受信するJavaScriptブリッジに依存しており、フレームごとに何百回も行われることがありました。すべてのプロップの更新、ジェスチャー、レイアウトの変更はその境界を越えなければならず、遅延、ジャンク、メモリのオーバーヘッドを引き起こしていました。Valdiは、ビルド時にブリッジを消去することで、その全てのアーキテクチャを回避します。

長寿命のJSランタイムの代わりに、ValdiはBazelを活用して、TypeScriptをネイティブモジュールに直接コンパイルします。レイアウトにはC++のYogaエンジンを使用して一貫したFlexbox動作を実現し、Skiaは高性能な2Dグラフィックスをプラットフォーム全体で描画します。その結果、AppleプラットフォームではUIKitやAppKitのビュー、Google側では本物のAndroidビューのように、まるで一級のネイティブアプリのように振る舞います。

開発者体験は、最新のReact NativeおよびFlutterのセットアップに匹敵するか、それを上回ることを目指しています。Valdiはインスタントホットリロードをサポートしており、UIの変更が数ミリ秒で反映されます。また、VS Codeと統合されており、ブレークポイントやパフォーマンスプロファイリングを含む完全なデバッグが可能です。Snapchatのチームは、カメラ、チャット、ディスカバー機能を導入するためにこのループを何年も使用しており、すべての変更のためにSwiftやKotlinに切り替える必要はありませんでした。

オープンソースの公開は、2025年に予想される反応を引き起こしました:興奮と疑念が交錯しています。初期の採用者は、「リアクトだけど実際はネイティブ」という感覚や、スマートフォンとデスクトップを横断する一つのTypeScriptコードベースの約束を称賛しています。一方、懐疑的な声は、インストーラーの粗さ、Snapchatによる不透明なロードマップの管理、そしてすべてのGitHubの課題に立ち込める素朴な疑問を指摘しています:なぜReact NativeやFlutterがすでに支配する中でValdiに賭けるのか?

機械の中の幽霊: なぜヴァルディが生まれたのか

イラスト: 機械の中の幽霊: バルディが生まれた理由
イラスト: 機械の中の幽霊: バルディが生まれた理由

2017年のReact Nativeは、4億人以上のデイリーユーザーを持つカメラファーストのソーシャルネットワークの基盤というよりも、有望な実験のように見えました。Facebookのフレームワークはデスクトップサポートがなく、成熟しないツール、そして別スレッドで実行されるJavaScriptブリッジを介してすべてのUI更新を押し込むランタイムモデルを持っていました。滑らかで60fpsのインタラクションに全UXを賭ける企業にとって、そのブリッジは特徴ではなく、負担となっていました。

初期のReact Nativeにおけるすべてのジェスチャー、スクロール、およびアニメーションは、プロパティやイベントをJSONのようなペイロードにシリアライズし、それをブリッジを介して送信し、ネイティブ側でデシリアライズする必要がありました。このマシャリングコストは、ガタつき、フレームのドロップ、デバッグが難しいレースコンディションとして現れました。ネイティブビューの上にメモリを多く消費するJSランタイムを追加すると、1つの一貫したアプリではなく、状態を常に同期する2つの世界が存在していました。

Snapchatの製品方向性は、それらのトレードオフを受け入れられないものにしました。このアプリは、フルスクリーン動画、複雑なジェスチャーナビゲーション、そして遷移が瞬時に消えるユーザーインターフェースを重視しており、遅延のスパイクには厳しい影響を受けました。エンジニアは、予測可能なフレーム時間、低価格帯のAndroidスマートフォンに対する厳しいメモリ制限、そしてネイティブのSwiftまたはKotlinのように振る舞いつつ、機能チームがJavaScriptの速度で反復できるUIコードを必要としていました。

その時代のReact Nativeは、Snapchatが重視していたプラットフォームクラスをすっ飛ばしていました。信頼できるmacOSの話はなく、AppKitのビューへのコンパイルもなく、iOS、Android、そして社内のデスクトップクライアントで同じUI層を再利用する道もありませんでした。真の同時実行性は理論上のものであり、バックグラウンド作業は依然としてビジネスロジックやレイアウトで既に過負荷になっている単一のJSイベントループを通じて行われていました。

Snapは戦略的な決断を下しました:エコシステムが成長するのを待つのをやめました。React Nativeのロードマップに賭ける代わりに、同社はValdiに投資しました。ValdiはTypeScriptを優先するフレームワークで、ネイティブコードに直接コンパイルされ、ブリッジなしでOSとやり取りします。Bazelはマルチプラットフォームのビルドを調整し、Yogaはレイアウトを標準化し、Skiaはレンダリングを担当しましたが、アーキテクチャの決定はSnap自身のパフォーマンスの苦痛から生まれました。

その社内開発のベットによって、Snapchatはその特定のワークロード—高速カメラ、無限スクロールフィード、そして重いアニメーション—に最適化できるようになりました。それはReact NativeがFabric、ブリッジレスアーキテクチャ、または本格的なデスクトップ志向を手に入れる何年も前のことです。

「アンダー・ザ・フッド:ヴァルディのエンジンを解剖する」

Snapchatの新しいフレームワークは、驚くほど工業的なエンジンを隠しています。パステル調のUIとゴーストアイコンの下には、BazelYoga、そしてSkiaを基盤としたパイプラインがあり、これはGoogle規模のバックエンドやChromeのグラフィックススタックを支える同種の強力なマシンです。Valdiは、そのスタックをiOS、Android、macOS用のフロントエンド工場ラインに変えます。

Bazelはビルドオーケストレーターとして中心に位置しています。TypeScript、アセットバンドル、ネイティブコードを処理し、再現可能なビルドと攻撃的なキャッシングを伴ったプラットフォーム固有のバイナリを生成します。この選択により、Valdiはプロトタイプのレンズピッカーから数百万行のアプリにスケールすることができ、エンジニアが脆弱なXcodeやGradleの設定に悩まされることを防ぎます。

レイアウトは、Facebookの信頼性の高いFlexboxエンジンであるYogaを通じて行われます。Valdiは、レイアウトを三回再実装するのではなく、フレックスプロパティ、マージン、およびアライメントを記述したプラットフォームに依存しないツリーをYogaに供給します。同じレイアウトの数学がUIKit、Android Views、AppKitを駆動し、これによりSnapchatのUIは電話、タブレット、デスクトップ間でピクセル単位で一貫しています。

レンダリングはSkiaに依存しており、これはChromeやAndroidの背後にある2Dグラフィックスエンジンです。Valdiは高レベルのコンポーネントをネイティブビューにマッピングしたり、Skiaサーフェスに直接描画してカスタムコントロールやシェーダー、アニメーションを作成したりできます。このハイブリッド戦略により、標準のボタンを高度にカスタマイズされたAR時代のUIと組み合わせ、ウェブビューに戻ることなく実現しています。

開発者の視点から見ると、すべてはJSXを含むTypeScriptクラスから始まります。あなたは、onCreateやonRenderのようなメソッドがJSXタグを返す、Reactコンポーネントに疑わしく似たものを書くことになります。その後、BazelがTypeScriptを中間表現にコンパイルし、JSXをビュー階層に変換し、その階層をプラットフォームネイティブのビュー階層に接続します。

事前に、Valdiはすべてのプロパティ、イベント、スタイルに対してネイティブバインディングを生成します。つまり、ランタイムでの動的リフレクションやJSONの送受信は不要です。型情報はTypeScriptからSwift、Kotlin、C++のヘッダーに流れ込み、コンパイラーはホットパスをインライン化し、不要なコードを削除できます。

C++はレイアウトおよび差分エンジンの中心に位置しています。重要な処理—ツリーの調整、Yoga呼び出し、Skia描画のディスパッチ—は、最小限のマーシャリングでメインスレッド上のC++で実行されます。プロパティをブリッジ越しにシリアライズする代わりに、Valdiは生のポインタと密にパックされた構造体を渡し、フレームごとのオーバーヘッドをマイクロ秒単位に削減しています。

それを初期のReact NativeのようなJavaScriptベースのランタイムと比較してみてください。これらのスタックは、ボタンが移動したりリストがスクロールしたりするたびに、シリアル化のコストを支払いながら、レイアウトとロジックをJSブリッジを通して処理しました。一方、Valdiの事前コンパイルモデルは、実行時の柔軟性を犠牲にして、決定論的なパフォーマンスと遥かに小さいGC圧力を実現しています。

このアーキテクチャは、ウェブビューラッパーよりもゲームエンジンに近いように見えます。ホットリロードはまだ機能しており、Bazelとランタイムが更新されたTypeScriptモジュールをネイティブシェルにスワップしますが、最終的に出荷されるアーティファクトは全くJavaScript VMなしで動作します。内部を詳しく学びたい方は、Valdi - 公式GitHubリポジトリが完全なビルドグラフ、C++コア、TypeScriptツールを公開しています。

リアクト・ドッペルゲンガー:お馴染みの顔

React開発者はValdiファイルを開くと、フレームワークを切り替えたことをほとんど忘れることができます。コンポーネントは旧式のReactクラスコンポーネントのように見え、`componentDidMount`や`render`の代わりに`onCreate`や`onRender`といったライフサイクルスタイルのメソッドがあります。状態は`this`に存在し、メソッドはクラスに付随し、UIは`onRender`からJSXとして返されます。

ValdiのJSXは仮想DOMノードを描画しません。ネイティブのiOS、Android、およびmacOSのビューに直接コンパイルされ、レイアウトはYogaによって管理されます。開発者は、CSSのように感じる`flexDirection`、`justifyContent`、`alignItems`といったFlexboxスタイルのプロパティを書きますが、パイプラインはそれらを低レベルのレイアウト命令に変換します。

フィードアイテムのValdiレイアウトは、ネイティブビューにマッピングされるコンポーネントに`padding`、`margin`、`borderRadius`などのプロパティを使ったJSXを使用するかもしれません。内部では、Yogaがプラットフォーム間で位置とサイズを同一に計算し、一方でSkiaはカスタム描画が必要な場合に2Dグラフィックをレンダリングします。その結果、Reactツリーのように振る舞いながら、C++のUIエンジンのように動作します。

Snapchatは明らかに、既にTypeScriptとJSXを使いこなしているウェブエンジニアをターゲットにしています。UIKit、Jetpack Compose、AppKitを学ぶ代わりに、開発者はコンポーネント、プロップ、およびデコレーターの作成を続けています。このデザインの選択により、JavaScriptやフロントエンドチームがメンタルモデルを再構築することなく、ネイティブ機能を実装するためのハードルが下がります。

開発者体験はValdiの提案の中心にあります。インスタントホットリロードは、TypeScriptの変更をミリ秒単位で実行中のシミュレーターやデバイスに反映させ、XcodeやAndroid Studioで30〜90秒かかる可能性がある完全なネイティブビルドを回避します。状態はリロードを経ても生き残ることが多く、レイアウトや動作を調整する感覚はウェブアプリの編集に近いものとなります。

フルVS CodeデバッグサポートがReactのドッペルゲンガー行為を完成させます。エンジニアはTypeScriptにブレークポイントを設定し、変数を検査し、コンパイルされたアプリがiOS、Android、またはmacOSで実行されている間にValdiコンポーネントのロジックをステップ実行できます。これにより、ウェブツールとネイティブ実行の境界が曖昧になります。

ネイティブのスピード、ネイティブの痛みなし

イラスト:ネイティブなスピード、ネイティブな痛みなし
イラスト:ネイティブなスピード、ネイティブな痛みなし

ネイティブフレームワークは、テーブルビューセルやコンポーザブルレイアウトの再利用にこだわるが、Valdi はその考え方をすべてのコンポーネントに組み込んでいる。個別の画面に再利用を任せるのではなく、Valdi はリスト、グリッド、またはカルーセルが取得して返却できるネイティブビューのグローバルプールを維持している。これにより、アロケーションが減少し、アロケーターの負担が軽減され、Android におけるガベージコレクターへの圧力も軽くなる。

自動ビュー再利用は、実装を思い出すパターンとしてではなく、フレームワークレベルで行われます。コンポーネントが画面外にスクロールすると、Valdiはそれを切り離し、プロップをリセットし、プールに戻します。新しいアイテムはそのプールから取得されるため、たとえ10,000アイテムのフィードであっても、わずか固定されたネイティブビューインスタンスのセットを再利用します。

ビューポートを意識したレンダリングは、これをさらに進めます。Valdiは、どのコンポーネントが表示されているビューポートと交差しているかを追跡し、それらのみをマウントします。さらに、上下に小さなバッファを追加します。そのウィンドウの外にあるものは更新を一時停止し、軽量な表現に脱水することさえできます。

インフィニットスクロールフィードがデフォルトになり、パフォーマンスプロジェクトではなくなります。スナップチャットスタイルのディスカバーやスポットライトスタイルの垂直フィードは、常に数十のライブビューに触れることなく、制限のないコンテンツをストリーミングできます。Skiaレンダリングと組み合わせることで、ミッドレンジのAndroidハードウェア上で特別な調整なしにスクロールパフォーマンスが60fpsに近づきます。

独立したコンポーネントのレンダリングサイクルは、Valdiにさらなる優位性を与えます。各コンポーネントは自分自身のレンダーループを持っているため、子コンポーネントを更新しても親コンポーネントの差分が自動的にトリガーされることはなく、その逆も同様です。これにより、調整が不十分なReactやReact Nativeツリーに悩まされる「更新の滝」が解消されます。

Valdiのスケジューラーは、ドラッグジェスチャーやテキスト入力のような入力ドリブンな更新を、低優先度のバックグラウンド再描画よりも優先できます。チャットメッセージバブルがアニメーションで表示されても、会話リスト全体の再調整は必要ありません。その結果、レイアウトパスが減り、計測の呼び出しが減り、より予測可能なフレーム予算が実現します。

最新のSwiftUIやJetpack Composeで構築された最適化されたネイティブアプリに対抗して、Valdiの理論的な利点は同時に三つのレイヤーから得られます。それは以下を組み合わせています: - グローバルビュー・プーリング - ビューポートに対応したマウント - 切り離されたコンポーネントレンダーサイクル

SwiftUIはリストを遅延レンダリングでき、Composeは基本的に再利用を行いますが、アプリチームは依然としてセルの再利用、ページネーションウィンドウ、スロットル更新といったパターンを再実装しています。Valdiはそのような決定をフレームワーク内で中央集約します。これにより、小規模なチームでもカスタムリサイクラーや差分アルゴリズムを一行も書かずに、手動で調整されたネイティブのように振る舞うクロスプラットフォームのフィードを出荷することが可能になります。

世界は進んだ:React Nativeの逆襲

2025年のReact Nativeは、8年前にSnapchatが評価したフレームワークとはほとんど似ていません。Metaは悪名高いJavaScriptブリッジを取り除き、ネイティブビューと直接対話する統一C++コアに置き換えました。レイテンシーは低下し、メモリ使用量は安定し、“ジャンク”はデフォルトの仮定からパフォーマンスのバグへと変わりました。

Fabric、React Nativeの現代的なレンダリングアーキテクチャは、その重い作業のほとんどを担っていました。ブリッジを通してメッセージをバッチ処理する代わりに、FabricはReactとネイティブのための単一のツリーを保持し、同時レンダリングと詳細な優先順位付けを可能にします。React 18の同時機能は、モバイルUIに直接流れ込み、バックグラウンド更新がスクロールやタッチ入力を妨げることはなくなりました。

Fabricでは、レイアウトは依然としてYogaに依存していますが、より密接な統合がされています。レイアウトの計算はC++で行われ、iOS、Android、Windows間で共有可能です。また、React Nativeは、コンポーネントがビューポートから外れた際に、作業を事前に計算したり破棄したりできます。このアーキテクチャは、Snapchatが元々Valdiに向かうきっかけとなった「真の同時実行がない」という批判に直接対処しています。

マイクロソフトはReact Nativeの最大のギャップの一つ、デスクトップのサポートを静かに解消しました。React Native macOSおよびReact Native Windowsは、サポートされている製品として提供されるようになり、サイドプロジェクトではなくなりました。Office、Teams、Xboxのコンパニオンアプリはこれらのスタックを活用しており、React NativeがElectronやウェブビューを使わずにデスクトップをターゲットにできることを証明しています。

プラットフォーム間の機能の平等性は驚くほど完全に見えます。単一のコードベースで、共有コンポーネント、ネイティブメニュー、およびシステムレベルのアクセシビリティAPIを使用して、iOS、Android、Windows、macOSに対応できます。かつては三つまたは四つのUIスタックを維持していた開発チームは、現在は一つと薄いプラットフォーム接続層に統合するのが一般的です。

エコシステムの成熟は、React NativeがValdiに対抗するための最強の武器かもしれません。Expoは、以下の機能を備えた完全装備のプラットフォームへと進化しました: - ほぼ瞬時のコード更新のためのファストリフレッシュ - EAS UpdateによるOTAアップデート - カメラ、通知、センサー用のプリビルトSDK

そのコアの周りには、React Navigation、Reanimated、React Query、Lottieなどの広範なライブラリ市場が広がっており、ほとんどのアプリのニーズを満たしています。ドキュメントが改善され、TypeScriptのサポートが強化され、Shopify、Coinbase、Walmartなどの企業がReact Nativeで本番用アプリを出荷するようになりました。選択肢を比較している方には、Valdi公式ドキュメントが、実験的なツールキットではなく、巨大な競争相手と競り合っていると言えるでしょう。

険しいスタート:開発者体験の逆説

今日、Valdiのインストールは洗練されたSDKを手に入れるというよりも、内部ツールのパイロットに参加しているように感じます。公式には「ベータ版」とされており、最初に`valdi init`を実行すると、粗削りな部分がすぐに浮かび上がります。macOS上では、「Hello, world」画面を見る前に、Bazel、Android SDK、Xcodeツールチェーン、Nodeのバージョンを整理しなければなりません。

開発者たちは、Valdiのインストーラーが誤って依存関係のバージョンを検出したり、自動的に不適切なバージョンをインストールしたりすることを報告しています。Better Stackのウォークスルーは、単一のビューを表示する前に、AndroidビルドツールとTypeScriptの設定の不一致に直面しました。「ネイティブスピード、ウェブベロシティ」を謳うフレームワークとして、この脆弱な設定は主張される約束を損なっています。

初期採用者も奇妙に特定の落とし穴に直面します。プロジェクト名にはハイフンを含めることができず、`my-app`は静かに機能しなくなる一方で、`my_app`は問題なく動作します。これは公共の製品の決定というよりも内部の慣習のように感じられます。パスの仮定やハードコーディングされたデフォルトがSnapchatのモノレポから他の全てのラップトップに漏れ出しています。

紙上では、Valdiはプレミアムな開発者体験を提供しています:瞬時のホットリロード、完全なVS Codeデバッグ、および「ただ動作する」クロスプラットフォームビルド。しかし実際には、ベータ版は強力だが気難しいエンジンの周りに独自のツールチェーンを構築することに近いです。あなたはJSXを書くのと同じくらい、BazelやGradleをなだめることに時間を費やします。

ドキュメンテーションは同じパラドックスを浮き彫りにしています。公式ガイドは基本的な設定、シンプルなビュー、いくつかのライフサイクルフックなど、順調な進行をカバーしていますが、カスタムネイティブモジュール、高度なSkiaの使用、またはCI統合に足を踏み入れると、すぐに情報が不足します。多くのエッジケースは、Snapchatの内部の伝承や散発的なコミュニティのギストにしか存在しません。

Valdiは明らかにSnapの壁の外でより多くの「戦闘テスト」を必要としています。React Nativeの10年にわたるGitHubの問題、Stack Overflowの回答、Expoのレシピはここにはまだ存在せず、曖昧なBazelエラーがビルドを妨げるたびにその欠如を感じます。

軍を持たない巨人

イラスト:軍隊を持たない巨人
イラスト:軍隊を持たない巨人

いかに洗練されたフレームワークであっても、100万開発者の先行には敵いません。Valdiは印象的な内部機能を搭載していますが、ほとんどエコシステムがありません。Redditのハイブマインドもなく、検証されたボイラープレートもなく、バンガロールで午前3時に既に誰かによって回答された10年分の奇妙なエッジケースもありません。

React Nativeの最大の武器は、今やFabricやYoga、Expoではなく、重力です。巨大なグローバルコミュニティが、無限のYouTubeチュートリアル、Udemyコース、Medium投稿を生み出し、さらに何千ものオープンソースパッケージを提供しています。MetaMicrosoft、Shopifyなどの企業の支援がその勢いをさらに強化し、ほとんどの人が目にすることのないバグを修正するための長期的なロードマップと有料チームを持っています。

「React Native プッシュ通知」を検索すると、選択肢が溢れます。「Valdi プッシュ通知」を検索すると、主にSnapchat自身のドキュメントやいくつかの実験的なリポジトリが表示されます。リアルワールドのチームにとって、その違いがスプリントが時間通りに進むか、誰かがネイティブブリッジをリバースエンジニアリングする間に滞るかを決定します。

開発者は公式ドキュメントと同じくらいStack Overflowに頼っていますが、Valdiでは受け入れられた回答がほとんどなく、標準的なスニペットもなく、特定のAndroid OEMスキンでレイアウトが崩れる理由を説明する5年前のスレッドもありません。あらゆる問題が、緑のチェックマークからの迅速なコピー&ペーストではなく、ゼロから一への研究プロジェクトになるリスクがあります。

サードパーティライブラリは、現代のアプリ開発の骨組みを形成しています。React Native開発者は以下を期待しています: - ディープリンクが組み込まれたナビゲーションスタック - Amplitude、Segment、Mixpanel向けの分析SDKラッパー - Stripe、Auth0、Googleなどからの決済、認証、地図コンポーネント

Valdiは今日ほとんどそれを提供せず、チームをカスタムネイティブインテグレーションや彼らが関わるすべてのサービスのTypeScriptバインディングに戻させています。

単一企業のフレームワークは常に存在的リスクを伴います。もしSnapchatの優先事項が変わった場合(別のデザイン変更、別のプラットフォームへの賭けなど)、Valdiは静かに停滞し、GitHubの課題が積み上がるかもしれません。2025年にスタートアップがスタックを選ぶ際、実質的に一つの主要ユーザーがいるフレームワークに賭けることは、ツールを採用するというよりも、他人のプロダクト戦略に自社のロードマップを結びつけるように感じられます。

なぜ今なのか?スナップチャットの賭けを解明する

8年間の内部使用により、Snapchatは公共の目にさらされる前に稼働実績のあるインフラを手に入れたという貴重な贅沢を享受しています。Valdiは、iOS、Android、macOSの主要なSnapchat体験を静かに支えており、これには単純な動機があることを示唆しています。それは、このフレームワークがオープンソース化することで得られる利益がリスクを上回る成熟度の閾値をついに超えたということです。

現在のリリースは、TypeScriptファーストのツールへの業界全体のシフトとも一致しています。ValdiはTypeScript、JSX、デコレーター、Bazel、Yoga、Skiaに強く依存しており、これらのスタックはもはや実験的ではなく主流のものとなっているため、外部の開発者が理解しやすく、Snapchatのサポートなしでも拡張できるようになっています。

理論1:Snapchatは、Valdiが研究プロジェクトではなく完成した製品に見えるまで待った。8年間の最適化—グローバルビューのプーリング、自動ビューのリサイクル、ミリ秒単位で測定されるホットリロード—により、同社はValdiを、すでにFabric、同時レンダリング、Yogaバックのレイアウトを広告するReact Native公式サイトがある世界において信頼できる代替手段として提示することができた。

理論2:Snapchatは、現代のコンポーネントエコシステムを構築するために無償の支援を求めている。現状、Valdiは、React Nativeの膨大なコミュニティパッケージ、Expo SDK、MicrosoftやShopifyなどの企業からのデザインシステムキットと比較して、比較的薄い生産準備完了のUIプリミティブを提供している。

そのギャップをクラウドソーシングすることは戦略的に理にかなっています。オープンソース化することで、Snapchatはエージェンシー、スタートアップ、および他の企業の内部チームに対して、基本的なフォームコントロールから複雑なアクセシビリティウィジェットに至るまであらゆるものを貢献するよう促すことができ、同時にSnapchatはコアのランタイムとレイアウトエンジンを引き続き管理できます。

コンポーネントライブラリはすぐに陳腐化します。新しいOSのリリース、デザインのトレンド、アクセシビリティのルールが必要とされるため、3つのプラットフォームで常に更新が求められます。その負担をオープンソースの貢献者に委ねることで、Snapchatはボタンやカルーセルの再スキン作業を無限に繰り返すのではなく、パフォーマンスとプラットフォーム統合に集中できるのです。

理論三:これは利他主義を装ったリクルーティングの手法です。急成長している消費者向けアプリは上級モバイルエンジニアを争っており、TypeScriptをネイティブビューに直接コンパイルする洗練された技術的に野心的なフレームワークは、Snapchatのエンジニアリング文化について明確なシグナルを送っています。

Valdiの内部情報—Bazelパイプライン、Yogaの使用、Skiaのレンダリングパス—を公開することは、まるで生きているポートフォリオのようです。低レベルのレンダリング、同時実行性、ツールチェインに関心を持つエンジニアたちは、Snapchatのコードを読む理由ができ、問題を報告し、最終的にはリクルーターのメールに応えることになるでしょう。

評決:Valdiはあなたの次のフレームワークですか?

生のスピードは依然としてValdiの強みです。TypeScriptをネイティブビューに直接コンパイルし、JavaScriptブリッジを完全にスキップすることで、スナップチャット級のフィードやストーリーカルーセルを実現し、厳しいスクロール負荷の下でもスムーズさを維持しています。これは、自動ビューリサイクルやグローバルビュープールによって支えられています。React NativeのFabricレンダラーとTurboModulesはそのギャップを大幅に縮めましたが、それでもなお、マネージドランタイムと広範な抽象レイヤーを通じてより多くのロジックを経由しています。

React Nativeは、Valdiにはないエコシステムを持っています。Expo、React Navigation、React Query、Reanimated、そして数千のパッケージが認証から動画編集まで網羅しており、Meta、Microsoft、Shopify、Coinbaseの数百万の開発者と実稼働アプリが支えています。Valdiはスリムなコンポーネントセット、乏しいドキュメント、依存関係を誤検出したり、プロジェクト名のハイフンのような些細なことで動作が停止するベータインストーラーを搭載しています。

Valdiを真剣に検討すべきチームは、パフォーマンスとコントロールの極端な端に位置しています。フィード重視のソーシャルアプリ、高頻度取引クライアント、またはドロップフレームの影響が大きいグラフィック密度の高いエディターを構築している場合、ValdiのSkiaに基づくレンダリングとネイティブレイアウトは、その苦労を正当化することができます。また、BazelやネイティブのiOS/Android/macOSOSの内部を既に理解しているスタッフが必要であり、GitHubの問題を報告して待つのではなく、若いツールチェーンをパッチできる余裕がある必要があります。

ほとんどの他のチームは React Native に留まるべきです。スタートアップ、インディー開発者、MVPを急ぐプロダクトチームは、レイアウトから5〜10ミリ秒を削減することよりも、機能を迅速に出荷することを重要視しています。React NativeのExpoツール、Fast Refresh、成熟したCIテンプレート、そして実績のあるライブラリは、リスクと採用の障壁を軽減し、1.0時代のフレームワークが達成できない方法でそれを実現します。

Valdiは2025年に、異なる時代のクロスプラットフォームに対する葛藤からの魅力的なアーティファクトとして登場します。その元々の使命—ブリッジ不要で高性能、TypeScriptを優先するUIをiOS、Android、macOS上で提供すること—は、React Native、Flutter、さらにはSwiftUIとKotlin Multiplatformが同じ領域に群がる中で、もはや独自のものではありません。技術的には、Valdiは小規模で集中したチームが現状を凌駕できることを証明していますが、戦略的には、Snapchatのようにパフォーマンス予算が agresive な企業にとってのニッチな武器となる可能性があります。

よくある質問

SnapchatのValdiフレームワークとは何ですか?

Valdiは、Snapchatによって開発されたクロスプラットフォームのUIフレームワークで、TypeScriptとJSXをiOS、Android、macOS用のネイティブコードに直接コンパイルし、JavaScriptブリッジの必要性を排除します。

なぜSnapchatはReact Nativeを使用するのではなく、Valdiを作成したのでしょうか?

Snapchatは8年前にValdiを作成しました。その理由は、当時のReact NativeはJavaScriptブリッジの性能問題があり、真の同時実行性が欠けており、デスクトップサポートも充実していなかったからです。

Valdiの主な技術的利点は何ですか?

Valdiの主な利点はそのパフォーマンスです。ネイティブコードに直接コンパイルされ、自動ビューリサイクルやビューポートを意識したレンダリングなどの高度な技術を使用することで、より高速で効率的なアプリを実現します。

新しいプロジェクトにValdiを使用する際の最大のリスクは何ですか?

主なリスクは、大きなコミュニティの欠如、文書の未成熟、そしてSnapchatからの長期的なサポートの不確実性です。対照的に、React Nativeは成熟したエコシステムであり、広範なコミュニティの支持を受けています。

🚀Discover More

Stay Ahead of the AI Curve

Discover the best AI tools, agents, and MCP servers curated by Stork.AI. Find the right solutions to supercharge your workflow.

Back to all posts