Expo is a set of tools, libraries, and helpful features built on top of React Native.
React Native without Expo
Pure React Native offers complete flexibility and configurability, and is a great solution for when developing hybrid apps which require developers to write native (Java/Swift) code as well.
When developing in Pure React Native, the developer builds the apps themselves on their local machines, and can choose from a wide variety of options when it comes to distributing Beta Previews and running on device.
React Native with Expo
Expo is a set of tools, libraries, and other helpful features built on top of React Native, designed to reach the goal of never having to write native iOS/Android code when developing in React Native.
It also eases some key flows during the development/maintenance of your app. Some examples include:
QR code scan: when developing, Expo will give you a QR code which you can scan with the Expo app (available in Play/App store). Scanning it will open your app on the device, allowing you to easily switch to on-device development.
Beta Previews: Beta Previews are easier than ever with the Expo app. Just publish your app to the 'default' channel, and it becomes available for anyone to access, using the Expo app. (this has become more limited in the recent years, and now requires a username/pass to access)
Lots of ready-to-use, high quality libraries: Push Notifications, Payments, Camera, Library, Calendar, Fonts, Icons, Google Maps, Sensors and many other, all ready to go, just by importing them from the Expo package. (now moved to separate packages that can be added with