Goody logo

Why Expo over native development?

We started with Expo at Goody right from the beginning, even though I've done native iOS development in the past. When I did native iOS development, it felt like it took such a long time to do anything. Iteration speed was slowed by doing manual layout UI, and animations in particular took a while to build and still felt fragile at the end of it all. But with Expo, our iteration speed skyrocketed, and people rave about the polish of our app (some can't even believe that the app isn't purely native code).

We've been able to deliver a level of polish we otherwise wouldn't be able to, thanks to how much simpler it is to deliver that quality product with React Native, and we've been able to do that on iOS and Android simultaneously without doubling our team size.

How Expo fills in the cracks

But, React Native leaves some critical things up to the developer, and that's where Expo comes in. Expo fills these gaps to create an end-to-end development environment that makes building and shipping with React Native a streamlined system – in particular, with OTA updates, push notifications, builds, and development tooling:

  • Expo's push notifications makes sending pushes ridiculously simple without having to mess with a push notification server or integrate another SDK.
  • OTA updates allow us to ship more quickly and, importantly, get and respond to feedback quickly. They allow us to ship more often and more iteratively, instead of relying on a rigid release timeline.
  • Expo Dev Client allows our developers to work on a real device, with instant refreshes, without having to open up Xcode or even needing it installed, while still supporting all of the native client code that we need.
  • EAS Build allows us to easily provision and build ad-hoc builds for our internal team to test and provide feedback on. This is not only useful for pre-production testing, but also leads to team alignment and buy-in for what you're building when stakeholders can see and use the product right away, without a lengthy TestFlight process. Plus, onboarding team members to ad-hoc builds with just a link is ridiculously easy compared to the manual process.

How Expo extends our team's skillset

On a more general scale, Expo also helps our devs develop what we believe is one of the core components of good engineers teams: ownership.

With Expo, each engineer is able to own the whole stack– from backend, to web, to mobile, even though not everyone has worked on mobile before. Everyone on the team can contribute to our mobile app, they don't even need to install Xcode or Android Studio to start contributing – they can just install our Dev Client on their phone and scan the QR code from their local Expo dev server. What this means is that each person has the ownership to take a project and deliver it across backend, web, and mobile if need be. We don't have to consider "this person isn't a mobile person", because that's now in every team member's skillset.

Plus, since each person on our team understands more of how everything works, we can move quickly without having to coordinate across platform-specific teams. We build and iterate more, and think less about the mechanics of shipping releases or managing push notifications. Faster iterations means a faster feedback loop, which means we rely less on what we guess will work, and instead test things in the real world and get real data. As a result, we can more directly see if the work we're doing is having the intended effect. This not only has an effect on helping us build the right product, but also helps us make sure we accurately understand and evolve our positioning as a business.

Mark Bao, CTO

Want to see Goody in action?