OpenAIExpoNov 11, 2025, 3:00 PM

How Phantom ships a secure, high-performance crypto wallet with Expo

A condensed section focused on the key takeaways first.

Original Post

Quick Digest

Summary

A condensed section focused on the key takeaways first.

openaienmodel: gpt-5-mini-2025-08-07

How Phantom ships a secure, high-performance crypto wallet with Expo

Key Points

  • Weekly production releases via EAS
  • Platform team + full‑stack engineers model
  • Expo Dev Client + EAS for fast, secure CI/CD

Summary

Phantom builds a high-performance, secure crypto wallet using Expo and React Native while shipping weekly. A small platform team maintains app foundations in a monorepo, and full‑stack product engineers across the company contribute features. Expo (Dev Client + EAS) provides a consistent developer workflow, fast CI/CD, and the ability to add custom native modules where needed.

Key Points

  • Team & ownership: platform team handles foundations; product engineers ship features without deep native expertise.
  • Tech stack: Expo SDK + React Native, TypeScript, React Query, Signalium, FlashList, and custom Expo modules.
  • Dev workflow: Expo Dev Client gives custom native support with the same developer experience as Expo Go.
  • CI/CD: EAS Build and EAS Submit power weekly production releases; dev-client builds distributed via Slack with QR codes.
  • Testing & speed: Maestro for e2e; use EAS Update + Expo Fingerprint to avoid full rebuilds and cut test time (~15 min saved).
  • Security & native: custom WebView patches, native modules for Solana Mobile Wallet Adapter, and careful module use to meet security constraints.
  • Platform output: Phantom publishes a Wallet SDK so other apps can embed secure crypto functionality built on Expo.
  • Practical advice: embrace Expo ecosystem and Modules API, keep the setup simple, and prioritize reproducible foundations so many engineers can contribute safely.

Full Translation

Translations

A translation section that keeps the flow of the original article.

openaijamodel: gpt-5-mini-2025-08-07

PhantomがExpoで安全かつ高性能な暗号ウォレットを提供する方法

概要

PhantomはExpoを使って、毎週リリースされる安全で高性能な暗号ウォレットを構築しています。大規模な専任モバイルチームに依存するのではなく、基盤を保守するプラットフォームチームと、モバイル体験に直接貢献する複数のプロダクトチームという構成を採り、Expoのアーキテクチャとエコシステムがそのモデルを可能にしています。

チーム構造とワークフロー

  • モバイルアプリはReact NativeExpoでモノレポに含まれており、ブラウザ拡張など他のプロダクトと並存し、重要なビジネスロジックやUIを共有しています。
  • 専任の巨大なモバイルチームはなく、モバイル基盤は経験豊富なReact Nativeエンジニア数名がいるプラットフォームチームが維持管理しています。
  • 機能開発は社内のフルスタックなプロダクトエンジニアが担当し、横断的でオープンなカルチャによってほぼ全員がモバイルに貢献できます。

「React Nativeのバックグラウンドを持つエンジニアは多くないが、ほぼ全員がモバイルアプリに貢献できる。それは我々が作った基盤とExpoの力の証拠だ。」

— Jakub Adamczyk, Software Engineer at Phantom

スタック(主な採用技術)

  • Expo SDK
  • React Query, TypeScript, Signalium(オープンソースのsignalsベースのステート管理ライブラリ)
  • FlashList(高性能リスト表示用)
  • Expoモジュール(Secure StoreWebBrowser、カスタムモジュール/プラグインなど)
  • モノレポ構成で、他プラットフォームとロジックやUIを共有

Expo Dev Clientの導入

Expo Dev Clientを導入することでExpo Goの制限を超え、カスタムネイティブモジュールを有効化しつつ、エンジニア間で一貫したシンプルな開発ワークフローを維持しています。

EASを使った週次リリースワークフロー

PhantomはCI/CDの中核にEASEAS BuildEAS Submit)を置いています。

ワークフローの要点:

  • エンジニアはPRを開き、GitHub ActionsからEAS Buildをトリガー
  • 開発用デバイス向けのdev clientビルドは週次で作成され、専用のSlackチャンネルにリンクとQRコード付きで投稿され、簡単にインストールできる
  • 本番リリースは週次のペースで、EAS Submit経由でビルドを提出
  • エンドツーエンドテストにはMaestroを使用

テスト高速化の工夫:

  • EAS UpdateExpo Fingerprintを組み合わせ、E2Eテスト用のビルドは必要なときだけ作るようにしている

「サンドボックス環境にEAS Updateで更新をプッシュすることで、60分のテスト実行時間から約15分を削ることができた。テストの反復速度にとって大きな勝利だ。」

— Dan Tamas, Software Engineer at Phantom

開発者向けツールとWallet SDK

Phantomは自社アプリの構築にとどまらず、他の開発者が自分のExpoReact Nativeアプリに暗号機能を統合できるようにするWallet SDKを公開しました。これにより、セキュアでユーザーフレンドリーな暗号機能を簡単に組み込めるようになり、Phantomは自社製品を超えて暗号の普及を加速しています。

また、Embedded Wallet製品のためにExpoを他の暗号アプリに持ち込むSDKや、Solana Mobile Wallet Adapterをサポートするネイティブモジュール、セキュリティのためのカスタムWebViewパッチなども開発しています。

なぜ暗号アプリはExpoで構築されるか

  • 今日、ほとんどのモバイル暗号ウォレットはExpo + React Nativeで作られています。
  • このスタックは数百万人のユーザーを支えつつ、高いUX基準を維持できるようにスケールします。

鍵となる制約:

  • セキュリティが最重要
  • エンジニアチームはしばしばスリムで機敏
  • クロスプラットフォームでの一貫性が必須

Expoはこれらの制約に合致します。Phantomは軽量で迅速に動きながら、セキュアで高速、見た目も優れたプロダクトを提供できています。必要に応じてネイティブコードも利用しており、細部の正確さを担保するためにカスタムWebViewパッチやネイティブモジュールを作成しています。Expo Dev ClientEASによって、どのエンジニアでも貢献しやすい、速くて安全なセットアップが実現されています。

「かつては“速く始めたいならExpoを使え、だが後でejectして純粋なReactNativeに移行せよ”と言っていた。今はもう: Expoを使え。以上だ。」

— Dan Tamas, Software Engineer at Phantom

他チームへのアドバイス

Phantomのチームは横断的に動き、エンジニアは所有権を持ち自立して素早く動くことが期待されています。

「この会社はプロダクトマネージャーの指示で動くのではなく、エンジニアによって運営されている。」

— Dan Tamas, Software Engineer at Phantom

始めるチームへの具体的なアドバイス:

  • エコシステムを活用する: Expoモジュール、dev clients、インフラは本番運用に耐えうる
  • Expo Modules APIを使う: 日常的にネイティブコードに触れずに出荷でき、プロダクトに集中できる
  • シンプルに保つ: Phantomのセットアップはエキゾチックではなく、実用的で効率的

結論

Phantomは巨大なチームや深いネイティブ専門知識がなくても、世界有数の暗号ウォレットを作れることを示しています。彼らは速く動き、セキュリティを維持し、Expoで毎週出荷しています。

How Phantom ships a secure, high-performance crypto wallet with Expo | Expo | DocsDigest