Expo without EAS: Scaling the React Native Developer Experience of an App with 90M Users
Article Summary
Benjamin Budet from Doctolib reveals how they migrated a 10-year-old React Native app serving 90M users to Expo—without using EAS. The result? 105 engineers can now ship mobile code, up from just 9.
Doctolib's patient app handles 81% of their 270M annual appointments across Europe. With 9 mobile engineers supporting 25+ contributors (mostly web developers), their aging React Native codebase was a bottleneck. This is the story of how they adopted Expo in bare workflow, built their own dev infrastructure, and transformed mobile development from a specialist skill into something any engineer can do.
Key Takeaways
- Replaced 10 unmaintained libraries with stable Expo modules to eliminate upgrade anxiety
- Dev builds with fingerprinting saved 77 dev days annually across the team
- Rock.js patching cut CI build time from 23 to 13 minutes per PR
- 302 iOS and 322 Android builds patched in 2 weeks, saving 139 hours
- Built entire pipeline on Bitrise using open-source tools, no EAS required
By adopting Expo in bare workflow and building custom dev infrastructure, Doctolib scaled mobile contributions from 9 to 105 engineers while saving 200+ CI days annually.
About This Article
Doctolib's React Native codebase depended on 10 unmaintained community packages, some without updates since 2016. This made upgrades unpredictable and forced the team to spend weeks on each cycle, running full QA campaigns before any release.
Benjamin Budet's team switched to Expo in bare workflow. They replaced the at-risk libraries with stable Expo-maintained modules like expo-calendar and expo-file-system. This kept them in control of native directories while cutting ties to abandoned projects.
They implemented fingerprint-based caching with Rock.js patching, which cut iOS CI build time from 23 minutes down to 13 minutes per PR. The team projects 200 CI days saved annually. The change also opened up mobile code contributions to 105 engineers instead of just 9.