Mo frames multiplatform development as a way to balance scope, cost, and time: building separate apps for each platform takes more effort or forces teams to reduce features. React Native brought declarative UI development to native apps, while earlier projects explored sharing visual components across web and mobile. On an e-commerce project in 2018, Mo’s team shared business logic, API calls, styling primitives, and design tokens, but kept the visual components separate because they had concerns about SEO and server-side rendering.
Multiplatform App Development With React Native
Speakers
Mo Jaat, head of mobile at Theodo UK and React Native London organizer, joins Callstack host Lukasz to discuss React Native multiplatform development and a streaming platform built for mobile and web.
Mo describes a range of approaches, from separate native apps to sharing business logic, selected UI components, or nearly the whole application. What makes sense depends on the product: sharing navigation and components can work, while web and mobile layouts may need to differ. Even with a universal app, platform-specific libraries and behaviors may require separate implementations behind shared APIs.
Mo’s team had three months to deliver mobile and web for a streaming service, with TV planned for later. About 12 or 13 developers worked in a monorepo that included frontend and backend code, shared types, and packages for independent development. The team chose Tamagui for cross-platform styling and shared layouts to meet the deadline, while noting that the library’s documentation slowed them down.
The team checked video player support early, including DRM, accessibility, and HLS or DASH protocols. A library described as supporting web and mobile might not support a required feature on every platform, so they used abstraction layers where needed. For a project spanning web, mobile, and three TV platforms, they tailored tests by development stage and ran Flashlight performance checks nightly.
The team chose Metro across platforms to reduce setup overhead and meet the deadline, keeping packages isolated so they could move web to Next.js later. Web bundle size became a challenge: it reached 10 or 11 MB uncompressed, then fell to around 4 MB, below 1 MB compressed, after manual optimizations. Mo recommends monitoring bundle size and sees Metro as a fit for mobile-first projects with tight timelines, while SEO and web performance may favor Next.js.
Takeaways
- Decide what to share based on product needs; shared business logic can help even when each platform has its own UI.
- Check critical dependencies against each platform’s actual requirements, especially video protocols, DRM, and accessibility.
- A monorepo can help teams work independently, but requires investment in CI, caching, configuration, and package boundaries.
- Match testing depth to the development stage: keep pull request checks focused and run broader release checks.
- Metro for web can reduce delivery overhead for a mobile-first project, but track bundle size and account for SEO needs.
Mentioned in this talk
Search inside this talk
What was claimed 10
- feature
Callstack: Produces the podcast“Welcome to the React Native Show podcast, brought to you by Calla”
YouTube Unverified1 source· Talk
- role at
“Mo Jaat, who is the head of mobile at Theo UK”
YouTube Unverified1 source· Talk
- integrates withReact Native integrates with React Native Web
“Then I rediscovered React Native, and then React Native Web.”
YouTube Verified2 sources· Talk
- usesExpo Router uses Metro
“the release of Expo Router, which is fully built on Metro”
YouTube Unverified1 source· Talk
- metricstreaming platform: Three months to deliver all three platforms
“We had three months to deliver all three platforms”
YouTube Unverified1 source· Talk
- metricstreaming platform: About 12 or 13 developers started at once
“about 12 or 13 developers starting at once”
YouTube Unverified1 source· Talk
- uses
“We ended up choosing Tamagui”
YouTube Unverified1 source· Talk
- featureFlashlight: Runs performance tests and helps track regressions
“we can test performance and see whether any of our changes have affected the major flows”
YouTube Unverified1 source· Talk
- usesstreaming platform uses Metro
“we wanted to deliver quickly, reduce overhead for developers, and keep one bundler”
YouTube Unverified1 source· Talk
- featureMetro: The project team reported no tree shaking and addressed bundle size through manual transforms and exclusions
“Since there's no tree shaking, it could get insane”
YouTube Unverified1 source· Talk





