Skip to content

Goodspeed is in closed beta. New accounts join the waitlist and we open spots in batches. Join the waitlist

Skip to content
Goodspeed

Build apps with Expo

Expo manages the build pipeline, native module registry, and over-the-air update channel for every Goodspeed app. Goodspeed generates Expo as a standard part of every app, so the output is a working codebase from day one, not a scaffold you have to finish yourself.

WHAT GETS GENERATED

Built into every Expo build

Every app Goodspeed generates with Expo includes these production-ready patterns, wired together from the first build.

ItemDescriptionStrength
app.config.js bridging gas.config.tsA generated app.config.js reads from gas.config.ts and writes the app name, bundle ID, scheme, splash, and icon into the Expo config object at build time.Configuration
eas.json with dev/staging/production profilesThree EAS Build profiles: development (development client), staging (internal distribution), and production (store submit).Build
Expo SDK packages throughout package.jsonexpo-notifications, expo-secure-store, expo-localization, expo-device, expo-image-picker, and expo-camera are version-locked to the SDK.Dependencies
EAS Update channel wiredgasConfig.app.updateBranch resolves at runtime from EXPO_PUBLIC_RELEASE_CHANNEL env var, controlling which OTA channel the app subscribes to.Deploy
MinVersionGate componentA MinVersionGate screen blocks users on stale runtimes and shows an update prompt, using gasConfig.app.minRuntimeVersion and gasConfig.app.appStoreUrl.Reliability
Expo Go deep-link schemegasConfig.app.scheme registers the custom URL scheme used for OAuth redirect URIs, deep links from email, and universal link fallbacks.Navigation

Source: the Goodspeed generation pipeline · Development Platform

REAL GENERATED CODE

A snippet from a Expo app the studio shipped

This pattern comes straight out of the production groundwork every Goodspeed app is generated on. The studio generates Expo code like this for every app in the pipeline, not a hello-world sample you have to grow into a real app.

  1. Runtime channel

    // gas.config.ts: OTA update branch from env
    app: {
      slug: 'my-app',
      version: '1.0.0',
      scheme: 'my-app',
      minRuntimeVersion: '1.0.0',
      updateBranch:
        (process.env.EXPO_PUBLIC_RELEASE_CHANNEL ?? 'production')
        as 'preview' | 'staging' | 'production',
    },
GDaily Allergens

Today's log

Gluten
Tree nuts
Shellfish
Dairy
HomeScanLogProfile

START WITH EXPO

Your Expo app, generated