WhoBuilt

Building v0 iOS and Fixing React Native Along the Way

Jan 14, 2026· 51 min· 2.0K views·Watch on YouTube

Speakers

Fernando Rojo, head of mobile at Vercel, joins Callstack developers Shimon Rypczak and Oscar Kashki on React Universe on Air to discuss building v0’s iOS app and improving React Native along the way.

Ship, then keep iterating

Rojo describes Vercel’s approach as releasing once the core experience works, then improving it through frequent updates. The team explored several layouts, including a floating composer, before settling on a simpler three-pane interface. Feature flags let them compare designs on physical iPhones and merge changes while they were still evolving.

Build for native, share through the backend

The team chose Expo and used EAS preview builds to iterate quickly, including while testing against iOS 26 betas. Because the web app was built first, much of its client code did not suit native, and getting React Native working in the existing monorepo took significant configuration work. The mobile app instead shares selected helpers and types, while relying on a typed API to access backend logic.

Fix issues at their source

To make the app feel native, the team added custom native modules for features such as input behavior and glass effects. They rewrote PagerView in SwiftUI and investigated a modal flicker caused by asynchronous Yoga updates; the fix was upstreamed to React Native, with Shimon noting that React Native 0.82 included it. The team also patched or forked dependencies when needed, then worked to share fixes beyond the app.

Polish iOS before expanding

Rojo says there are no immediate plans for Android, though the team wants to build it after the iOS experience feels polished. Keyboard handling, gestures, and UI details differ across platforms, and the app relies on iOS ScrollView behavior that React Native does not expose for Android. The team distinguishes shared features, such as sending a message, from platform-specific interactions that need to feel right in users’ hands.

Make room to replace and release work

The team dropped its floating composer after testing revealed that people could not easily find their chats. Oscar describes rewriting the implementation in an 8,000-line change, then splitting it into about 15 smaller pull requests. Rojo’s broader approach is to move complicated fixes into reusable libraries and upstream them where possible, while keeping app code simple.

Takeaways

  • Release when core functionality is solid, then use real feedback to guide the next iteration.
  • Test competing mobile designs on physical devices, where people can feel the interactions.
  • When a framework issue keeps recurring, trace the cause and contribute a fix upstream.
  • Keep platform-specific interactions in mind instead of forcing the web experience onto mobile.
  • Treat discarded designs as part of product discovery, and use smaller pull requests to make large rewrites manageable.

Mentioned in this talk

Search inside this talk

What was claimed 14

Show all 14 facts

Related talks

Building v0 iOS and Fixing React Native Along the Way, Fernando Rojo, Shimon Rypczak, Oscar Kashki · WhoBuilt