Phantom is one of the most popular crypto wallets in the world. You might expect that building such a beautifully designed, high-performance app requires a large team of mobile engineers. But Phantom takes a different approach. Instead of relying on a big dedicated mobile team, Phantom has a platform team that maintains the foundations and many product teams that contribute directly to the mobile experience. Expo helps make this model possible.
This case study explores how Phantom structures their engineering team, how they use EAS to power CI/CD, how they empower other teams to build the future of crypto, and why Expo has become the default stack for nearly every major crypto wallet.
A mobile app built by full-stack product engineers
Phantom is built with React Native and Expo in a monorepo. The mobile app lives alongside other products like the browser extension and shares a major chunk of its business logic and UI with other platforms. Phantom has no dedicated mobile team. Instead, the mobile app foundations are maintained by a handful of experienced React Native engineers on the platform team. Mobile app features are built by full-stack product engineers across the company.
We don't have a lot of engineers with background in React Native, and yet nearly every engineer at Phantom is able to contribute to the mobile app. That's a testament to the foundations we built and the power of Expo.
— Jakub Adamczyk, Software Engineer at Phantom
Their technology stack includes Expo SDK, Expo Dev Client, Expo Modules API for custom native modules, React Query, TypeScript, and FlashList for performant lists. With Expo Dev Client, the team moved beyond Expo Go and enabled custom native modules while keeping the same simple and consistent development workflow across engineers.
Weekly releases powered by EAS
Phantom uses EAS Build and EAS Submit for its core release workflow:
- Engineers open PRs and trigger EAS Build from GitHub Actions
- Dev client builds are posted weekly to a dedicated Slack channel with links and QR codes
- Weekly production release cadence, with builds submitted via EAS Submit
They also use Maestro for end-to-end testing. To speed up tests, Phantom uses EAS Update and Expo Fingerprint to build the app for e2e tests only when the native layer has changed.
We shaved about 15 minutes off our 60-minute test runs by pushing updates in our sandbox environment with EAS Update. It's a big win for test iteration speed.
— Dan Tamas, Software Engineer at Phantom
Developer tools that let others build crypto apps
Phantom doesn't just build their own mobile app with Expo. They also launched a wallet SDK that enables other developers to integrate crypto directly into their own Expo and React Native apps. As Expo empowers engineers to build high-quality native apps with ease, Phantom's Wallet SDK makes adding secure and user-friendly crypto functionality equally effortless. By making crypto integration seamless and accessible, Phantom is extending its mission beyond its own products, accelerating the world's adoption of crypto by making it safe and easy to use.
Why crypto apps build with Expo
Expo and React Native have become the default stack for crypto wallets. Today, almost every mobile wallet in the space is built this way. Phantom is one of the best examples of how this stack scales to support millions of users while maintaining the highest UX standards.
Crypto apps have a few key constraints that are relevant across a variety of industries:
- Security is paramount
- Engineering teams are often lean and agile
- Cross-platform consistency is essential
Phantom uses Expo because it allows them to stay lean and move quickly, while providing a product that is secure, fast, and polished. They have built custom WebView patches for security, created native modules for features like Solana Mobile Wallet Adapter, and even created SDKs that bring Expo to other crypto apps.
Advice for other teams
Phantom's team works horizontally. Engineers are expected to take ownership, work independently, and move fast. Their advice for teams getting started with Expo:
- Embrace the ecosystem: Expo modules, dev clients, and infrastructure are production-ready
- Use Expo Modules API: ship without touching native code on a daily basis and instead focus on the product
- Keep it simple: their setup is pragmatic and efficient
If you know what you're doing, you can create a high-performance app with just a few engineers experienced in React Native and Expo. The rest of your team can be engineers proficient in JavaScript and React, with only a basic understanding of React Native.
— Jakub Adamczyk, Software Engineer at Phantom
Phantom is proof that you don't need a huge team or deep native expertise to build one of the best crypto apps in the world. They move fast, stay secure, and ship every week with Expo.