WhoBuilt

React Native Or Expo? Both.

Oct 21, 2020· 23 min· 1.0K views·Watch on YouTube

Speaker

Brent Vante of Expo explains how Expo tools and services can support React Native apps, speaking at React Native EU 2020 for the Callstack channel.

Managed workflow and bare React Native

Vante clarifies that “Expo or React Native?” usually means asking whether Expo should manage the app’s native layer. The managed workflow lets developers focus on JavaScript or TypeScript and simplifies React Native upgrades, while adding or changing native code requires leaving that workflow. Bare projects and ejected apps can still use Expo tools and services.

Snack, web, and the Expo SDK

Snack offers an in-browser environment for experimenting with React Native, sharing examples, and previewing components. Expo’s web setup combines React Native Web with platform-specific configuration, and its adapters support tools such as Next.js, Gatsby, Electron, and Storybook. Vante describes the Expo SDK as cross-platform libraries for capabilities including camera, file system, and notifications; bare projects can use them by installing React Native Unimodules.

Notifications and over-the-air updates

Expo Notifications provides a cross-platform API for local and remote notifications, with an Expo service that sends pushes through APNs and FCM. Expo Updates can deliver JavaScript and asset updates through release channels, with options for rollbacks, promotions, and update behavior. Teams with strict hosting requirements can host update bundles themselves, but must manage release operations such as channels and rollbacks.

Build and development tools in progress

Vante previews a build service intended to bring managed-workflow build automation to any React Native app, including credential handling and store builds. He also describes plans for easier internal testing and a development client built around an app’s own native runtime. A proposed workflow could publish previews for pull requests, while adding custom native libraries to managed apps was still being explored.

Expo tools alongside React Native

Vante frames Expo as a set of tools and services for building, shipping, and iterating on React Native apps. His closing point is that teams can use Expo services whether or not they choose the managed workflow.

Takeaways

  • Choose the managed workflow when avoiding native code and simplifying upgrades matters more than customizing the native layer.
  • Bare React Native apps can use many Expo tools, including Snack, web integrations, and SDK libraries.
  • Before adopting Expo’s push service, account for its APNs and FCM credential setup and service requirements.
  • Expo Updates can simplify releases, but self-hosting means implementing release channels, rollbacks, and promotions yourself.
  • Treat the build service and development client described here as plans in progress at the time of the 2020 talk.

Mentioned in this talk

Search inside this talk

What was claimed 11

  • works at
    “I work at a company called Expo.”
    YouTube
    Unverified1 source· Talk
  • feature
    Expo: The managed workflow handles the app’s native layer while developers write JavaScript or TypeScript.
    “we manage the native layer”
    YouTube
    Unverified1 source· Talk
  • feature
    Expo: Provides tools for development builds, app signing, distribution builds, over-the-air updates, push notifications, and team collaboration.
    “We help you manage your app signing credentials, build your binaries for distribution”
    YouTube
    Unverified1 source· Talk
  • feature
    Expo: Most Expo tools and services also work with bare React Native apps.
    “we’ve made most of our tools and services work great for any React Native app”
    YouTube
    Unverified1 source· Talk
  • feature
    Snack: Provides an in-browser environment to experiment with React Native apps on web and in iOS and Android simulators.
    “an in-browser development environment to quickly experiment with ideas”
    YouTube
    Unverified1 source· Talk
  • feature
    GitHub Copilot SDK: Provides libraries for iOS, Android, and web that expose operating system capabilities.
    “It's a set of libraries for iOS, Android, and web”
    YouTube
    Unverified1 source· Talk
  • uses
    Expo GL
    “the cute spinning planet Earth in Shopify's Shop app”
    YouTube
    Unverified1 source· Talk
  • feature
    Expo Notifications: Provides a cross-platform API for push tokens and local and remote notifications.
    “provides a cross-platform API to fetch push notification tokens”
    YouTube
    Unverified1 source· Talk
  • feature
    Expo Updates: Fetches and manages code and asset updates from a remote server.
    “fetches and manages code and asset updates to your app from a remote server”
    YouTube
    Unverified1 source· Talk
  • feature
    Expo: The planned build service is intended to bring managed-workflow build support to every React Native app.
    “bringing the same experience to every React Native app”
    YouTube
    Unverified1 source· Talk
  • feature
    Expo Development Client: A planned library to provide an Expo-client-like experience around an app’s own native runtime.
    “a development client library that you can install in your React Native app”
    YouTube
    Unverified1 source· Talk

Related talks