Back in 2018, I took on an existing React Native app from another developer.

The first few days of just trying to make the thing build were intensely frustrating. 🀯

The app was using Expo, so I ejected into vanilla React Native and managed to get it to run. πŸŽ‰

"Expo desertion" wasn't unique to me. It's a story common in developer communities. Here is some of the reasons I've heard over the years:

  • "Expo didn't offer me the control I needed"
  • "I could build iOS on my mac, so I didn't need Expo"
  • "It seemed we'd need to eject at some point so we got it out of the way early on"
  • "I figured the fewer libraries the better, so didn't bother with Expo"
  • "Expo is for junior devs, senior devs use vanilla React Native"

In 2019, I realised I was wrong to reject Expo and have been benefiting from the service ever since. In 2021, the case for Expo is stronger than ever. Here's why πŸ€“


Reason 1: Bare Workflow has Over-The-Air πŸ’ͺ


For the uninitiated, Bare Workflow is a version of Expo that allows you to use any third party module in your React Native app but still access some Expo features such as Over-The-Air (OTA).

OTA allows you to distribute a new JS bundle via the internet. It means you can give your users new features and bug fixes in as little as three minutes. This is a complete game changer.

This is best illustrated with an example...

Imagine your app has a critical bug in the live iOS build. 😒 Users are pissed off, the client/manager is angry, things are not good.

Here is the resolution path in vanilla React Native:

  • fix bug
  • verify fix
  • create IPA
  • upload IPA
  • IPA is processing in App Store Connect
  • pass through TestFlight
  • create new release, tick loads of boxes
  • submit for Apple approval
  • distributed via App Store
  • user gets fix

From 'verify fix' to 'user gets fix', it takes anywhere from 3 hours to 3 days!

And here is what it looks like with OTA:

  • fix bug
  • verify fix
  • publish to Expo release channel
  • user gets fix

Seems more straightforward, right? The process from 'verify fix' to 'user gets fix' takes just 3 minutes!

With OTA manager, you can even make the UX nice 😎


Reason 2: Expo Application Services aka EAS πŸš€


Traditionally, Expo could only build your app if you were in 'managed' workflow. That meant that if you needed to eject then you had to build your app yourself.

Building your app yourself usually means hours of messing around in XCode and Android studio. React Native is an extremely complicated build environment. The potential for something to go wrong is very very real. πŸ’©

EAS to the rescue πŸš‘

With EAS, you can have Expo build your app for you even if it's ejected into Bare workflow!

  • No more "well it builds on my machine" 🀯
  • No more horrific XCode debugging πŸ™€
  • No more needing to buy a mac πŸ€‘
  • No more build processes taking all your CPU πŸ™Œ


Reason 3: It works on web πŸ–₯


The Expo team have been prioritising web support for Expo apps over the last couple of years. The culmination in 2021:

Expo is the best tri-platform framework available today

If your product needs to run on iOS, Android and Web, then Expo Web is the way to go.

At Morrow, we're using this in production with at least two clients. We have two more Expo Web projects in build right now. This stuff really works.

Even Twitter is built with Expo web.




There are a whole host of reasons to look at adopting Expo in 2021. These three are just the tip of the iceberg.


More insights