Vercel's v0 iOS app is built with React Native, yet delivers the look and feel of a native iOS product. In this episode, the team behind it walks through the technical decisions, trade-offs, and low-level fixes required to ship a polished, production-ready app under real deadlines.
Episode summary
Ola Desmurs-Linczewska is joined by Fernando Rojo, Head of Mobile at Vercel, and Callstack engineers Oskar Kwaśniewski and Szymon Rybczak. Together, they break down how v0 mobile was built using React Native and Expo, why the team went iOS-first, and how deep dives into Yoga, gesture handling, and WebView internals shaped the final product.
Iterating to greatness
At Vercel, shipping early and iterating constantly is a core principle. For v0 iOS, this meant prioritizing release momentum while avoiding blocking issues that didn’t affect core experience. The team focused on shipping a solid foundation, then refining UI, interactions, and performance through frequent iterations rather than waiting for perfection.
Expo as the foundation
Expo was the default choice for starting the project, providing fast iteration, EAS builds, and Expo Modules for custom native integrations. As the app matured, the team leaned heavily on Expo’s extensibility, writing native modules when needed and patching libraries directly to keep development moving.
Going iOS-first
The team deliberately focused on iOS, targeting the latest system versions early. This allowed them to fully embrace platform-specific APIs such as scroll view insets and advanced keyboard handling without compromising for cross-platform parity. Android is planned, but only after the iOS experience feels complete.
Fixing React Native at the source
While building v0 iOS, the team frequently uncovered opportunities for improvement within the React Native core, such as modal flickering caused by asynchronous Yoga layout updates. Rather than working around them, they patched React Native directly and upstreamed fixes, some of which landed in later React Native releases.
Open source as a byproduct
Several components built specifically for v0 were open-sourced, including liquid glass UI effects and a rewritten pager view implemented in SwiftUI. Other work, such as improved keyboard handling and gesture coordination, is planned for release once it is decoupled from v0-specific logic.
What made this possible was the team’s habit of pushing complexity downward: whenever a solution felt too low-level, fragile, or app-specific to live comfortably in product code, it became a candidate for extraction. The result was a steady stream of libraries, forks, and upstream contributions shaped by real production constraints, rather than abstract examples, turning v0 iOS into a proving ground for tools the wider React Native community can now build on.
Resources
- Ola Desmurs-Linczewska on X and Bluesky
- Fernando Rojo on X and GitHub
- Szymon Rybczak on X and GitHub
- Oskar Kwaśniewski on X and GitHub
- Vercel’s v0 app
- v0 iOS app
- How we built the v0 iOS app article by Fernando Rojo
Learn more about AI
Here's everything we published recently on this topic.















